diff --git a/config/meson.build b/config/meson.build
index 7328820..21da40e 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -9,21 +9,26 @@
 # enable_redfish_aggregation = get_option('redfish-aggregation')
 # conf_data.set10('BMCWEB_ENABLE_REDFISH_AGGREGATION', enable_redfish_aggregation.allowed())
 insecure_push_style_notification = get_option('insecure-push-style-notification')
-conf_data.set10('BMCWEB_INSECURE_ENABLE_HTTP_PUSH_STYLE_EVENTING', insecure_push_style_notification.allowed())
+conf_data.set10(
+    'BMCWEB_INSECURE_ENABLE_HTTP_PUSH_STYLE_EVENTING',
+    insecure_push_style_notification.allowed(),
+)
 conf_data.set('MESON_INSTALL_PREFIX', get_option('prefix'))
 conf_data.set('HTTPS_PORT', get_option('https_port'))
 enable_multi_host = get_option('experimental-redfish-multi-computer-system')
 conf_data.set10('BMCWEB_ENABLE_MULTI_HOST', enable_multi_host.allowed())
 enable_http2 = get_option('experimental-http2')
 conf_data.set10('BMCWEB_ENABLE_HTTP2', enable_http2.allowed())
-conf_data.set10('BMCWEB_ENABLE_MTLS_COMMON_NAME_PARSING_META', get_option('mutual-tls-common-name-parsing') == 'meta')
-
+conf_data.set10(
+    'BMCWEB_ENABLE_MTLS_COMMON_NAME_PARSING_META',
+    get_option('mutual-tls-common-name-parsing') == 'meta',
+)
 
 # Logging level
 loglvlopt = get_option('bmcweb-logging')
 if get_option('buildtype').startswith('debug') and loglvlopt == 'disabled'
-   # Override logging level as 'debug' if 'bmcweb-logging' is set as 'dsiabled'
-   loglvlopt = 'debug'
+    # Override logging level as 'debug' if 'bmcweb-logging' is set as 'dsiabled'
+    loglvlopt = 'debug'
 endif
 loglvlopt = loglvlopt.to_upper()
 conf_data.set('BMCWEB_LOGGING_LEVEL', loglvlopt)
@@ -33,27 +38,31 @@
     sources: configure_file(
         input: 'bmcweb_config.h.in',
         output: 'bmcweb_config.h',
-        configuration: conf_data
-    )
+        configuration: conf_data,
+    ),
 )
 
 # Configure and install systemd unit files
 
-configure_file(input : 'bmcweb.socket.in',
-               output : 'bmcweb.socket',
-               install_dir: systemd_system_unit_dir,
-               configuration: conf_data,
-               install : true)
+configure_file(
+    input: 'bmcweb.socket.in',
+    output: 'bmcweb.socket',
+    install_dir: systemd_system_unit_dir,
+    configuration: conf_data,
+    install: true,
+)
 
-configure_file(input : 'bmcweb.service.in',
-               output : 'bmcweb.service',
-               install_dir: systemd_system_unit_dir,
-               configuration: conf_data,
-               install : true)
+configure_file(
+    input: 'bmcweb.service.in',
+    output: 'bmcweb.service',
+    install_dir: systemd_system_unit_dir,
+    configuration: conf_data,
+    install: true,
+)
 
 # Copy pam-webserver to etc/pam.d
 install_data(
-  'pam-webserver',
-  install_dir: '/etc/pam.d/',
-  rename: 'webserver',
+    'pam-webserver',
+    install_dir: '/etc/pam.d/',
+    rename: 'webserver',
 )
diff --git a/meson.build b/meson.build
index 5ffc18c..a965b7f 100644
--- a/meson.build
+++ b/meson.build
@@ -1,24 +1,27 @@
-project('bmcweb', 'cpp',
-        version : '1.0',
-        meson_version: '>=0.63.0',
-        default_options: [
-            'b_lto_mode=default',
-            'b_lto_threads=0',
-            'b_lto=true',
-            'b_ndebug=if-release',
-            'buildtype=debugoptimized',
-            'cpp_rtti=false',
-            'cpp_std=c++20',
-            'warning_level=3',
-            'werror=true',
-           ])
+project(
+    'bmcweb',
+    'cpp',
+    version: '1.0',
+    meson_version: '>=0.63.0',
+    default_options: [
+        'b_lto_mode=default',
+        'b_lto_threads=0',
+        'b_lto=true',
+        'b_ndebug=if-release',
+        'buildtype=debugoptimized',
+        'cpp_rtti=false',
+        'cpp_std=c++20',
+        'warning_level=3',
+        'werror=true',
+    ],
+)
 
 # Project related links
 
 project_pretty_name = 'bmcweb'
 project_url = 'https://github.com/openbmc/' + project_pretty_name
 project_issues_url = project_url + '/issues/new'
-summary('Issues',project_issues_url, section: 'Report Issues')
+summary('Issues', project_issues_url, section: 'Report Issues')
 
 # Validate the c++ Standard
 
@@ -31,261 +34,272 @@
 cxx = meson.get_compiler('cpp')
 build = get_option('buildtype')
 optimization = get_option('optimization')
