It can be done...

John P Janosik jpjanosi at us.ibm.com
Tue Aug 1 19:24:31 UTC 2017


> On 01/08/2017 17:25, Michael Felt via samba-technical wrote:
> >
> > FYI: the blibpath on the smbd is: EXTENSIVE and inaccurate (relative)
> >
> > 0 
> > default/source4/lib/socket:default/source4/lib/http:default/
> source4/libcli:default/libcli/nbt:default/source4/cluster:default/
> source4/libcli/ldap:default/source4/auth:default/source4/libcli/
> wbclient:default/source4/lib/messaging:default/nsswitch:default/
> source4/lib/events:default/lib/tdb_wrap:default/source4/
> librpc:default/libcli/smb:default/libcli/cldap:default/lib/
> addns:default/auth/gensec:default/source4/auth/ntlm:default/
> third_party/popt:default/libds/common:default/nsswitch/
> libwbclient:default/auth/credentials:default/lib/ldb-samba:default/
> lib/param:default/source4/auth/kerberos:default/libcli/ldap:default/
> lib/ldb:default/libcli/registry:default/lib:default/lib/
> krb5_wrap:default/lib/dbwrap:default/source3/auth:default/lib/
> tdb:default/auth:default/lib/socket:default/libcli/auth:default/
> libcli/named_pipe_auth:default/source4/dsdb:default/libcli/
> security:default/libcli/util:default/librpc:default/source4/
> heimdal_build:default/dfs_server:default/lib/tevent:default/lib/
> replace:default/lib/talloc:default/source3:default/lib/util:/usr/
> local/lib:/opt/lib:/usr/vac/lib:/usr/lib:/lib 
> >
> > 1                                    libpthread.a shr_xpg5_64.o
> > 2                                    libsamba-util.so
> > 3                                    libsmbd-base-samba4.so
> > ...
> > 103                                  libcli-nbt-samba4.so
> > 104                                  libsmbclient-raw-samba4.so
> > 105                                  libhttp-samba4.so
> > 106                                  libnetif-samba4.so
> > 107                                  libnsl.a            shr_64.o
> > 108                                  libc.a              shr_64.o
> >
> > I would hope there is a better way to install shared libraries!
> 
> Ok, reran config and changed prefix to /opt
> 
> What I had not noticed before is that not only is the installed LIBPATH 
> (behind the 0) long and relative, the directories do not exist in the 
> installed area.
> 
> After
> 
> LIBPATH=/opt/lib:/opt/lib/auth:/opt/lib/bind9:/opt/lib/gensec:/opt/
> lib/idmap:/opt/lib/ldb:/opt/lib/nss_info:/opt/lib/private:/opt/lib/
> process_model:/opt/lib/python2.7/site-packages/samba:/opt/lib/
> security:/opt/lib/service:/opt/lib/vfs
> 
> export LIBPATH
> 
> Now I get:
> 
> root at x069:[/data/prj/samba/samba-4.4.15]ldd /opt/sbin/samba
> /opt/sbin/samba needs:
>           /usr/lib/libpthread.a(shr_xpg5_64.o)
> Cannot find libldb.so
>           /opt/lib/libsamba-hostconfig.so
>           /opt/lib/private/libcluster-samba4.so
>           /opt/lib/libsamba-credentials.so

> 
> Night Night!
> 

Hi Michael -

I don't know if is a correct fix, but since Samba switched from autoconf 
to waf I've been patching buildtools/wafsamba/samba_install.py with the 
following changes for building on AIX, line numbers based on the version 
of samba_install.py shipped with Samba 4.4.6, but the patch didn't change 
when I built with newer versions.  I haven't tried building any 4.7 

1.  Modify the following code at line 121 - 128 so that the condition that 
does "dev_link     = bld.make_libname(target_name)" is run for all libs on 
AIX.

              install_name = bld.make_libname(target_name, 
version=self.vnum)
              install_link = bld.make_libname(target_name, 
version=vnum_base)
              inst_name    = bld.make_libname(t.target)
              if not self.private_library:
                  # only generate the dev link for non-bundled libs
                  dev_link     = bld.make_libname(target_name)
          elif getattr(self, 'soname', ''):
              install_name = bld.make_libname(target_name)


2.  Modify the following code at lines 330 - 336 so that the -bsrv4 option 
is included in the link flags, according the man page of ld on AIX the 
"-R" option is only supported when -bsrv4 is also passed.

 
      # check which compiler/linker flags are needed for rpath support
      if not conf.CHECK_LDFLAGS(['-Wl,-rpath,.']) and 
conf.CHECK_LDFLAGS(['-Wl,-R,.']):
         conf.env['RPATH_ST'] = '-Wl,-R,%s'
 
      # check for rpath
      if conf.CHECK_LIBRARY_SUPPORT(rpath=True):

When I build this way the resulting binaries work without setting LIBPATH, 
dump -H shows:

> dump -H /PREFIX/sbin/smbd 

/PREFIX/sbin/smbd:

                        ***Loader Section***
                      Loader Header Information
