]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Merge pull request #23683 from keszybz/status-format
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 10 Jun 2022 12:11:53 +0000 (14:11 +0200)
committerGitHub <noreply@github.com>
Fri, 10 Jun 2022 12:11:53 +0000 (14:11 +0200)
Default to default-status-unit-format=name in developer mode

1  2 
meson.build
meson_options.txt

diff --combined meson.build
index 62c605129f547d79844076da7c508ebba49e9662,d6391d45a25c94441f2618d0616bcb59849e234a..e3b68a8dccdb7f334585c8d856d02a0d8307ff7b
@@@ -226,6 -226,9 +226,9 @@@ endi
  
  memory_accounting_default = get_option('memory-accounting-default')
  status_unit_format_default = get_option('status-unit-format-default')
+ if status_unit_format_default == 'auto'
+         status_unit_format_default = conf.get('BUILD_MODE_DEVELOPER') == 1 ? 'name' : 'description'
+ endif
  
  conf.set_quoted('BINFMT_DIR',                                 binfmtdir)
  conf.set_quoted('BOOTLIBDIR',                                 bootlibdir)
@@@ -450,10 -453,6 +453,10 @@@ if get_option('buildtype') != 'debug
          possible_link_flags += '-Wl,--gc-sections'
  endif
  
 +if get_option('mode') == 'developer'
 +        possible_cc_flags += '-fno-omit-frame-pointer'
 +endif
 +
  add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
  add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
  add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