-summary('Build Type',build, section : 'Build Info')
-summary('Optimization',optimization, section : 'Build Info')
-
+summary('Build Type', build, section: 'Build Info')
+summary('Optimization', optimization, section: 'Build Info')
 
 # remove debug information for minsize buildtype
-if(get_option('buildtype') == 'minsize')
-  add_project_arguments(['-fdata-sections', '-ffunction-sections'], language : 'cpp')
-  add_project_arguments('-DNDEBUG', language : 'cpp')
+if (get_option('buildtype') == 'minsize')
+    add_project_arguments(['-fdata-sections', '-ffunction-sections'], language: 'cpp')
+    add_project_arguments('-DNDEBUG', language: 'cpp')
 endif
 
-if(get_option('dns-resolver') == 'systemd-dbus')
-  add_project_arguments('-DBMCWEB_DBUS_DNS_RESOLVER', language : 'cpp')
+if (get_option('dns-resolver') == 'systemd-dbus')
+    add_project_arguments('-DBMCWEB_DBUS_DNS_RESOLVER', language: 'cpp')
 endif
 
 # Disable lto when compiling with no optimization
-if(get_option('optimization') == '0')
-  add_project_arguments('-fno-lto', language: 'cpp')
-  message('Disabling lto & its supported features as optimization is disabled')
+if (get_option('optimization') == '0')
+    add_project_arguments('-fno-lto', language: 'cpp')
+    message('Disabling lto & its supported features as optimization is disabled')
 endif
 
 # Include Directories
 
