139 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Meson
		
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Meson
		
	
	
	
project(
 | 
						|
  'toolbox',
 | 
						|
  'c',
 | 
						|
  version: '0.2',
 | 
						|
  license: 'ASL 2.0',
 | 
						|
  default_options: 'c_std=c99',
 | 
						|
  meson_version: '>= 0.58.0',
 | 
						|
)
 | 
						|
 | 
						|
fs = import('fs')
 | 
						|
 | 
						|
cc = meson.get_compiler('c')
 | 
						|
if not cc.has_argument('-print-file-name=libc.so')
 | 
						|
  error('C compiler does not support the -print-file-name argument.')
 | 
						|
endif
 | 
						|
 | 
						|
subid_dep = cc.find_library('subid', has_headers: ['shadow/subid.h'])
 | 
						|
 | 
						|
go = find_program('go')
 | 
						|
go_md2man = find_program('go-md2man')
 | 
						|
 | 
						|
bats = find_program('bats', required: false)
 | 
						|
codespell = find_program('codespell', required: false)
 | 
						|
htpasswd = find_program('htpasswd', required: false)
 | 
						|
openssl = find_program('openssl', required: false)
 | 
						|
 | 
						|
p11kit_server_works = false
 | 
						|
p11kit = find_program('p11-kit', required: false)
 | 
						|
if p11kit.found()
 | 
						|
  res = run_command(p11kit, 'server', check: false)
 | 
						|
  if res.returncode() == 0
 | 
						|
    error('Command \'p11-kit server\' was supposed to fail')
 | 
						|
  endif
 | 
						|
 | 
						|
  res_stdout = res.stdout()
 | 
						|
  if res_stdout.contains('--name') and res_stdout.contains('--provider')
 | 
						|
    p11kit_server_works = true
 | 
						|
  else
 | 
						|
    warning('Command \'p11-kit server\' doesn\'t work')
 | 
						|
  endif
 | 
						|
endif
 | 
						|
 | 
						|
if not p11kit_server_works
 | 
						|
  warning('Containers won\'t have access to the CA certificates from the host')
 | 
						|
endif
 | 
						|
 | 
						|
podman = find_program('podman', required: false)
 | 
						|
shellcheck = find_program('shellcheck', required: false)
 | 
						|
skopeo = find_program('skopeo', required: false)
 | 
						|
 | 
						|
bashcompletionsdir = get_option('bash_completions_dir')
 | 
						|
if bashcompletionsdir == ''
 | 
						|
  bash_completion_dep = dependency('bash-completion', required: get_option('bash_completions'))
 | 
						|
  if bash_completion_dep.found()
 | 
						|
    bashcompletionsdir = bash_completion_dep.get_variable(pkgconfig: 'completionsdir')
 | 
						|
  endif
 | 
						|
endif
 | 
						|
 | 
						|
fishcompletionsdir = get_option('fish_completions_dir')
 | 
						|
if fishcompletionsdir == ''
 | 
						|
  fish_completion_dep = dependency('fish', required: get_option('fish_completions'))
 | 
						|
  if fish_completion_dep.found()
 | 
						|
    fishcompletionsdir = fish_completion_dep.get_variable(pkgconfig: 'completionsdir')
 | 
						|
  endif
 | 
						|
endif
 | 
						|
 | 
						|
zshcompletionsdir = get_option('zsh_completions_dir')
 | 
						|
if zshcompletionsdir == ''
 | 
						|
  zshcompletionsdir = get_option('datadir') / 'zsh' / 'site-functions'
 | 
						|
endif
 | 
						|
 | 
						|
migration_path_for_coreos_toolbox = get_option('migration_path_for_coreos_toolbox')
 | 
						|
profiledir = get_option('profile_dir')
 | 
						|
 | 
						|
tmpfilesdir = get_option('tmpfiles_dir')
 | 
						|
if tmpfilesdir == '' or not fs.exists('/run/.containerenv')
 | 
						|
  systemd_dep = dependency('systemd')
 | 
						|
 | 
						|
  if tmpfilesdir == ''
 | 
						|
    tmpfilesdir = systemd_dep.get_variable(pkgconfig: 'tmpfilesdir')
 | 
						|
  endif
 | 
						|
endif
 | 
						|
 | 
						|
toolbox_sh = files('toolbox')
 | 
						|
 | 
						|
if codespell.found()
 | 
						|
  test(
 | 
						|
    'codespell',
 | 
						|
    codespell,
 | 
						|
    args: [
 | 
						|
      '--check-filenames',
 | 
						|
      '--check-hidden',
 | 
						|
      '--context', '3',
 | 
						|
      '--exclude-file', meson.project_source_root() / '.codespellexcludefile',
 | 
						|
      '--skip', meson.project_build_root(),
 | 
						|
      '--skip', meson.project_source_root() / '.git',
 | 
						|
      '--skip', meson.project_source_root() / 'src/go.sum',
 | 
						|
      '--skip', meson.project_source_root() / 'test/system/libs/bats-assert',
 | 
						|
      '--skip', meson.project_source_root() / 'test/system/libs/bats-support',
 | 
						|
      meson.project_source_root(),
 | 
						|
    ],
 | 
						|
  )
 | 
						|
endif
 | 
						|
 | 
						|
if shellcheck.found()
 | 
						|
  test('shellcheck toolbox (deprecated)', shellcheck, args: [toolbox_sh])
 | 
						|
endif
 | 
						|
 | 
						|
install_subdir(
 | 
						|
  'test',
 | 
						|
  install_dir: get_option('datadir') / meson.project_name(),
 | 
						|
  exclude_files: [
 | 
						|
    'meson.build',
 | 
						|
    'system/libs/bats-assert/.git',
 | 
						|
    'system/libs/bats-assert/.gitignore',
 | 
						|
    'system/libs/bats-assert/.travis.yml',
 | 
						|
    'system/libs/bats-assert/package.json',
 | 
						|
    'system/libs/bats-support/.git',
 | 
						|
    'system/libs/bats-support/.gitignore',
 | 
						|
    'system/libs/bats-support/.travis.yml',
 | 
						|
    'system/libs/bats-support/package.json',
 | 
						|
    'system/meson.build',
 | 
						|
    ],
 | 
						|
  exclude_directories: [
 | 
						|
    'system/libs/bats-assert/script',
 | 
						|
    'system/libs/bats-assert/test',
 | 
						|
    'system/libs/bats-support/script',
 | 
						|
    'system/libs/bats-support/test'
 | 
						|
  ]
 | 
						|
)
 | 
						|
 | 
						|
subdir('data')
 | 
						|
subdir('doc')
 | 
						|
subdir('profile.d')
 | 
						|
subdir('src')
 | 
						|
subdir('test')
 | 
						|
 | 
						|
meson.add_install_script('meson_post_install.py')
 |