VERSION#         #SYMtableENT     #RELOCent        LENidSTR
0x00000001       0x00000130       0x000001c6       0x0000097d 

#IMPfilID        OFFidSTR         LENstrTBL        OFFstrTBL
0x00000067       0x000031e8       0x000015d1       0x00003b65 


                        ***Import File Strings***
INDEX  PATH                          BASE                MEMBER  
0      /PREFIX/lib/private:/PREFIX/lib:/usr/lib:/lib  
1                                    libpthread.a        shr_xpg5.o  
2                                    libsamba-util.so  
3                                    libsmbd-base-samba4.so  
4                                    libtime-basic-samba4.so  
5                                    libutil-setid-samba4.so  
6                                    libsamba-debug-samba4.so  
7                                    libgenrand-samba4.so  
8                                    libtalloc.so  
9                                    libreplace-samba4.so  
10                                   libsocket-blocking-samba4.so   
11                                   libtevent.so  
12                                   libsmbregistry-samba4.so  
13                                   libtalloc-report-samba4.so  
14                                   libprinting-migrate-samba4.so   
15                                   libgssapi-samba4.so  
16                                   libtevent-util.so  
17                                   libmessages-dgm-samba4.so  
18                                   libndr-samba-samba4.so  
19                                   libsamba-errors.so  
20                                   libnet-keytab-samba4.so  
21                                   libsamba-security-samba4.so  
22                                   libnetapi.so  
23                                   libsys-rw-samba4.so  
24                                   libsmbd-conn-samba4.so  
25                                   libsamba3-util-samba4.so  
26                                   libsamba-passdb.so  
27                                   libutil-tdb-samba4.so  
28                                   libnpa-tstream-samba4.so  
29                                   libcliauth-samba4.so  
30                                   libinterfaces-samba4.so  
31                                   libauth-sam-reply-samba4.so  
32                                   libpopt-samba3-samba4.so  
33                                   libtdb.so  
34                                   libmessages-util-samba4.so  
35                                   libauth-samba4.so  
36                                   liblibsmb-samba4.so  
37                                   libmsrpc3-samba4.so  
38                                   libserver-id-db-samba4.so  
39                                   libmsghdr-samba4.so  
40                                   libdbwrap-samba4.so  
41                                   libiov-buf-samba4.so  
42                                   libsmbconf.so  
43                                   libsamba-cluster-support-samba4.so    
 
44                                   libkrb5samba-samba4.so  
45                                   libdcerpc-samba-samba4.so  
46                                   libndr-krb5pac.so  
47                                   libsamba-sockets-samba4.so  
48                                   libndr.so  
49                                   libutil-reg-samba4.so  
50                                   libsmbd-shim-samba4.so  
51                                   libcli-spoolss-samba4.so  
52                                   libkrb5-samba4.so  
53                                   libroken-samba4.so  
54                                   libasn1-samba4.so  
55                                   libhcrypto-samba4.so  
56                                   libcom_err-samba4.so  
57                                   libwind-samba4.so  
58                                   libndr-standard.so  
59                                   libasn1util-samba4.so  
60                                   libndr-nbt.so  
61                                   libz-samba4.so  
62                                   libads-samba4.so  
63                                   liblibcli-netlogon3-samba4.so   
64                                   libutil-cmdline-samba4.so  
65                                   libwbclient.so  
66                                   libflag-mapping-samba4.so  
67                                   libsamba-credentials.so  
68                                   libsecrets3-samba4.so  
69                                   libsamba-hostconfig.so  
70                                   libpopt-samba4.so  
71                                   liblibcli-lsa3-samba4.so  
72                                   libtrusts-util-samba4.so  
73                                   libaddns-samba4.so  
74                                   libcli-ldap-common-samba4.so   
75                                   libcli-cldap-samba4.so  
76                                   libcli-smb-common-samba4.so  
77                                   libgse-samba4.so  
78                                   libgensec-samba4.so  
79                                   libdcerpc-binding.so  
80                                   libndr-samba4.so  
81                                   libtdb-wrap-samba4.so  
82                                   libCHARSET3-samba4.so  
83                                   libevents-samba4.so  
84                                   libheimbase-samba4.so  
85                                   libhx509-samba4.so  
86                                   libwinbind-client-samba4.so  
87                                   libldb.so  
88                                   libsamdb-common-samba4.so  
89                                   libldbsamba-samba4.so  
90                                   libauthkrb5-samba4.so  
91                                   libserver-role-samba4.so  
92                                   libcli-ldap-samba4.so  
93                                   libsmb-transport-samba4.so  
94                                   libsamba-modules-samba4.so  
95                                   libsamdb.so  
96                                   libcli-nbt-samba4.so  
97                                   libnetif-samba4.so  
98                                   libnsl.a            shr.o  
99                                   libbsd.a            shr.o  
100                                  libc.a              shr.o  
101                                  librtl.a            shr.o  
102    /                             unix 


John Janosik
jpjanosi at us.ibm.com



More information about the samba-technical mailing list