Curious issue with -b output when building Samba master branch

Richard Sharpe realrichardsharpe at gmail.com
Wed Feb 4 16:47:26 MST 2015


On Wed, Feb 4, 2015 at 1:40 PM, Richard Sharpe
<realrichardsharpe at gmail.com> wrote:
> Hi,
>
> when I run my own configure.xxx script that passes essentially what
> RedHat passes to configure on a Samba 4.1.x build, I see the following
> in the configure log,
>
> Dynconfig[SOCKET_DIR]:
>            : '/var/run'
> Dynconfig[MODULESDIR]:
>            : '/usr/lib64/samba'
> Dynconfig[WINBINDD_PRIVILEGED_SOCKET_DIR]:
>            : '/var/lib/samba/winbindd_privileged'
>
> but MODULESDIR is different when I run smbd -b:
>
>    LMHOSTSFILE: /etc/samba/lmhosts
>    LIBDIR: /usr/lib
>    MODULESDIR: /home/rsharpe/somedir/samba/bin/modules
>    SHLIBEXT: so
>    LOCKDIR: /var/lib/samba
>
> Why is this? How can I force the binary to have the correct thing
> because I want to be able to copy these binaries to the correct place
> on a remote node and have things work correctly.

OK, I think I have found the source of this disturbing behavior. In
dynconfig/wscript I see this little snippet of code:

def get_override(bld):
    override = { 'MODULESDIR'    : 'bin/modules',
                 'PYTHONDIR'     : 'bin/python',
                 'PYTHONARCHDIR' : 'bin/python',
                 'BINDIR'        : 'bin',
                 'SBINDIR'       : 'bin',
                 'CODEPAGEDIR'   : 'codepages',
                 'SCRIPTSBINDIR' : 'source4/scripting/bin',
                 'SETUPDIR'      : 'source4/setup'
                 }
    return override

def dynconfig_cflags(bld, list=None):
    '''work out the extra CFLAGS for dynconfig.c'''
    cflags = []
    for varname in dynconfig.keys():
        if list and not varname in list:
            continue
        value = bld.env[varname]
        if not Options.is_install:
            override = get_override(bld)
            if varname in override:
                value = os.path.join(bld.env.srcdir, override[varname])
        cflags.append('-D%s="%s"' % (varname, value))
    return cflags

Which would seem to be overriding a bunch of things if you are not
doing a make install.

Can anyone explain to me the reason for this?

In the environment I am working in I have a bunch of people who want
to have reasonable turn-around for changes and will want to copy the
just built binary to a set of other machines.

Having to go through an rpmbuild or a make install just to get one
changed binary is an enormous pain.

Is there some other way rather than hacking out that piece of code?


-- 
Regards,
Richard Sharpe
(何以解憂?唯有杜康。--曹操)


More information about the samba-technical mailing list