-incdir = include_directories(
-  'include',
-  'redfish-core/include',
-  'redfish-core/lib',
-  'http'
-)
+incdir = include_directories('include', 'redfish-core/include', 'redfish-core/lib', 'http')
 
 # Get the options and enable the respective features
 ## create a MAP of  "options : feature_flag"
 
 feature_map = {
-  'basic-auth'                                  : '-DBMCWEB_ENABLE_BASIC_AUTHENTICATION',
-  'cookie-auth'                                 : '-DBMCWEB_ENABLE_COOKIE_AUTHENTICATION',
-  'google-api'                                  : '-DBMCWEB_ENABLE_GOOGLE_API',
-  'host-serial-socket'                          : '-DBMCWEB_ENABLE_HOST_SERIAL_WEBSOCKET',
-  'ibm-management-console'                      : '-DBMCWEB_ENABLE_IBM_MANAGEMENT_CONSOLE',
-  'insecure-disable-auth'                       : '-DBMCWEB_INSECURE_DISABLE_AUTHX',
-  'insecure-disable-csrf'                       : '-DBMCWEB_INSECURE_DISABLE_CSRF_PREVENTION',
-  'insecure-disable-ssl'                        : '-DBMCWEB_INSECURE_DISABLE_SSL',
-  'insecure-push-style-notification'            : '-DBMCWEB_INSECURE_ENABLE_HTTP_PUSH_STYLE_EVENTING',
-  'insecure-tftp-update'                        : '-DBMCWEB_INSECURE_ENABLE_REDFISH_FW_TFTP_UPDATE',
-  'insecure-ignore-content-type'                : '-DBMCWEB_INSECURE_IGNORE_CONTENT_TYPE',
-  'kvm'                                         : '-DBMCWEB_ENABLE_KVM' ,
-  'mutual-tls-auth'                             : '-DBMCWEB_ENABLE_MUTUAL_TLS_AUTHENTICATION',
-  'redfish-aggregation'                         : '-DBMCWEB_ENABLE_REDFISH_AGGREGATION',
-  'redfish-allow-deprecated-power-thermal'      : '-DBMCWEB_ALLOW_DEPRECATED_POWER_THERMAL',
-  'redfish-bmc-journal'                         : '-DBMCWEB_ENABLE_REDFISH_BMC_JOURNAL',
-  'redfish-cpu-log'                             : '-DBMCWEB_ENABLE_REDFISH_CPU_LOG',
-  'redfish-dbus-log'                            : '-DBMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES',
-  'redfish-dump-log'                            : '-DBMCWEB_ENABLE_REDFISH_DUMP_LOG',
-  'redfish-host-logger'                         : '-DBMCWEB_ENABLE_REDFISH_HOST_LOGGER',
-  'redfish-new-powersubsystem-thermalsubsystem' : '-DBMCWEB_NEW_POWERSUBSYSTEM_THERMALSUBSYSTEM',
-  'redfish-oem-manager-fan-data'                : '-DBMCWEB_ENABLE_REDFISH_OEM_MANAGER_FAN_DATA',
-  'redfish-provisioning-feature'                : '-DBMCWEB_ENABLE_REDFISH_PROVISIONING_FEATURE',
-  'redfish'                                     : '-DBMCWEB_ENABLE_REDFISH',
-  'rest'                                        : '-DBMCWEB_ENABLE_DBUS_REST',
-  'session-auth'                                : '-DBMCWEB_ENABLE_SESSION_AUTHENTICATION',
-  'static-hosting'                              : '-DBMCWEB_ENABLE_STATIC_HOSTING',
-  'experimental-redfish-multi-computer-system'  : '-DBMCWEB_ENABLE_MULTI_COMPUTERSYSTEM',
-  'vm-websocket'                                : '-DBMCWEB_ENABLE_VM_WEBSOCKET',
-  'xtoken-auth'                                 : '-DBMCWEB_ENABLE_XTOKEN_AUTHENTICATION',
-  #'vm-nbdproxy'                                : '-DBMCWEB_ENABLE_VM_NBDPROXY',
+    'basic-auth': '-DBMCWEB_ENABLE_BASIC_AUTHENTICATION',
+    'cookie-auth': '-DBMCWEB_ENABLE_COOKIE_AUTHENTICATION',
+    'google-api': '-DBMCWEB_ENABLE_GOOGLE_API',
+    'host-serial-socket': '-DBMCWEB_ENABLE_HOST_SERIAL_WEBSOCKET',
+    'ibm-management-console': '-DBMCWEB_ENABLE_IBM_MANAGEMENT_CONSOLE',
+    'insecure-disable-auth': '-DBMCWEB_INSECURE_DISABLE_AUTHX',
+    'insecure-disable-csrf': '-DBMCWEB_INSECURE_DISABLE_CSRF_PREVENTION',
+    'insecure-disable-ssl': '-DBMCWEB_INSECURE_DISABLE_SSL',
+    'insecure-push-style-notification': '-DBMCWEB_INSECURE_ENABLE_HTTP_PUSH_STYLE_EVENTING',
+    'insecure-tftp-update': '-DBMCWEB_INSECURE_ENABLE_REDFISH_FW_TFTP_UPDATE',
+    'insecure-ignore-content-type': '-DBMCWEB_INSECURE_IGNORE_CONTENT_TYPE',
+    'kvm': '-DBMCWEB_ENABLE_KVM',
+    'mutual-tls-auth': '-DBMCWEB_ENABLE_MUTUAL_TLS_AUTHENTICATION',
+    'redfish-aggregation': '-DBMCWEB_ENABLE_REDFISH_AGGREGATION',
+    'redfish-allow-deprecated-power-thermal': '-DBMCWEB_ALLOW_DEPRECATED_POWER_THERMAL',
+    'redfish-bmc-journal': '-DBMCWEB_ENABLE_REDFISH_BMC_JOURNAL',
+    'redfish-cpu-log': '-DBMCWEB_ENABLE_REDFISH_CPU_LOG',
+    'redfish-dbus-log': '-DBMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES',
+    'redfish-dump-log': '-DBMCWEB_ENABLE_REDFISH_DUMP_LOG',
+    'redfish-host-logger': '-DBMCWEB_ENABLE_REDFISH_HOST_LOGGER',
+    'redfish-new-powersubsystem-thermalsubsystem': '-DBMCWEB_NEW_POWERSUBSYSTEM_THERMALSUBSYSTEM',
+    'redfish-oem-manager-fan-data': '-DBMCWEB_ENABLE_REDFISH_OEM_MANAGER_FAN_DATA',
+    'redfish-provisioning-feature': '-DBMCWEB_ENABLE_REDFISH_PROVISIONING_FEATURE',
+    'redfish': '-DBMCWEB_ENABLE_REDFISH',
+    'rest': '-DBMCWEB_ENABLE_DBUS_REST',
+    'session-auth': '-DBMCWEB_ENABLE_SESSION_AUTHENTICATION',
+    'static-hosting': '-DBMCWEB_ENABLE_STATIC_HOSTING',
+    'experimental-redfish-multi-computer-system': '-DBMCWEB_ENABLE_MULTI_COMPUTERSYSTEM',
+    'vm-websocket': '-DBMCWEB_ENABLE_VM_WEBSOCKET',
+    'xtoken-auth': '-DBMCWEB_ENABLE_XTOKEN_AUTHENTICATION',
+    #'vm-nbdproxy'                                : '-DBMCWEB_ENABLE_VM_NBDPROXY',
 }
 
 # Get the options status and build a project summary to show which flags are
 # being enabled during the configuration time.
 
-foreach option_key,option_value : feature_map
-  if(get_option(option_key).allowed())
-    if(option_key == 'mutual-tls-auth' or option_key == 'insecure-disable-ssl')
-      if(get_option('insecure-disable-ssl').disabled() or get_option('mutual-tls-auth').disabled())
-        add_project_arguments(option_value,language:'cpp')
-        summary(option_key,option_value, section : 'Enabled Features')
-      endif
-    elif (option_key in ['basic-auth', 'cookie-auth', 'session-auth', 'xtoken-auth', 'mutual-tls-auth'])
-      if (get_option('insecure-disable-auth').disabled())
-        add_project_arguments(option_value, language:'cpp')
-        summary(option_key,option_value, section : 'Enabled Features')
-      endif
+foreach option_key, option_value : feature_map
+    if (get_option(option_key).allowed())
+        if (
+            option_key == 'mutual-tls-auth'
+            or option_key == 'insecure-disable-ssl'
+        )
+            if (
+                get_option('insecure-disable-ssl').disabled()
+                or get_option('mutual-tls-auth').disabled()
+            )
+                add_project_arguments(option_value, language: 'cpp')
+                summary(option_key, option_value, section: 'Enabled Features')
+            endif
+        elif (
+            option_key in [
+                'basic-auth',
+                'cookie-auth',
+                'session-auth',
+                'xtoken-auth',
+                'mutual-tls-auth',
+            ]
+        )
+            if (get_option('insecure-disable-auth').disabled())
+                add_project_arguments(option_value, language: 'cpp')
+                summary(option_key, option_value, section: 'Enabled Features')
+            endif
+        else
+            summary(option_key, option_value, section: 'Enabled Features')
+            add_project_arguments(option_value, language: 'cpp')
+        endif
     else
