This is a live mirror of the Perl 5 development currently hosted at
use_versioned_archname => versionedarchname
authorH.Merijn Brand - Tux <>
Fri, 15 Feb 2013 14:15:06 +0000 (15:15 +0100)
committerH.Merijn Brand - Tux <>
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

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


index e80140a..adff0dd 100644 (file)
 ?RCS: Revision  1995/02/15  14:14:21  ram
 ?RCS: patch51: created
-?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:    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:    This variable indicates whether to include the $api_versionstring
+?S:    as a component of the $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
+: optionally add api version to the architecture for versioned archlibs
+case "$useversionedarchname" in
+$define|true|[yY]*) dflt='y';;
+*)                  dflt='n';;
+rp='Add the Perl API version to your archname?'
+. ./myread
+case "$ans" in
+y|Y)   useversionedarchname="$define" ;;
+*)      useversionedarchname="$undef" ;;
+case "$useversionedarchname" in
+        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
+        ;;
 @if usethreads
 case "$usethreads" in