[SCM] Samba Shared Repository - branch v4-0-test updated

Karolin Seeger kseeger at samba.org
Thu May 30 03:38:06 MDT 2013

The branch, v4-0-test has been updated
       via  d4cd828 waf: build PIEs if supported by the compiler
       via  b4378f1 waf: build position independent executables
       via  097ec58 waf: add --with[out]-pie configure arguments
       via  0996e95 build: Add missing new line to replaced python shebang line. (Fix bug #9909)
      from  2aee249 build: Install smbtar in waf build


- Log -----------------------------------------------------------------
commit d4cd8284d9f6bdf9ce299648405b729e343da55d
Author: David Disseldorp <ddiss at samba.org>
Date:   Tue May 28 15:00:47 2013 +0200

    waf: build PIEs if supported by the compiler
    Currently waf performs a mandatory check for compiler PIE support,
    unless --without-pie is specified.
    This change makes Waf only perform the mandatory check if --with-pie is
    specified. If neither --with-pie nor --without-pie are specified, then
    PIEs are only built if compiler support is available.
    Signed-off-by: David Disseldorp <ddiss at samba.org>
    The last 3 patches address bug #9910 - PIE builds not supported.
    Autobuild-User(v4-0-test): Karolin Seeger <kseeger at samba.org>
    Autobuild-Date(v4-0-test): Thu May 30 11:37:47 CEST 2013 on sn-devel-104

commit b4378f1f3b6c442f3657577fd8f36d6179b2e11d
Author: David Disseldorp <ddiss at samba.org>
Date:   Mon May 27 17:57:01 2013 +0200

    waf: build position independent executables
    This patch re-instates support for building Position Independent
    Executables using the '-fPIE' and '-pie' compiler and linker flags
    PIE builds are enabled by default, and can be explicitly disabled using
    the '--without-pie' configure argument.
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date(master): Tue May 28 02:56:36 CEST 2013 on sn-devel-104

commit 097ec587523df24e6a4d016cd1547de6dac17d67
Author: David Disseldorp <ddiss at samba.org>
Date:   Mon May 27 17:57:00 2013 +0200

    waf: add --with[out]-pie configure arguments
    The arguments do not currently have any effect.
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 0996e95c00ffc468e6482877f21bae3a0f01abe9
Author: Michael Adam <obnox at samba.org>
Date:   Tue May 28 12:19:34 2013 +0200

    build: Add missing new line to replaced python shebang line. (Fix bug #9909)
    When configuring with a non-standard python specified in
    the PYTHON environment variable, the shebang lines in various
    python tools like samba-tool and samba_dnsupdate get replaced.
    This replace line for the shebang was missing a newline
    which joined the shebang line with the following line,
    rendereing those scripts with a nonempty second line unusuable,
    for example samba_dnsupdate.
    This patch fixes this bug which is bug #9909 on bugzilla.
    Pair-Programmed-With: Karolin Seeger <kseeger at samba.org>
    Signed-off-by: Michael Adam <obnox at samba.org>
    Signed-off-by: Karolin Seeger <kseeger at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    Autobuild-User(master): Michael Adam <obnox at samba.org>
    Autobuild-Date(master): Wed May 29 13:21:51 CEST 2013 on sn-devel-104
    (cherry picked from commit 3f24d694e7e2190d30a17bc13a79a36b49711531)


Summary of changes:
 buildtools/wafsamba/wafsamba.py |   15 +++++++++++----
 wscript                         |   17 +++++++++++++++++
 2 files changed, 28 insertions(+), 4 deletions(-)

Changeset truncated at 500 lines:

diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
index 3559cc1..47393ad 100644
--- a/buildtools/wafsamba/wafsamba.py
+++ b/buildtools/wafsamba/wafsamba.py
@@ -342,6 +342,13 @@ def SAMBA_BINARY(bld, binname, source,
         subsystem_group = group
+    # only specify PIE flags for binaries
+    pie_cflags = cflags
+    pie_ldflags = TO_LIST(ldflags)
+    if bld.env['ENABLE_PIE'] == True:
+        pie_cflags += ' -fPIE'
+        pie_ldflags.extend(TO_LIST('-pie'))
     # first create a target for building the object files for this binary
     # by separating in this way, we avoid recompiling the C files
     # separately for the install binary and the build binary
@@ -349,7 +356,7 @@ def SAMBA_BINARY(bld, binname, source,
                         source         = source,
                         deps           = deps,
                         includes       = includes,
-                        cflags         = cflags,
+                        cflags         = pie_cflags,
                         group          = subsystem_group,
                         autoproto      = autoproto,
                         subsystem_name = subsystem_name,
@@ -379,7 +386,7 @@ def SAMBA_BINARY(bld, binname, source,
         install_path   = None,
         samba_inst_path= install_path,
         samba_install  = install,
-        samba_ldflags  = TO_LIST(ldflags)
+        samba_ldflags  = pie_ldflags
     if manpages is not None and 'XSLTPROC_MANPAGES' in bld.env and bld.env['XSLTPROC_MANPAGES']:
@@ -699,9 +706,9 @@ sys.path.insert(1, "%s")""" % (task.env["PYTHONARCHDIR"], task.env["PYTHONDIR"])
     shebang = None
     if task.env["PYTHON"][0] == "/":
-        replacement_shebang = "#!%s" % task.env["PYTHON"]
+        replacement_shebang = "#!%s\n" % task.env["PYTHON"]
-        replacement_shebang = "#!/usr/bin/env %s" % task.env["PYTHON"]
+        replacement_shebang = "#!/usr/bin/env %s\n" % task.env["PYTHON"]
     source_file = open(task.inputs[0].srcpath(task.env))
diff --git a/wscript b/wscript
index a9954ed..087e950 100644
--- a/wscript
+++ b/wscript
@@ -56,6 +56,14 @@ def set_options(opt):
                    help='disable AD DC functionality (enables Samba 4 client and Samba 3 code base).',
                    action='store_true', dest='without_ad_dc', default=False)
+    opt.add_option('--with-pie',
+                  help=("Build Position Independent Executables " +
+                        "(default if supported by compiler)"),
+                  action="store_true", dest='enable_pie')
+    opt.add_option('--without-pie',
+                  help=("Disable Position Independent Executable builds"),
+                  action="store_false", dest='enable_pie')
     gr = opt.option_group('developer options')
@@ -168,6 +176,15 @@ def configure(conf):
+    if Options.options.enable_pie != False:
+        if Options.options.enable_pie == True:
+                need_pie = True
+        else:
+                # not specified, only build PIEs if supported by compiler
+                need_pie = False
+        if conf.check_cc(cflags='-fPIE', ldflags='-pie', mandatory=need_pie,
+                         msg="Checking compiler for PIE support"):
+		conf.env['ENABLE_PIE'] = True
 def etags(ctx):
     '''build TAGS file using etags'''

Samba Shared Repository

More information about the samba-cvs mailing list