-      summary(option_key,option_value, section : 'Enabled Features')
-      add_project_arguments(option_value,language:'cpp')
+        if (option_key == 'insecure-disable-ssl')
+            summary('ssl', '-DBMCWEB_ENABLE_SSL', section: 'Enabled Features')
+            add_project_arguments('-DBMCWEB_ENABLE_SSL', language: 'cpp')
+        endif
     endif
-  else
-      if(option_key == 'insecure-disable-ssl')
-        summary('ssl','-DBMCWEB_ENABLE_SSL', section : 'Enabled Features')
-        add_project_arguments('-DBMCWEB_ENABLE_SSL', language : 'cpp')
-      endif
-  endif
 endforeach
 
-if(get_option('tests').allowed())
-  summary('unittest','NA', section : 'Enabled Features')
+if (get_option('tests').allowed())
+    summary('unittest', 'NA', section: 'Enabled Features')
 endif
 
 # Add compiler arguments
 
 if (cxx.get_id() == 'clang')
-  if (cxx.version().version_compare('<17.0'))
-    error('This project requires clang-17 or higher')
-  endif
-  add_project_arguments(
-    '-Weverything',
-    '-Wformat=2',
-    '-Wno-c++98-compat-pedantic',
-    '-Wno-c++98-compat',
-    '-Wno-documentation-unknown-command',
-    '-Wno-documentation',
-    '-Wno-exit-time-destructors',
-    '-Wno-global-constructors',
-    '-Wno-newline-eof',
-    '-Wno-padded',
-    '-Wno-shadow',
-    '-Wno-used-but-marked-unused',
-    '-Wno-weak-vtables',
-    '-Wno-switch-enum',
-    '-Wno-unused-macros',
-    '-Wno-covered-switch-default',
-    language:'cpp')
+    if (cxx.version().version_compare('<17.0'))
+        error('This project requires clang-17 or higher')
+    endif
+    add_project_arguments(
+        '-Weverything',
+        '-Wformat=2',
+        '-Wno-c++98-compat-pedantic',
+        '-Wno-c++98-compat',
+        '-Wno-documentation-unknown-command',
+        '-Wno-documentation',
+        '-Wno-exit-time-destructors',
+        '-Wno-global-constructors',
+        '-Wno-newline-eof',
+        '-Wno-padded',
+        '-Wno-shadow',
+        '-Wno-used-but-marked-unused',
+        '-Wno-weak-vtables',
+        '-Wno-switch-enum',
+        '-Wno-unused-macros',
+        '-Wno-covered-switch-default',
+        language: 'cpp',
+    )
 endif
 
 if (cxx.get_id() == 'gcc')
-  if (cxx.version().version_compare('<13.0'))
-    error('This project requires gcc-13 or higher')
-  endif
+    if (cxx.version().version_compare('<13.0'))
+        error('This project requires gcc-13 or higher')
+    endif
 
-  add_project_arguments(
-    '-Wformat=2',
-    '-Wcast-align',
-    '-Wconversion',
-    '-Woverloaded-virtual',
-    '-Wsign-conversion',
-    '-Wunused',
-    '-Wduplicated-cond',
-    '-Wduplicated-branches',
-    '-Wlogical-op',
-    '-Wnull-dereference',
-    '-Wunused-parameter',
-    '-Wdouble-promotion',
-    '-Wshadow',
-    '-Wno-psabi',
-    '-Wno-attributes',
-    language:'cpp')
+    add_project_arguments(
+        '-Wformat=2',
+        '-Wcast-align',
+        '-Wconversion',
+        '-Woverloaded-virtual',
+        '-Wsign-conversion',
+        '-Wunused',
+        '-Wduplicated-cond',
+        '-Wduplicated-branches',
+        '-Wlogical-op',
+        '-Wnull-dereference',
+        '-Wunused-parameter',
+        '-Wdouble-promotion',
+        '-Wshadow',
+        '-Wno-psabi',
+        '-Wno-attributes',
+        language: 'cpp',
+    )
 endif
 
 if (get_option('buildtype') != 'plain')
-  if (get_option('b_lto') == true and get_option('optimization')!='0')
-    # Reduce the binary size by removing unnecessary
-    # dynamic symbol table entries
+    if (get_option('b_lto') == true and get_option('optimization') != '0')
+        # Reduce the binary size by removing unnecessary
+        # dynamic symbol table entries
 
-    add_project_arguments(
-     cxx.get_supported_arguments([
-     '-fno-fat-lto-objects',
-     '-fvisibility=hidden',
-     '-fvisibility-inlines-hidden'
-     ]),
-     language: 'cpp')
+        add_project_arguments(
+            cxx.get_supported_arguments(
+                [
+                    '-fno-fat-lto-objects',
+                    '-fvisibility=hidden',
+                    '-fvisibility-inlines-hidden',
+                ],
+            ),
+            language: 'cpp',
+        )
 
