s3: lib: Add new clistr_smb2_extract_snapshot_token() function.
[Samba.git] / buildtools / wafsamba / samba_perl.py
blobb4263137b591ea27bdb2bc435b7c68c5694f12ba
1 from waflib import Utils
2 from waflib.Configure import conf
3 from samba_utils import get_string
4 done = {}
6 @conf
7 def SAMBA_CHECK_PERL(conf, mandatory=True, version=(5,0,0)):
8 if "done" in done:
9 return
10 done["done"] = True
11 conf.find_program('perl', var='PERL', mandatory=mandatory)
12 conf.load('perl')
13 path_perl = conf.find_program('perl')
14 conf.env.PERL_SPECIFIED = (conf.env.PERL != path_perl)
15 conf.check_perl_version(version)
17 def read_perl_config_var(cmd):
18 output = Utils.cmd_output([conf.env.get_flat('PERL'), '-MConfig', '-e', cmd])
19 if not isinstance(output, str):
20 output = get_string(output)
21 return Utils.to_list(output)
23 def check_perl_config_var(var):
24 conf.start_msg("Checking for perl $Config{%s}:" % var)
25 try:
26 v = read_perl_config_var('print $Config{%s}' % var)[0]
27 conf.end_msg("'%s'" % (v), 'GREEN')
28 return v
29 except IndexError:
30 conf.end_msg(False, 'YELLOW')
31 return None
33 vendor_prefix = check_perl_config_var('vendorprefix')
35 perl_arch_install_dir = None
36 if vendor_prefix == conf.env.PREFIX:
37 perl_arch_install_dir = check_perl_config_var('vendorarch');
38 if perl_arch_install_dir is None:
39 perl_arch_install_dir = "${LIBDIR}/perl5";
40 conf.start_msg("PERL_ARCH_INSTALL_DIR: ")
41 conf.end_msg("'%s'" % (perl_arch_install_dir), 'GREEN')
42 conf.env.PERL_ARCH_INSTALL_DIR = perl_arch_install_dir
44 perl_lib_install_dir = None
45 if vendor_prefix == conf.env.PREFIX:
46 perl_lib_install_dir = check_perl_config_var('vendorlib');
47 if perl_lib_install_dir is None:
48 perl_lib_install_dir = "${DATADIR}/perl5";
49 conf.start_msg("PERL_LIB_INSTALL_DIR: ")
50 conf.end_msg("'%s'" % (perl_lib_install_dir), 'GREEN')
51 conf.env.PERL_LIB_INSTALL_DIR = perl_lib_install_dir
53 perl_inc = read_perl_config_var('print "@INC"')
54 if '.' in perl_inc:
55 perl_inc.remove('.')
56 conf.start_msg("PERL_INC: ")
57 conf.end_msg("%s" % (perl_inc), 'GREEN')
58 conf.env.PERL_INC = perl_inc