[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FYI: support parallel installations [libtool--release--2.0--patch-68]
From: |
Gary V. Vaughan |
Subject: |
FYI: support parallel installations [libtool--release--2.0--patch-68] |
Date: |
Mon, 15 Nov 2004 00:49:26 +0000 (GMT) |
User-agent: |
mailnotify/0.6 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applied to branch-2-0 and HEAD.
* looking for address@hidden/libtool--release--2.0--patch-67 to compare with
* comparing to address@hidden/libtool--release--2.0--patch-67
M ChangeLog
M Makefile.am
M NEWS
M configure.ac
M doc/libtool.texi
M libltdl/Makefile.am
M libtoolize.m4sh
M libltdl/loaders/Makefile.am
* modified files
Index: Changelog
from Gary V. Vaughan <address@hidden>
* configure.ac (APIVERSION): New substituted variable.
(pkgvdatadir): Ditto. Versioned data directory.
(pkgvmacrodir): Ditto. Versioned aclocal directory.
(LN): New check for LN command.
* Makefile.am (aclocal_DATA): Replaced with...
(pkgvmacro_DATA): ...this.
(install-data-local): Remove old shared resources.
(install-exec-hook): Make versioned links to executables.
(uninstall-hook): Remove versioned files.
* libltdl/Makefile.am (ltdldatadir): Redefine in terms of
pkgvdatadir.
* libltdl/loaders/Makefile.am (ltdldatadir): Ditto.
* libtoolize.m4sh: Copy macro files from versioned macro directory
instead of shared aclocal directory.
* doc/libtool.texi: Document it.
* NEWS: Updated.
--- orig/Makefile.am
+++ mod/Makefile.am
@@ -28,11 +28,12 @@
-e 's,@PACKAGE\@,$(PACKAGE),g' \
-e 's,@SED\@,$(SED),g' \
-e 's,@VERSION\@,$(VERSION),g' \
- -e 's,@prefix\@,$(prefix),g' \
- -e 's,@datadir\@,$(datadir),g' \
- -e 's,@pkgdatadir\@,$(pkgdatadir),g' \
-e 's,@aclocaldir\@,$(aclocaldir),g' \
+ -e 's,@datadir\@,$(datadir),g' \
-e 's,@host_triplet\@,$(host_triplet),g' \
+ -e 's,@pkgvdatadir\@,$(pkgvdatadir),g' \
+ -e 's,@pkgvmacrodir\@,$(pkgvmacrodir),g' \
+ -e 's,@prefix\@,$(prefix),g' \
-e "s,@configure_input\@,Generated from $$input; do not edit by hand,g"
timestamp = set -- `$(MKSTAMP) < $(top_srcdir)/ChangeLog`; \
@@ -56,13 +57,13 @@
# These are required by libtoolize and must be executable when installed.
# Since _SCRIPTS gets the program transform applied we make them
# executable by hand
-dist_pkgdata_DATA = config/config.guess config/config.sub config/ltmain.sh
+dist_pkgvdata_DATA = config/config.guess config/config.sub config/ltmain.sh
# Everything that gets picked up by aclocal is automatically distributed,
# this is the list of macro files we install on the user's system.
-# NOTE: Ensure that PKGMACRO_FILES in libtoolize.in is updated if you
+# NOTE: Ensure that PKGVMACRO_FILES in libtoolize.in is updated if you
# change the contents of aclocal_DATA:
-aclocal_DATA = m4/argz.m4 m4/libtool.m4 m4/ltdl.m4 \
+pkgvmacro_DATA = m4/argz.m4 m4/libtool.m4 m4/ltdl.m4 \
m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4
## We know that $(top_srcdir)/ChangeLog has been edited if stamp-vcl
@@ -182,12 +183,37 @@
(cd $$dir && $$abs_srcdir/$$dir/configure) || exit 1
install-data-local:
-## Don't install over the top of an old pkgdatadir
+## Don't install over the top of an old pkgvdatadir
+ -rm -rf $(DESTDIR)$(pkgvdatadir)
+## Remove old pkgdatadir
-rm -rf $(DESTDIR)$(pkgdatadir)
+## Remove old macro definitions
+ -rm -rf $(DESTDIR)$(aclocaldir)/ltdl.m4
+ -rm -rf $(DESTDIR)$(aclocaldir)/libtool.m4
install-data-hook:
- chmod +x $(DESTDIR)$(pkgdatadir)/config.guess
- chmod +x $(DESTDIR)$(pkgdatadir)/config.sub
+ chmod +x $(DESTDIR)$(pkgvdatadir)/config.guess
+ chmod +x $(DESTDIR)$(pkgvdatadir)/config.sub
+
+## Make versioned links. We only run the transform on the root name;
+## then we make a versioned link with the transformed base name. This
+## seemed like the most reasonable approach.
+install-exec-hook:
+ @$(POST_INSTALL)
+ @for p in $(bin_SCRIPTS); do \
+ f="`echo $$p|sed '$(transform)'`"; \
+ fv="$$f-$(APIVERSION)"; \
+ rm -f $(DESTDIR)$(bindir)/$$fv; \
+ echo " $(LN) $(DESTDIR)$(bindir)/$$f $(DESTDIR)$(bindir)/$$fv"; \
+ $(LN) $(DESTDIR)$(bindir)/$$f $(DESTDIR)$(bindir)/$$fv; \
+ done
+
+uninstall-hook:
+ @for p in $(bin_SCRIPTS); do \
+ f="`echo $$p|sed '$(transform)'`"; \
+ fv="$$f-$(APIVERSION)"; \
+ rm -f $(DESTDIR)$(bindir)/$$fv; \
+ done
## Ship README.alpha only in alpha release, but renamed to README
dist-hook:
--- orig/NEWS
+++ mod/NEWS
@@ -1,6 +1,13 @@
NEWS - list of user-visible changes between releases of GNU Libtool
New in 1.9h: 2004-??-??; CVS version 1.9g, Libtool team:
+* Libtool versions can now be parallel installed, except that only one
+ set of libltdl headers and static libs, and only one manual is retained.
+* In order for this to work, Libtool's aclocal macros are not installed
+ to a shared aclocal dir. Either change your Makefile.am to use:
+ ACLOCAL_AMFLAGS = -I /usr/share/libtool-1.9g/m4
+ Or change your configure.ac to use:
+ AC_CONFIG_MACRO_DIR([m4])
New in 1.9f: 2004-10-23; CVS version 1.9e, Libtool team:
* Calculate dllsearchpath correctly for wrapper scripts on cygwin.
--- orig/configure.ac
+++ mod/configure.ac
@@ -123,11 +123,19 @@
## ------------------------------- ##
## Libtool specific configuration. ##
## ------------------------------- ##
-pkgdatadir='${datadir}'"/${PACKAGE}"
-AC_SUBST([pkgdatadir]) # automake does not need this, but libtoolize does
-aclocaldir='${datadir}/aclocal'
-AC_SUBST([aclocaldir])
+# The API version is the base version. We must guarantee
+# compatibility for all releases with the same API version.
+# Our current rule is that:
+# * All releases, including the prereleases, in an X.Y series
+# are compatible. So 2.0.1c is compatible with 2.0.
+# * Prereleases on the trunk are all incompatible -- 2.1b and 2.1c
+# aren't the same.
+APIVERSION=`echo "$VERSION" | sed -e
's/^\([[0-9]]*\.[[0-9]]*[[a-z]]*\).*$/\1/'`
+AC_SUBST([APIVERSION])
+AC_SUBST([aclocaldir], ["\${prefix}/aclocal"])
+AC_SUBST([pkgvdatadir], ["\${datadir}/$PACKAGE-$APIVERSION"])
+AC_SUBST([pkgvmacrodir], ["\${datadir}/$PACKAGE-$APIVERSION/m4"])
AC_ARG_ENABLE(ltdl-install,
[AS_HELP_STRING([--disable-ltdl-install], [do not install libltdl])])
@@ -147,6 +155,22 @@
done
AC_SUBST([DIST_MAKEFILE_LIST])
+
+# Test for ln. We need use it to install the versioned binaries.
+AC_MSG_CHECKING([whether ln works])
+AC_CACHE_VAL([am_cv_prog_ln], [
+rm -f conftest conftest.file
+: >conftest.file
+if ln conftest.file conftest 2>/dev/null; then
+ am_cv_prog_ln=ln
+else
+ am_cv_prog_ln='cp -p'
+fi
+rm -f conftest conftest.file])
+AC_SUBST([LN], [$am_cv_prog_ln])
+result=no
+test "x$am_cv_prog_ln" = xln && result=yes
+AC_MSG_RESULT([$result])
## ---------------- ##
--- orig/doc/libtool.texi
+++ mod/doc/libtool.texi
@@ -2106,6 +2106,16 @@
your @code{AC_CONFIG_MACRO_DIR}, where @command{aclocal} can reference
them directly from @file{aclocal.m4}.
+Alternatively, if you want to keep all of your macros in a single
address@hidden, or if you are using an older Automake that doesn't
+support in-tree m4_include, you need to arrange for @command{aclocal}
+to look in the versioned Libtool directory. One way of doing this is
+to use @code{ACLOCAL_AMFLAGS} in your @file{Makefile.am}:
+
address@hidden
+ACLOCAL_AMFLAGS += -I $(prefix)/share/libtool-2.0/m4
address@hidden example
+
@node Distributing
@section Including libtool in your package
--- orig/libltdl/Makefile.am
+++ mod/libltdl/Makefile.am
@@ -67,7 +67,7 @@
## These are installed as a subdirectory of pkgdatadir so that
## libtoolize --ltdl can find them later:
-ltdldatadir = $(pkgdatadir)/libltdl
+ltdldatadir = $(pkgvdatadir)/libltdl
nobase_ltdldata_DATA = COPYING.LIB Makefile.am README configure.ac \
$(libltdl_la_SOURCES) $(libdlloader_la_SOURCES) \
lt__dirent.c lt__dirent.h argz_.h argz.c
--- orig/libltdl/loaders/Makefile.am
+++ mod/libltdl/loaders/Makefile.am
@@ -50,7 +50,7 @@
## These are installed as a subdirectory of pkgdatadir so that
## libtoolize --ltdl can find them later:
-ltdldatadir = $(pkgdatadir)/libltdl/loaders
+ltdldatadir = $(pkgvdatadir)/libltdl/loaders
ltdldata_DATA = Makefile.am dld_link.c dlopen.c dyld.c \
load_add_on.c loadlibrary.c shl_load.c
--- orig/libtoolize.m4sh
+++ mod/libtoolize.m4sh
@@ -79,8 +79,8 @@
# Locations for important files:
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
auxdir=
m4dir=
ltdldir=
@@ -299,8 +299,8 @@
test -f "$configure_ac" \
|| func_fatal_help "\`$configure_ac' does not exist"
- test -n "`cd $pkgdatadir && ls`" \
- || func_fatal_error "can not list files in \`$pkgdatadir'"
+ test -n "`cd $pkgvdatadir && ls`" \
+ || func_fatal_error "can not list files in \`$pkgvdatadir'"
# Set local variables to reflect contents of configure.ac
@@ -584,10 +584,10 @@
{
rerun_aclocal=false
- # NOTE: PKGMACRO_FILES must be kept in synch with aclocal_DATA in the
+ # NOTE: PKGVMACRO_FILES must be kept in synch with pkgvmacro_DATA in the
# libtool top_srcdir/Makefile.am (libtool.m4 and ltdl.m4 are handled
# specially below though, so don't add them here):
- pkgmacro_files='argz.m4:ltoptions.m4:ltsugar.m4:ltversion.m4'
+ pkgvmacro_files='argz.m4:ltoptions.m4:ltsugar.m4:ltversion.m4'
glob_exclude_pkgaux_files='config.guess|config.sub|ltmain.sh'
@@ -597,7 +597,7 @@
# Copy all the files from installed libltdl to this project, if the
# user specified `--ltdl'.
if test -n "$ltdldir"; then
- eval func_copy_all_files -r "$pkgdatadir/libltdl" "$ltdldir"
+ eval func_copy_all_files -r "$pkgvdatadir/libltdl" "$ltdldir"
# libtoolize the newly copied libltdl tree
( cd "$ltdldir" && "$progpath" $libtoolize_flags ) || exit $EXIT_FAILURE
@@ -609,17 +609,17 @@
func_echo "putting files in AC_CONFIG_AUX_DIR, \`$auxdir'."
fi
if $opt_install || $opt_force; then
- func_copy_all_files "$pkgdatadir" "$auxdir" "$glob_exclude_pkgaux_files"
- func_config_update "$pkgdatadir/config.guess" "$auxdir/config.guess"
- test -f "$pkgdatadir/config.sub" \
- && func_config_update "$pkgdatadir/config.sub" "$auxdir/config.sub"
+ func_copy_all_files "$pkgvdatadir" "$auxdir" "$glob_exclude_pkgaux_files"
+ func_config_update "$pkgvdatadir/config.guess" "$auxdir/config.guess"
+ test -f "$pkgvdatadir/config.sub" \
+ && func_config_update "$pkgvdatadir/config.sub" "$auxdir/config.sub"
fi
- func_ltmain_update "$pkgdatadir/ltmain.sh" "$auxdir/ltmain.sh"
+ func_ltmain_update "$pkgvdatadir/ltmain.sh" "$auxdir/ltmain.sh"
# Copy libtool's m4 macros to the macro directory, if they are newer.
if test -n "$m4dir"; then
- libtool_m4="$aclocaldir/libtool.m4"
- ltdl_m4="$aclocaldir/ltdl.m4"
+ libtool_m4="$pkgvmacrodir/libtool.m4"
+ ltdl_m4="$pkgvmacrodir/ltdl.m4"
$opt_quiet || func_echo "putting macros in AC_CONFIG_MACRO_DIR,
\`$m4dir'."
@@ -632,7 +632,7 @@
func_verbose "Not copying \`$ltdl_m4', libltdl not used."
fi
- func_copy_some_files "$aclocaldir" "$pkgmacro_files" \
+ func_copy_some_files "$pkgvmacrodir" "$pkgvmacro_files" \
"$m4dir" func_serial_update
fi
}
- --
Gary V. Vaughan ())_. address@hidden,gnu.org}
Research Scientist ( '/ http://tkd.kicks-ass.net
GNU Hacker / )= http://www.gnu.org/software/libtool
Technical Author `(_~)_ http://sources.redhat.com/autobook
_________________________________________________________
This patch notification generated by tlaapply version 0.9
http://tkd.kicks-ass.net/arch/address@hidden/cvs-utils--tla--1.0
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Darwin)
iD8DBQFBl/0VFRMICSmD1gYRAl6/AJ0YoS/tGp8vvJqKmabhP3qDJ0kT2wCeMyIw
uG+5CchMqwaa2OaqFNeo8Jk=
=nJiB
-----END PGP SIGNATURE-----