-    if cxx.has_link_argument('-Wl,--exclude-libs,ALL')
-      add_project_link_arguments('-Wl,--exclude-libs,ALL', language: 'cpp')
+        if cxx.has_link_argument('-Wl,--exclude-libs,ALL')
+            add_project_link_arguments('-Wl,--exclude-libs,ALL', language: 'cpp')
+        endif
     endif
-  endif
 endif
 
-if( get_option('bmcweb-logging') != 'disabled' or \
-    get_option('buildtype').startswith('debug'))
- add_project_arguments([
-   '-DBMCWEB_ENABLE_DEBUG'
-   ],
-  language : 'cpp')
+if (
+    get_option('bmcweb-logging') != 'disabled'
+    or get_option('buildtype').startswith('debug')
+)
+    add_project_arguments(['-DBMCWEB_ENABLE_DEBUG'], language: 'cpp')
 
-  summary('debug', '-DBMCWEB_ENABLE_DEBUG', section : 'Enabled Features')
+    summary('debug', '-DBMCWEB_ENABLE_DEBUG', section: 'Enabled Features')
 endif
 
 # Set Compiler Security flags
 
 security_flags = [
-  '-fstack-protector-strong',
-  '-fPIE',
-  '-fPIC',
-  '-D_FORTIFY_SOURCE=2',
-  '-Wformat',
-  '-Wformat-security'
+    '-fstack-protector-strong',
+    '-fPIE',
+    '-fPIC',
+    '-D_FORTIFY_SOURCE=2',
+    '-Wformat',
+    '-Wformat-security',
 ]
 
 ## Add security flags for builds of type 'release','debugoptimized' and 'minsize'
 
-if not (get_option('buildtype') == 'plain' or get_option('buildtype').startswith('debug'))
-  add_project_arguments(
-   cxx.get_supported_arguments([
-    security_flags
-  ]),
-  language: 'cpp')
+if not (
+    get_option('buildtype') == 'plain'
+    or get_option('buildtype').startswith('debug')
+)
+    add_project_arguments(cxx.get_supported_arguments([security_flags]), language: 'cpp')
 endif
 
 # Boost dependency configuration
 
 add_project_arguments(
-cxx.get_supported_arguments([
-  '-DBOOST_ASIO_DISABLE_CONCEPTS',
-  '-DBOOST_ALL_NO_LIB',
-  '-DBOOST_ALLOW_DEPRECATED_HEADERS',
-  '-DBOOST_ASIO_DISABLE_THREADS',
-  '-DBOOST_ASIO_NO_DEPRECATED',
-  '-DBOOST_ASIO_SEPARATE_COMPILATION',
-  '-DBOOST_BEAST_SEPARATE_COMPILATION',
-  '-DBOOST_EXCEPTION_DISABLE',
-  '-DBOOST_NO_EXCEPTIONS',
-  '-DBOOST_URL_NO_SOURCE_LOCATION',
-  '-DJSON_NOEXCEPTION',
-  '-DOPENSSL_NO_FILENAMES',
-  '-DSDBUSPLUS_DISABLE_BOOST_COROUTINES',
-]),
-language : 'cpp')
+    cxx.get_supported_arguments(
+        [
+            '-DBOOST_ASIO_DISABLE_CONCEPTS',
+            '-DBOOST_ALL_NO_LIB',
+            '-DBOOST_ALLOW_DEPRECATED_HEADERS',
+            '-DBOOST_ASIO_DISABLE_THREADS',
+            '-DBOOST_ASIO_NO_DEPRECATED',
+            '-DBOOST_ASIO_SEPARATE_COMPILATION',
+            '-DBOOST_BEAST_SEPARATE_COMPILATION',
+            '-DBOOST_EXCEPTION_DISABLE',
+            '-DBOOST_NO_EXCEPTIONS',
+            '-DBOOST_URL_NO_SOURCE_LOCATION',
+            '-DJSON_NOEXCEPTION',
+            '-DOPENSSL_NO_FILENAMES',
+            '-DSDBUSPLUS_DISABLE_BOOST_COROUTINES',
+        ],
+    ),
+    language: 'cpp',
+)
 
 # Find the dependency modules, if not found use meson wrap to get them
 # automatically during the configure step
 bmcweb_dependencies = []
 
 pam = cxx.find_library('pam', required: true)
-atomic =  cxx.find_library('atomic', required: true)
+atomic = cxx.find_library('atomic', required: true)
 bmcweb_dependencies += [pam, atomic]
 
-openssl = dependency('openssl', required : false, version: '>=3.0.0')
+openssl = dependency('openssl', required: false, version: '>=3.0.0')
 if not openssl.found() or get_option('b_sanitize') != 'none'
-  openssl_proj = subproject(
-    'openssl',
-    required: true,
-    default_options: ['warning_level=0', 'werror=false']
-  )
-  openssl = openssl_proj.get_variable('openssl_dep')
-  openssl = openssl.as_system('system')
+    openssl_proj = subproject(
+        'openssl',
+        required: true,
+        default_options: ['warning_level=0', 'werror=false'],
+    )
+    openssl = openssl_proj.get_variable('openssl_dep')
+    openssl = openssl.as_system('system')
 endif
 bmcweb_dependencies += [openssl]
 
