from samba_pidl import *
from samba_autoproto import *
from samba_python import *
+from samba_perl import *
from samba_deps import *
from samba_bundled import *
from samba_third_party import *
ldflags='',
external_library=False,
realname=None,
+ keep_underscore=False,
autoproto=None,
autoproto_extra_source='',
group='main',
private_library=False,
grouping_library=False,
allow_undefined_symbols=False,
- allow_warnings=True,
+ allow_warnings=False,
enabled=True):
'''define a Samba library'''
libname)
if target_type == 'PYTHON' or realname or not private_library:
- bundled_name = libname.replace('_', '-')
+ if keep_underscore:
+ bundled_name = libname
+ else:
+ bundled_name = libname.replace('_', '-')
else:
bundled_name = PRIVATE_NAME(bld, libname, bundled_extension,
private_library)
# only specify PIE flags for binaries
pie_cflags = cflags
pie_ldflags = TO_LIST(ldflags)
- if bld.env['ENABLE_PIE'] == True:
+ if bld.env['ENABLE_PIE'] is True:
pie_cflags += ' -fPIE'
pie_ldflags.extend(TO_LIST('-pie'))
- if bld.env['ENABLE_RELRO'] == True:
+ if bld.env['ENABLE_RELRO'] is True:
pie_ldflags.extend(TO_LIST('-Wl,-z,relro,-z,now'))
# first create a target for building the object files for this binary
pyembed=False,
manpages=None,
allow_undefined_symbols=False,
- allow_warnings=True
+ allow_warnings=False
):
'''define a Samba module.'''
vars=None,
subdir=None,
hide_symbols=False,
- allow_warnings=True,
+ allow_warnings=False,
pyext=False,
pyembed=False):
'''define a Samba subsystem'''
lineno = 0
for line in source_file:
newline = line
- if lineno == 0 and task.env["PYTHON_SPECIFIED"] == True and line[:2] == "#!":
+ if (lineno == 0 and task.env["PYTHON_SPECIFIED"] is True and
+ line[:2] == "#!"):
+ newline = replacement_shebang
+ elif pattern in line:
+ newline = line.replace(pattern, replacement)
+ installed_file.write(newline)
+ lineno = lineno + 1
+ installed_file.close()
+ os.chmod(installed_location, 0755)
+ return 0
+
+def copy_and_fix_perl_path(task):
+ pattern='use lib "$RealBin/lib";'
+
+ replacement = ""
+ if not task.env["PERL_LIB_INSTALL_DIR"] in task.env["PERL_INC"]:
+ replacement = 'use lib "%s";' % task.env["PERL_LIB_INSTALL_DIR"]
+
+ if task.env["PERL"][0] == "/":
+ replacement_shebang = "#!%s\n" % task.env["PERL"]
+ else:
+ replacement_shebang = "#!/usr/bin/env %s\n" % task.env["PERL"]
+
+ installed_location=task.outputs[0].bldpath(task.env)
+ source_file = open(task.inputs[0].srcpath(task.env))
+ installed_file = open(installed_location, 'w')
+ lineno = 0
+ for line in source_file:
+ newline = line
+ if lineno == 0 and task.env["PERL_SPECIFIED"] == True and line[:2] == "#!":
newline = replacement_shebang
elif pattern in line:
newline = line.replace(pattern, replacement)
def install_file(bld, destdir, file, chmod=MODE_644, flat=False,
- python_fixup=False, destname=None, base_name=None):
+ python_fixup=False, perl_fixup=False,
+ destname=None, base_name=None):
'''install a file'''
destdir = bld.EXPAND_VARIABLES(destdir)
if not destname:
source=file,
target=inst_file)
file = inst_file
+ if perl_fixup:
+ # fix the path perl will use to find Samba modules
+ inst_file = file + '.inst'
+ bld.SAMBA_GENERATOR('perl_%s' % destname,
+ rule=copy_and_fix_perl_path,
+ dep_vars=["PERL","PERL_SPECIFIED","PERL_LIB_INSTALL_DIR"],
+ source=file,
+ target=inst_file)
+ file = inst_file
if base_name:
file = os.path.join(base_name, file)
bld.install_as(dest, file, chmod=chmod)
def INSTALL_FILES(bld, destdir, files, chmod=MODE_644, flat=False,
- python_fixup=False, destname=None, base_name=None):
+ python_fixup=False, perl_fixup=False,
+ destname=None, base_name=None):
'''install a set of files'''
for f in TO_LIST(files):
install_file(bld, destdir, f, chmod=chmod, flat=flat,
- python_fixup=python_fixup, destname=destname,
- base_name=base_name)
+ python_fixup=python_fixup, perl_fixup=perl_fixup,
+ destname=destname, base_name=base_name)
Build.BuildContext.INSTALL_FILES = INSTALL_FILES