diff options
-rwxr-xr-x | debian/rules | 11 | ||||
-rw-r--r-- | doc/CHANGES | 3 | ||||
-rw-r--r-- | include/builddefs.in | 27 | ||||
-rwxr-xr-x | install-sh | 112 |
4 files changed, 132 insertions, 21 deletions
diff --git a/debian/rules b/debian/rules index c2e1915..dc0b3ed 100755 --- a/debian/rules +++ b/debian/rules @@ -7,7 +7,7 @@ dirtmp = debian/tmp dirdev = debian/$(develop) pkgtmp = DIST_ROOT=`pwd`/$(dirtmp); export DIST_ROOT; pkgdev = DIST_ROOT=`pwd`/$(dirdev); export DIST_ROOT; -stdenv = GZIP=-q; export GZIP; +stdenv = @GZIP=-q; export GZIP; options = DEBUG="-DNDEBUG"; OPTIMIZER="-O1 -g"; DISTRIBUTION="debian"; \ export DEBUG OPTIMIZER DISTRIBUTION; @@ -36,6 +36,11 @@ clean: binary-indep: +# Note1: dev pkg with .so symlinks to base pkg confuses debstd; +# so the .so 'Dangling symlink' message is benign. +# Note2: absolute symlinks (required by policy) confuse debstd; +# so we'll filter out symlink messages entirely now. +# binary-arch: checkroot built @echo "== dpkg-buildpackage: binary-arch" 1>&2 $(checkdir) @@ -44,9 +49,7 @@ binary-arch: checkroot built $(pkgdev) $(MAKE) -C . install-dev $(pkgtmp) $(MAKE) -C build src-manifest @echo "== dpkg-buildpackage: debstd" 1>&2 - # Note: dev pkg with .so symlinks to base pkg confuses debstd; - # so the .so 'Dangling symlink' message below is benign. - $(stdenv) debstd -m + $(stdenv) debstd -m | grep -v 'Dangling symlink' dpkg-gencontrol -isp -p$(package) -P$(dirtmp) dpkg-gencontrol -isp -p$(develop) -P$(dirdev) chown -R root.root $(dirtmp) $(dirdev) diff --git a/doc/CHANGES b/doc/CHANGES index c35acfc..451a120 100644 --- a/doc/CHANGES +++ b/doc/CHANGES @@ -2,6 +2,9 @@ attr-1.1.0 (16 Jul 2001) - reworked Makefiles to use libtool - rework some of the Debian packaging rules - install attr command into /usr/bin, not /bin + - libattr now installed into /lib instead of /usr/lib + as it is needed by xfsdump and xfsrestore which must + be available for recovery when only root is mounted attr-1.0.4 (02 Jul 2001) - work around syscall number collision on recent ia64 kernels diff --git a/include/builddefs.in b/include/builddefs.in index f8f77af..358fece 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -110,45 +110,44 @@ MAKEF = $(MAKE) $(MAKEOPTS) CXXF = $(CXX) $(CXXFLAGS) LDF = $(LD) $(LDFLAGS) -# For libtool. Pieces from Automake, slightly modified. -top_builddir = $(TOPDIR) +# For libtool. DIRT += $(LTOBJECTS) $(LTLIBRARY) LTLINK = $(LIBTOOL) --mode=link $(CC) LTEXEC = $(LIBTOOL) --mode=execute LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) LTCOMPILE = $(LIBTOOL) --mode=compile $(CCF) -D_REENTRANT -LTVERSION = $(LT_CURRENT).$(LT_REVISION).$(LT_AGE) +LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) LTOBJECTS = $(OBJECTS:.o=.lo) ifeq ($(ENABLE_SHARED),yes) -LTLDFLAGS += -rpath $(PKG_LIB_DIR) -LTLDFLAGS += -version-info $(subst .,:,$(LTVERSION)) +LTLDFLAGS += -rpath $(PKG_SLIB_DIR) +LTLDFLAGS += -version-info $(LTVERSION) endif LIBNAME = $(basename $(LTLIBRARY)) ifeq ($(ENABLE_SHARED),yes) INSTALL_LTLIB = \ cd $(TOPDIR)/$(LIBNAME)/.libs; \ - ../$(INSTALL) -m 755 -d $(PKG_LIB_DIR); \ - ../$(INSTALL) -m 644 $(LIBNAME).so.$(LTVERSION) $(PKG_LIB_DIR); \ + ../$(INSTALL) -m 755 -d $(PKG_SLIB_DIR); \ + ../$(INSTALL) -m 644 -T so_dot_version $(LIBNAME).lai $(PKG_SLIB_DIR); \ test "$(PKG_DISTRIBUTION)" = debian || \ - ../$(INSTALL) -S $(LIBNAME).so.$(LTVERSION) $(PKG_LIB_DIR)/$(LIBNAME).so.$(LT_CURRENT) + ../$(INSTALL) -T so_dot_current $(LIBNAME).lai $(PKG_SLIB_DIR) endif ifeq ($(ENABLE_SHARED),yes) INSTALL_LTLIB_DEV = \ cd $(TOPDIR)/$(LIBNAME)/.libs; \ - ../$(INSTALL) -m 755 -d $(PKG_LIB_DIR); \ - ../$(INSTALL) -m 644 $(LIBNAME).a $(PKG_LIB_DIR); \ - ../$(INSTALL) -m 644 $(LIBNAME).lai $(PKG_LIB_DIR)/$(LIBNAME).la; \ - ../$(INSTALL) -S $(LIBNAME).so.$(LT_CURRENT) $(PKG_LIB_DIR)/$(LIBNAME).so + ../$(INSTALL) -m 755 -d $(PKG_SLIB_DIR); \ + ../$(INSTALL) -m 644 -T old_lib $(LIBNAME).lai $(PKG_SLIB_DIR); \ + ../$(INSTALL) -m 644 $(LIBNAME).lai $(PKG_SLIB_DIR)/$(LIBNAME).la ; \ + ../$(INSTALL) -T so_base $(LIBNAME).lai $(PKG_SLIB_DIR) else INSTALL_LTLIB_DEV = $(INSTALL_LTLIB_STATIC) endif INSTALL_LTLIB_STATIC = \ cd $(TOPDIR)/$(LIBNAME)/.libs; \ - ../$(INSTALL) -m 755 -d $(PKG_LIB_DIR); \ - ../$(INSTALL) -m 644 $(LIBNAME).a $(PKG_LIB_DIR) + ../$(INSTALL) -m 755 -d $(PKG_SLIB_DIR); \ + ../$(INSTALL) -m 644 -T old_lib $(LIBNAME).lai $(PKG_SLIB_DIR) INSTALL_MAN = \ @for d in $(MAN_PAGES); do \ @@ -58,6 +58,7 @@ _usage() { echo "or $prog [-D] [-o owner] [-g group] [-m mode] file directory/file" echo "or $prog [-o owner] [-g group] [-m mode] file [file ...] directory" echo "or $prog -S file target (creates \"target\" symlink)" + echo "or $prog -T lt_arg [-o owner] [-g group] [-m mode] libtool.lai directory" echo "" echo "The \$DIST_MANIFEST and \$DIST_ROOT environment variables affect the" echo "behaviour of this command - see comments in the script." @@ -75,13 +76,13 @@ _chown () _st=$? if [ $_st -ne 0 ] ; then if [ $REAL_UID != '0' ] ; then - if [ ! -f $DIST_ROOT/.chown.quite ] ; then + if [ ! -f $DIST_ROOT/.chown.quiet ] ; then echo '===============================================' echo Ownership of files under ${DIST_ROOT:-/} echo cannot be changed echo '===============================================' if [ -n "$DIST_ROOT" ] ; then - touch $DIST_ROOT/.chown.quite + touch $DIST_ROOT/.chown.quiet fi fi _st=0 @@ -103,6 +104,7 @@ HERE=`pwd` dflag=false Dflag=false Sflag=false +Tflag=false DIRMODE=755 FILEMODE=644 OWNER=`id -u` @@ -127,7 +129,7 @@ fi [ -n "$DIST_ROOT" -a $REAL_UID -ne 0 ] && CHOWN=true -while getopts "Dcm:d:S:o:g:" c $* +while getopts "Dcm:d:S:o:g:T:" c $* do case $c in c) @@ -153,6 +155,10 @@ do dir=$DIST_ROOT/$OPTARG dflag=true ;; + T) + lt_install=$OPTARG + Tflag=true + ;; *) _usage ;; @@ -194,6 +200,106 @@ then $LN -s -f $symlink $target status=$? $MANIFEST l $symlink ${target#$DIST_ROOT} +elif $Tflag +then + # + # -T (install libs built by libtool) + # + if [ $# -ne 2 ] + then + _usage + else + libtool_lai=$1 + # source the libtool variables + if [ ! -f $libtool_lai ] + then + echo "$prog: Unable to find libtool library file $libtool_lai" + exit 2 + fi + . $libtool_lai + target=$DIST_ROOT/$2 + fi + case $lt_install in + so_dot_version) + # Loop until we find libfoo.so.x.y.z, then break out. + for solib in $library_names + do + # does it have enough parts? libfoo.so.x.y.z == 5 + cnt=`echo "$solib" | sed -e 's/\./ /g' | wc -w` + if [ $cnt -eq 5 ] + then + install_name=$target/$solib + $CP $solib $install_name + status=$? + $MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$solib ${install_name#$DIST_ROOT} + break + fi + done + ;; + + so_*) + case $lt_install in + so_dot_current) + # ln -s libfoo.so.x.y.z to libfoo.so.x + from_parts=5 # libfoo.so.x.y.z + to_parts=3 # libfoo.so.x + ;; + so_base) + # ln -s libfoo.so.x to libfoo.so + from_parts=3 # libfoo.so.x + to_parts=2 # libfoo.so + ;; + *) + echo "$prog: -T $lt_install invalid" + exit 2 + ;; + esac + + # Loop until we find the names, then break out. + for solib in $library_names + do + # does it have enough parts? + cnt=`echo "$solib" | sed -e 's/\./ /g' | wc -w` + if [ $cnt -eq $from_parts ] + then + from_name=$solib + elif [ $cnt -eq $to_parts ] + then + to_name=$solib + fi + + if [ -n "$from_name" ] && [ -n "$to_name" ] + then + install_name=$target/$to_name + $LN -s -f $from_name $install_name + status=$? + $MANIFEST l $from_name ${install_name#$DIST_ROOT} + break + fi + done + ;; + old_lib) + install_name=$target/$old_library + $CP $old_library $install_name + status=$? + $MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$old_library ${install_name#$DIST_ROOT} + ;; + *) + echo "$prog: -T $lt_install invalid" + exit 2 + ;; + esac + + case $lt_install in + old_lib|so_dot_version) + if [ $status -eq 0 ] + then + $CHMOD $FILEMODE $install_name + $CHOWN $OWNER $GROUP $install_name + fi + ;; + esac + else list="" dir="" |