diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index e7b6cb31b..ff8efd4f0 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -13,6 +13,22 @@ +
The perl CA module makes use of a loadable library, which used to be loaded +from the base/lib/<host-arch> directory. However different versions of +Perl require different loadable library binaries as the Perl ABI can change. +Now the library will be installed into and loaded from the directory +base/lib/perl/<version>/<archname> where both <version> and +<archname> are taken from the Perl configuration. This makes it possible +for the same Perl script to be run on both RHEL5 and RHEL6 workstations say, even +though they use different versions of Perl.
+ +To achieve that, first build EPICS Base using the older OS version. Then +on a machine running the newer version, go into the base/src/cap5 directory and +run a make rebuild command. This will rebuild the libCap5.so file and +install it into the location appropriate for its Perl version and architecture.
+The build process can now construct universal binaries containing both ARMv6
diff --git a/src/cap5/CA.pm b/src/cap5/CA.pm
index 3aa7c7f51..ac6542e01 100644
--- a/src/cap5/CA.pm
+++ b/src/cap5/CA.pm
@@ -6,9 +6,6 @@ use warnings;
my $version = '0.4';
-exists $ENV{EPICS_HOST_ARCH}
- or die "EPICS_HOST_ARCH environment variable not set";
-
package CA;
@@ -26,12 +23,17 @@ package Cap5;
our $VERSION = $version;
our @ISA = qw(DynaLoader);
+# Library is specific to the Perl version and archname
+use Config;
+my $perl_version = $Config::Config{version};
+my $perl_archname = $Config::Config{archname};
+
require DynaLoader;
# Add our lib/