[Date Prev][Date Next] [Chronological] [Thread] [Top]

1.2.10 build problems under Digital UNIX 4.0D (ITS#590)



Full_Name: The Written Word (support)
Version: 1.2.10
OS: Digital UNIX 4.0D
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (216.80.72.157)


When building libbackends.a in servers/slapd, Digital UNIX 4.0D gives
the error:
gmake[5]: Entering directory
`/opt/build/openldap-1.2.10/servers/slapd'
ar: Warning: creating libbackends.a
a - ldbmabandon.o
a - ldbmadd.o
a - ldbmalias.o
a - ldbmattr.o
a - ldbmbind.o
a - ldbmcache.o
a - ldbmclose.o
a - ldbmcompare.o
a - ldbmconfig.o
a - ldbmdbcache.o
a - ldbmdelete.o
a - ldbmdn2id.o
a - ldbmfilterindex.o
a - ldbmgroup.o
a - ldbmid2children.o
a - ldbmid2entry.o
a - ldbmidl.o
a - ldbmindex.o
a - ldbminit.o
a - ldbmkerberos.o
a - ldbmmodify.o
a - ldbmmodrdn.o
a - ldbmnextid.o
a - ldbmsearch.o
a - ldbmunbind.o
a - ldbmversion.o
added backend library back-ldbm/libback-ldbm.a
ar: Error: ________64ELEL_ cannot create
a - passwdconfig.o
a - passwdsearch.o
a - passwdversion.o
added backend library back-passwd/libback-passwd.a
ar: Error: ________64ELEL_ cannot create
a - shellabandon.o
a - shelladd.o
a - shellbind.o
a - shellcompare.o
a - shellconfig.o
a - shelldelete.o
a - shellfork.o
a - shellinit.o
a - shellmodify.o
a - shellmodrdn.o
a - shellresult.o
a - shellsearch.o
a - shellunbind.o
a - shellversion.o
added backend library back-shell/libback-shell.a
-rw-rw-r--   1 china    src      2453018 May 18 21:27 libbackends.a

The following code snippet from servers/slapd/Makefile builds
libbackends.a:
libbackends.a: .backend
        @$(RM) -r tmp
        @$(MKDIR) tmp
        @-for i in back-*/*.a; do \
                ( \
                  cd tmp; \
                  $(AR) x ../$$i; \
                  pre=`echo $$i | sed -e 's/\/.*$$//' -e 's/back-//'`; \
                  for j in *.o; do \
                        mv $$j $${pre}$$j; \
                  done; \
                  $(AR) ruv libbackends.a *.o 2>&1 | grep -v truncated; \
                  $(RM) *.o __.SYMDEF; \
                  echo "added backend library $$i"; \
                ); \
        done
        @mv -f tmp/libbackends.a ./libbackends.a
        @$(RM) -r tmp
        @if [ ! -z "$(RANLIB)" ]; then \
                $(RANLIB) libbackends.a; \
        fi
        @ls -l libbackends.a

The contents of one of the back-*/*.a files (say
back-passwd/libback-passwd.a) is:
  % ar t back-passwd/libback-passwd.a
  ________64ELEL_
  search.o
  config.o
  version.o
When extracting the files in this archive (as is done in the code
snippet above), "________64ELEL_" is created with permission 000. So,
there is no error when the first back-*/*.a file is extracted. When
the second is extracted, it tries to overwrite tmp/________64ELEL_
which is not allowed, hence the "ar: Error: ________64ELEL_ cannot
create" error in the error above. The patch attached fixes the
problem.

-- snip snip
--- servers/slapd/Makefile.in.orig      Fri May 19 09:38:41 2000
+++ servers/slapd/Makefile.in   Fri May 19 09:38:52 2000
@@ -64,7 +64,7 @@
                        mv $$j $${pre}$$j; \
                  done; \
                  $(AR) ruv libbackends.a *.o 2>&1 | grep -v truncated; \
-                 $(RM) *.o __.SYMDEF; \
+                 $(RM) *.o __.SYMDEF ________64ELEL_; \
                  echo "added backend library $$i"; \
                ); \
        done