use_versioned_archname => versionedarchname
authorH.Merijn Brand - Tux <h.m.brand@xs4all.nl>
Fri, 15 Feb 2013 14:15:06 +0000 (15:15 +0100)
committerH.Merijn Brand - Tux <h.m.brand@xs4all.nl>
Fri, 15 Feb 2013 14:15:06 +0000 (15:15 +0100)
backport of ba95ddbf39c3f4434439

This patch adds 'use_versioned_archname' as a Configure option.
When set, it includes 'api_versionstring' in 'archname'. E.g.
x86_64-linux-5.13.6-thread-multi.  It is unset by default.

This feature was requested by Tim Bunce, who observed that
INSTALL_BASE creates a library structure that does not
differentiate by perl version.  Instead, it places architecture
specific files in "$install_base/lib/perl5/$archname".  This makes
it difficult to use a common INSTALL_BASE library path with
multiple versions of perl.

By setting -Duse_versioned_archname, the $archname will be
distinct for architecture *and* API version, allowing mixed use of
INSTALL_BASE.

This patch demonstrates the desired effect for discussion.  Actual
changes would need to be made upstream in metaconfig and
integrated back into blead.

U/threads/archname.U

index e80140a..adff0dd 100644 (file)
 ?RCS: Revision 3.0.1.1  1995/02/15  14:14:21  ram
 ?RCS: patch51: created
 ?RCS:
-?MAKE:archname myarchname: sed Loc Myread Oldconfig osname test rm \
-       usethreads usemultiplicity use64bitint use64bitall archname64 \
-       uselongdouble longdblsize doublesize targetarch
+?MAKE:archname myarchname useversionedarchname: sed Loc Myread Oldconfig \
+       osname test rm usethreads usemultiplicity use64bitint use64bitall \
+       archname64 uselongdouble longdblsize doublesize targetarch Setvar \
+       api_versionstring
 ?MAKE: -pick add $@ %<
 ?S:archname:
 ?S:    This variable is a short name to characterize the current
 ?S:    a previous run. It is not intended to be perused by any user and
 ?S:    should never be set in a hint file.
 ?S:.
+?S:useversionedarchname:
+?S:    This variable indicates whether to include the $api_versionstring
+?S:    as a component of the $archname.
+?S:.
 ?C:ARCHNAME:
 ?C:    This symbol holds a string representing the architecture name.
 ?C:    It may be used to construct an architecture-dependant pathname
@@ -82,6 +87,32 @@ esac
 rp='What is your architecture name'
 . ./myread
 archname="$ans"
+
+: optionally add api version to the architecture for versioned archlibs
+case "$useversionedarchname" in
+$define|true|[yY]*) dflt='y';;
+*)                  dflt='n';;
+esac
+rp='Add the Perl API version to your archname?'
+. ./myread
+case "$ans" in
+y|Y)   useversionedarchname="$define" ;;
+*)      useversionedarchname="$undef" ;;
+esac
+case "$useversionedarchname" in
+$define)
+        case "$archname" in
+        *-$api_versionstring)
+                echo "...and architecture name already has -$api_versionstring" >&4
+                ;;
+        *)
+                archname="$archname-$api_versionstring"
+                echo "...setting architecture name to $archname." >&4
+                ;;
+        esac
+        ;;
+esac
+
 @if usethreads
 case "$usethreads" in
 $define)