-nghttp2 = dependency('libnghttp2', version: '>=1.52.0', required : false)
+nghttp2 = dependency('libnghttp2', version: '>=1.52.0', required: false)
 if not nghttp2.found()
-  cmake = import('cmake')
-  opt_var = cmake.subproject_options()
-  opt_var.add_cmake_defines({
-    'ENABLE_LIB_ONLY': true,
-    'ENABLE_STATIC_LIB': true
-  })
-  nghttp2_ex = cmake.subproject('nghttp2', options: opt_var)
-  nghttp2 = nghttp2_ex.dependency('nghttp2_static')
+    cmake = import('cmake')
+    opt_var = cmake.subproject_options()
+    opt_var.add_cmake_defines({'ENABLE_LIB_ONLY': true, 'ENABLE_STATIC_LIB': true})
+    nghttp2_ex = cmake.subproject('nghttp2', options: opt_var)
+    nghttp2 = nghttp2_ex.dependency('nghttp2_static')
 endif
 bmcweb_dependencies += nghttp2
 
-sdbusplus = dependency('sdbusplus', required : false, include_type: 'system')
+sdbusplus = dependency('sdbusplus', required: false, include_type: 'system')
 if not sdbusplus.found()
-  sdbusplus_proj = subproject('sdbusplus', required: true)
-  sdbusplus = sdbusplus_proj.get_variable('sdbusplus_dep')
-  sdbusplus = sdbusplus.as_system('system')
+    sdbusplus_proj = subproject('sdbusplus', required: true)
+    sdbusplus = sdbusplus_proj.get_variable('sdbusplus_dep')
+    sdbusplus = sdbusplus.as_system('system')
 endif
 bmcweb_dependencies += sdbusplus
 