@@@ -1020,74 -1019,58 +1023,74 @@@ conf.set10('HAVE_LIBBPF', libbpf.found(
  if want_bpf_framework == 'false' or not libbpf.found() or skip_deps
          conf.set10('BPF_FRAMEWORK', false)
  else
 -        # Support 'versioned' clang/llvm-strip binaries, as seen on Debian/Ubuntu
 -        # (like clang-10/llvm-strip-10)
 -        if meson.is_cross_build() or cc.get_id() != 'clang' or cc.cmd_array()[0].contains('afl-clang') or cc.cmd_array()[0].contains('hfuzz-clang')
 -                r = find_program('clang', required : bpf_framework_required, version : '>= 10.0.0')
 -                clang_found = r.found()
 -                if clang_found
 -                        clang = r.path()
 +        bpf_compiler = get_option('bpf-compiler')
 +        clang_found = false
 +        clang_supports_bpf = false
 +        bpf_gcc_found = false
 +        deps_found = false
 +
 +        if bpf_compiler == 'clang'
 +                # Support 'versioned' clang/llvm-strip binaries, as seen on Debian/Ubuntu
 +                # (like clang-10/llvm-strip-10)
 +                if meson.is_cross_build() or cc.get_id() != 'clang' or cc.cmd_array()[0].contains('afl-clang') or cc.cmd_array()[0].contains('hfuzz-clang')
 +                        r = find_program('clang', required : bpf_framework_required, version : '>= 10.0.0')
 +                        clang_found = r.found()
 +                        if clang_found
 +                                clang = r.path()
 +                        endif
 +                        # Assume that the required flags are supported by the found clang.
 +                        clang_supports_flags = clang_found
 +                else
 +                        clang_found = true
 +                        clang = cc.cmd_array()
 +                        clang_supports_flags = cc.has_argument('-Wno-compare-distinct-pointer-types')
                  endif
 -                # Assume that the required flags are supported by the found clang.
 -                clang_supports_flags = clang_found
 -        else
 -                clang_found = true
 -                clang = cc.cmd_array()
 -                clang_supports_flags = cc.has_argument('-Wno-compare-distinct-pointer-types')
 -        endif
  
 -        if clang_found
 -                # Check if 'clang -target bpf' is supported.
 -                clang_supports_bpf = run_command(clang, '-target', 'bpf', '--print-supported-cpus', check : false).returncode() == 0
 -        else
 -                clang_supports_bpf = false
 +                if clang_found
 +                        # Check if 'clang -target bpf' is supported.
 +                        clang_supports_bpf = run_command(clang, '-target', 'bpf', '--print-supported-cpus', check : false).returncode() == 0
 +                endif
 +        elif bpf_compiler == 'gcc'
 +                warning('GCC BPF Compiler support is experimental and not recommended.')
 +                bpf_gcc = find_program('bpf-gcc',
 +                                       required : true,
 +                                       version : '>= 12.1.0')
 +                bpf_gcc_found = bpf_gcc.found()
          endif
  
 -        # Debian installs this in /usr/sbin/ which is not in $PATH.
 -        # We check for 'bpftool' first, honouring $PATH, and in /usr/sbin/ for Debian.
 -        # We use 'bpftool gen' subcommand, it was added by 985ead416df39d6fe8e89580cc1db6aa273e0175 (v5.6).
 -        bpftool = find_program('bpftool',
 -                               '/usr/sbin/bpftool',
 -                               required : false,
 -                               version : '>= 5.13.0')
 -
 -        if bpftool.found()
 -                bpftool_strip = true
 -        else
 -                bpftool_strip = false
 +        if clang_supports_bpf or bpf_gcc_found
 +                # Debian installs this in /usr/sbin/ which is not in $PATH.
 +                # We check for 'bpftool' first, honouring $PATH, and in /usr/sbin/ for Debian.
 +                # We use 'bpftool gen object' subcommand for bpftool strip, it was added by d80b2fcbe0a023619e0fc73112f2a02c2662f6ab (v5.13).
                  bpftool = find_program('bpftool',
                                         '/usr/sbin/bpftool',
 -                                       required : bpf_framework_required,
 -                                       version : '>= 5.6.0')
 -        endif
 +                                       required : false,
 +                                       version : '>= 5.13.0')
  
 -        if not bpftool_strip
 -                if not meson.is_cross_build() and clang_found
 -                        llvm_strip_bin = run_command(clang, '--print-prog-name', 'llvm-strip',
 -                                                     check : true).stdout().strip()
 +                if bpftool.found()
 +                        bpftool_strip = true
 +                        deps_found = true
                  else
 -                        llvm_strip_bin = 'llvm-strip'
 +                        bpftool_strip = false
 +                        # We require the 'bpftool gen skeleton' subcommand, it was added by 985ead416df39d6fe8e89580cc1db6aa273e0175 (v5.6).
 +                        bpftool = find_program('bpftool',
 +                                               '/usr/sbin/bpftool',
 +                                               required : bpf_framework_required,
 +                                               version : '>= 5.6.0')
                  endif
 -                llvm_strip = find_program(llvm_strip_bin, required : bpf_framework_required, version : '>= 10.0.0')
 -        endif
  
 -        deps_found = clang_found and clang_supports_bpf and clang_supports_flags and (bpftool_strip or llvm_strip.found()) and bpftool.found()
 +                # We use `llvm-strip` as a fallback if `bpftool gen object` strip support is not available.
 +                if not bpftool_strip and bpftool.found() and clang_supports_bpf
 +                        if not meson.is_cross_build()
 +                                llvm_strip_bin = run_command(clang, '--print-prog-name', 'llvm-strip',
 +                                                             check : true).stdout().strip()
 +                        else
 +                                llvm_strip_bin = 'llvm-strip'
 +                        endif
 +                        llvm_strip = find_program(llvm_strip_bin, required : bpf_framework_required, version : '>= 10.0.0')
 +                        deps_found = llvm_strip.found()
 +                endif
 +        endif
  
          # Can build BPF program from source code in restricted C
          conf.set10('BPF_FRAMEWORK', deps_found)
@@@ -4191,6 -4174,7 +4194,7 @@@ summary(
          'default net.naming-scheme value' : default_net_naming_scheme,
          'default KillUserProcesses value' : kill_user_processes,
          'default locale' :                  default_locale,
+         'default status unit format' :      status_unit_format_default,
          'default user $PATH' :
                  default_user_path != '' ? default_user_path : '(same as system services)',
          'systemd service watchdog' :        service_watchdog == '' ? 'disabled' : service_watchdog,
diff --combined meson_options.txt
index 3a1d7ce0ec006e12052af27f1fb4a3728cf2287f,267c8293686734690559aa3663589f1abaa5ac20..b42ae0d90be5af9254690a1eb0ecc044403b631d
@@@ -214,7 -214,7 +214,7 @@@ option('extra-net-naming-schemes', typ
  option('default-net-naming-scheme', type : 'string', value : 'latest',
         description : 'default net.naming-scheme= value')
  option('status-unit-format-default', type : 'combo',
-        choices : ['description', 'name', 'combined'],
+        choices : ['auto', 'description', 'name', 'combined'],
         description : 'use unit name or description in messages by default')
  option('time-epoch', type : 'integer', value : '-1',
         description : 'time epoch for time clients')
@@@ -496,8 -496,6 +496,8 @@@ option('kernel-install', type: 'boolean
  option('analyze', type: 'boolean', value: 'true',
         description : 'install systemd-analyze')
  
 +option('bpf-compiler', type : 'combo', choices : ['clang', 'gcc'],
 +    description: 'compiler used to build BPF programs, note: gcc is experimental')
  option('bpf-framework', type : 'combo', choices : ['auto', 'true', 'false'],
      description: 'build BPF programs from source code in restricted C')