@@ -310,68 +324,79 @@
 bmcweb_dependencies += nlohmann_json_dep
 
 boost = dependency(
-  'boost',
-  modules: [
-    'url',
+    'boost',
+    modules: [
+        'url',
     ],
-  version : '>=1.84.0',
-  required : false,
-  include_type: 'system'
+    version: '>=1.84.0',
+    required: false,
+    include_type: 'system',
 )
 if boost.found()
-  bmcweb_dependencies += [boost]
+    bmcweb_dependencies += [boost]
 else
-  cmake = import('cmake')
-  opt = cmake.subproject_options()
-  opt.add_cmake_defines({
-    'BOOST_INCLUDE_LIBRARIES': 'asio;beast;callable_traits;headers;process;type_index;url;uuid',
-    'BUILD_SHARED_LIBS': 'OFF',
-  })
+    cmake = import('cmake')
+    opt = cmake.subproject_options()
+    opt.add_cmake_defines(
+        {
+            'BOOST_INCLUDE_LIBRARIES': 'asio;beast;callable_traits;headers;process;type_index;url;uuid',
+            'BUILD_SHARED_LIBS': 'OFF',
+        },
+    )
 
-  boost = cmake.subproject('boost', required: true, options: opt)
-  boost_asio = boost.dependency('boost_asio').as_system()
-  boost_beast = boost.dependency('boost_beast').as_system()
-  boost_callable_traits = boost.dependency('boost_callable_traits').as_system()
-  boost_headers = boost.dependency('boost_headers').as_system()
-  boost_process = boost.dependency('boost_process').as_system()
-  boost_type_index = boost.dependency('boost_type_index').as_system()
-  boost_url = boost.dependency('boost_url').as_system()
-  boost_uuid = boost.dependency('boost_uuid').as_system()
-  bmcweb_dependencies += [
-    boost_asio,
-    boost_beast,
-    boost_callable_traits,
-    boost_headers,
-    boost_process,
-    boost_type_index,
-    boost_url,
-    boost_uuid
-  ]
+    boost = cmake.subproject('boost', required: true, options: opt)
+    boost_asio = boost.dependency('boost_asio').as_system()
+    boost_beast = boost.dependency('boost_beast').as_system()
+    boost_callable_traits = boost.dependency('boost_callable_traits').as_system()
+    boost_headers = boost.dependency('boost_headers').as_system()
+    boost_process = boost.dependency('boost_process').as_system()
+    boost_type_index = boost.dependency('boost_type_index').as_system()
+    boost_url = boost.dependency('boost_url').as_system()
+    boost_uuid = boost.dependency('boost_uuid').as_system()
+    bmcweb_dependencies += [
+        boost_asio,
+        boost_beast,
+        boost_callable_traits,
+        boost_headers,
+        boost_process,
+        boost_type_index,
+        boost_url,
+        boost_uuid,
+    ]
 endif
 
 if get_option('tests').allowed()
-  gtest = dependency('gtest', main: true, version: '>=1.14.0', disabler: true, required : false)
-  gmock = dependency('gmock', required : false)
-  if not gtest.found() and get_option('tests').allowed()
-    gtest_proj = subproject('gtest', required: true)
-    gtest = gtest_proj.get_variable('gtest_main_dep')
-    gmock = gtest_proj.get_variable('gmock_dep')
-  endif
-  gtest = gtest.as_system('system')
-  gmock = gmock.as_system('system')
+    gtest = dependency(
+        'gtest',
+        main: true,
+        version: '>=1.14.0',
+        disabler: true,
+        required: false,
+    )
+    gmock = dependency('gmock', required: false)
+    if not gtest.found() and get_option('tests').allowed()
+        gtest_proj = subproject('gtest', required: true)
+        gtest = gtest_proj.get_variable('gtest_main_dep')
+        gmock = gtest_proj.get_variable('gmock_dep')
+    endif
+    gtest = gtest.as_system('system')
+    gmock = gmock.as_system('system')
 endif
 
 systemd_system_unit_dir = systemd.get_variable('systemdsystemunitdir')
 
-bindir = get_option('prefix') + '/' +get_option('bindir')
+bindir = get_option('prefix') + '/' + get_option('bindir')
 
-summary({
-          'prefix' : get_option('prefix'),
-          'bindir' : bindir,
-          'systemd unit directory' : systemd_system_unit_dir
-        }, section : 'Directories')
+summary(
+    {
+        'prefix': get_option('prefix'),
+        'bindir': bindir,
+        'systemd unit directory': systemd_system_unit_dir,
+    },
+    section: 'Directories',
+)
 
-install_subdir('static', install_dir : 'share/www', strip_directory : true)
+install_subdir('static', install_dir: 'share/www', strip_directory: true)
 
 # Config subdirectory
 
@@ -382,106 +407,106 @@
 fs = import('fs')
 
 srcfiles_bmcweb = files(
-  # Begin large files, should be at the beginning
-  'redfish-core/src/redfish.cpp',
-  'src/webserver_run.cpp',
-  # end large files
+    # end large files
 
-  'redfish-core/src/error_messages.cpp',
-  'redfish-core/src/registries.cpp',
-  'redfish-core/src/utils/dbus_utils.cpp',
-  'redfish-core/src/utils/json_utils.cpp',
-  'redfish-core/src/utils/time_utils.cpp',
-  'src/boost_asio_ssl.cpp',
-  'src/boost_asio.cpp',
-  'src/boost_beast.cpp',
-  'src/dbus_singleton.cpp',
-  'src/json_html_serializer.cpp',
-  'src/ossl_random.cpp',
+    'redfish-core/src/error_messages.cpp',
+    # Begin large files, should be at the beginning
+    'redfish-core/src/redfish.cpp',
+    'redfish-core/src/registries.cpp',
+    'redfish-core/src/utils/dbus_utils.cpp',
+    'redfish-core/src/utils/json_utils.cpp',
+    'redfish-core/src/utils/time_utils.cpp',
+    'src/boost_asio.cpp',
+    'src/boost_asio_ssl.cpp',
+    'src/boost_beast.cpp',
+    'src/dbus_singleton.cpp',
+    'src/json_html_serializer.cpp',
+    'src/ossl_random.cpp',
+    'src/webserver_run.cpp',
 )
 
 bmcweblib = static_library(
-  'bmcweblib',
-  srcfiles_bmcweb,
-  include_directories : incdir,
-  dependencies: bmcweb_dependencies,
+    'bmcweblib',
+    srcfiles_bmcweb,
+    include_directories: incdir,
+    dependencies: bmcweb_dependencies,
 )
 
 # Generate the bmcweb executable
 executable(
-  'bmcweb',
-  'src/webserver_main.cpp',
-  include_directories : incdir,
-  dependencies: bmcweb_dependencies,
-  link_with: bmcweblib,
-  link_args: '-Wl,--gc-sections',
-  install: true,
-  install_dir:bindir
+    'bmcweb',
+    'src/webserver_main.cpp',
+    include_directories: incdir,
+    dependencies: bmcweb_dependencies,
+    link_with: bmcweblib,
+    link_args: '-Wl,--gc-sections',
+    install: true,
+    install_dir: bindir,
 )
 
 srcfiles_unittest = files(
-  'test/http/crow_getroutes_test.cpp',
-  'test/http/http2_connection_test.cpp',
-  'test/http/http_connection_test.cpp',
-  'test/http/mutual_tls.cpp',
-  'test/http/router_test.cpp',
-  'test/http/parsing_test.cpp',
-  'test/http/http_response_test.cpp',
-  'test/http/utility_test.cpp',
-  'test/http/verb_test.cpp',
-  'test/http/server_sent_event_test.cpp',
-  'test/http/mutual_tls_meta.cpp',
-  'test/http/http_body_test.cpp',
-  'test/include/dbus_utility_test.cpp',
-  'test/include/google/google_service_root_test.cpp',
-  'test/include/json_html_serializer.cpp',
-  'test/include/http_utility_test.cpp',
-  'test/include/human_sort_test.cpp',
-  'test/include/async_resolve_test.cpp',
-  'test/include/credential_pipe_test.cpp',
-  'test/include/ibm/configfile_test.cpp',
-  'test/include/ibm/lock_test.cpp',
-  'test/include/multipart_test.cpp',
-  'test/include/openbmc_dbus_rest_test.cpp',
-  'test/include/str_utility_test.cpp',
-  'test/include/ossl_random.cpp',
-  'test/redfish-core/include/privileges_test.cpp',
-  'test/redfish-core/include/redfish_aggregator_test.cpp',
-  'test/redfish-core/include/registries_test.cpp',
-  'test/redfish-core/include/utils/hex_utils_test.cpp',
-  'test/redfish-core/include/utils/dbus_utils.cpp',
-  'test/redfish-core/include/utils/ip_utils_test.cpp',
-  'test/redfish-core/include/utils/json_utils_test.cpp',
-  'test/redfish-core/include/utils/query_param_test.cpp',
-  'test/redfish-core/include/utils/stl_utils_test.cpp',
-  'test/redfish-core/include/utils/time_utils_test.cpp',
-  'test/redfish-core/lib/chassis_test.cpp',
-  'test/redfish-core/lib/sensors_test.cpp',
-  'test/redfish-core/lib/system_test.cpp',
-  'test/redfish-core/lib/log_services_dump_test.cpp',
-  'test/redfish-core/lib/log_services_test.cpp',
-  'test/redfish-core/lib/update_service_test.cpp',
-  'test/redfish-core/lib/service_root_test.cpp',
-  'test/redfish-core/lib/thermal_subsystem_test.cpp',
-  'test/redfish-core/lib/power_subsystem_test.cpp',
-  'test/redfish-core/lib/manager_diagnostic_data_test.cpp',
+    'test/http/crow_getroutes_test.cpp',
+    'test/http/http2_connection_test.cpp',
+    'test/http/http_body_test.cpp',
+    'test/http/http_connection_test.cpp',
+    'test/http/http_response_test.cpp',
+    'test/http/mutual_tls.cpp',
+    'test/http/mutual_tls_meta.cpp',
+    'test/http/parsing_test.cpp',
+    'test/http/router_test.cpp',
+    'test/http/server_sent_event_test.cpp',
+    'test/http/utility_test.cpp',
+    'test/http/verb_test.cpp',
+    'test/include/async_resolve_test.cpp',
+    'test/include/credential_pipe_test.cpp',
+    'test/include/dbus_utility_test.cpp',
+    'test/include/google/google_service_root_test.cpp',
+    'test/include/http_utility_test.cpp',
+    'test/include/human_sort_test.cpp',
+    'test/include/ibm/configfile_test.cpp',
+    'test/include/ibm/lock_test.cpp',
+    'test/include/json_html_serializer.cpp',
+    'test/include/multipart_test.cpp',
+    'test/include/openbmc_dbus_rest_test.cpp',
+    'test/include/ossl_random.cpp',
+    'test/include/str_utility_test.cpp',
+    'test/redfish-core/include/privileges_test.cpp',
+    'test/redfish-core/include/redfish_aggregator_test.cpp',
+    'test/redfish-core/include/registries_test.cpp',
+    'test/redfish-core/include/utils/dbus_utils.cpp',
+    'test/redfish-core/include/utils/hex_utils_test.cpp',
+    'test/redfish-core/include/utils/ip_utils_test.cpp',
+    'test/redfish-core/include/utils/json_utils_test.cpp',
+    'test/redfish-core/include/utils/query_param_test.cpp',
+    'test/redfish-core/include/utils/stl_utils_test.cpp',
+    'test/redfish-core/include/utils/time_utils_test.cpp',
+    'test/redfish-core/lib/chassis_test.cpp',
+    'test/redfish-core/lib/log_services_dump_test.cpp',
+    'test/redfish-core/lib/log_services_test.cpp',
+    'test/redfish-core/lib/manager_diagnostic_data_test.cpp',
+    'test/redfish-core/lib/power_subsystem_test.cpp',
+    'test/redfish-core/lib/sensors_test.cpp',
+    'test/redfish-core/lib/service_root_test.cpp',
+    'test/redfish-core/lib/system_test.cpp',
+    'test/redfish-core/lib/thermal_subsystem_test.cpp',
+    'test/redfish-core/lib/update_service_test.cpp',
 )
 
-
-if(get_option('tests').allowed())
+if (get_option('tests').allowed())
     # generate the test executable
     foreach test_src : srcfiles_unittest
-      test_bin = executable(
-        fs.stem(test_src),
-        test_src,
-        link_with: bmcweblib,
-        include_directories : incdir,
-        install_dir: bindir,
-        dependencies: bmcweb_dependencies + [
-          gtest,
-          gmock,
-        ]
-      )
-      test(fs.stem(test_src), test_bin)
+        test_bin = executable(
+            fs.stem(test_src),
+            test_src,
+            link_with: bmcweblib,
+            include_directories: incdir,
+            install_dir: bindir,
+            dependencies: bmcweb_dependencies
+            + [
+                gtest,
+                gmock,
+            ],
+        )
+        test(fs.stem(test_src), test_bin)
     endforeach
 endif
diff --git a/subprojects/packagefiles/boost-url/meson.build b/subprojects/packagefiles/boost-url/meson.build
deleted file mode 100644
index 7e64115..0000000
--- a/subprojects/packagefiles/boost-url/meson.build
+++ /dev/null
@@ -1,9 +0,0 @@
-project('boost-url',
-    'cpp',
-    version : '0.1',
-    license : 'Boost'
-)
-
-boost_url_dep = declare_dependency(
-    include_directories : include_directories('include'),
-)
