aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortruckman <truckman@FreeBSD.org>2015-02-25 14:01:58 +0800
committertruckman <truckman@FreeBSD.org>2015-02-25 14:01:58 +0800
commit79fea57670fccfe4c7abc27b498f9c5b8ca1cec0 (patch)
treefcaf359642ba271005a58b0364266a76fdce35cf
parentb74649b0848d73322941b67f75ffb0a4be1be002 (diff)
downloadfreebsd-ports-gnome-79fea57670fccfe4c7abc27b498f9c5b8ca1cec0.tar.gz
freebsd-ports-gnome-79fea57670fccfe4c7abc27b498f9c5b8ca1cec0.tar.zst
freebsd-ports-gnome-79fea57670fccfe4c7abc27b498f9c5b8ca1cec0.zip
Fix build breakage when libreoffice is installed.
The problem is that libreoffice installs its own copy of unopkg in ${PREFIX}/bin and that the openoffice build attempts to use this copy of unopkg instead of the openoffice version which is in subdirectory of ${WRKSRC}. The reason is that the openoffice build expects to find its own copy of unopkg by depending on having "." in its $PATH, but its $PATH has ${PREFIX}/bin before ".". Openoffice attempts to do the right thing by first constructing $PATH by prepending "." and a small number of other directories where it stashes executables used during the build to the value of $PATH that it inherits from the environment. Things go wrong when it tries to add the paths for ${CC}, perl, and java to $PATH. If $PATH has /usr/bin before ${PREFIX}/bin, the openoffice build finds the perl symlink in /usr/bin before it finds perl in ${PREFIX}/bin, so it prepends ${PREFIX}/bin to $PATH to try to ensure that the correct version of perl will be found first. This moves ${PREFIX}/bin earlier in $PATH than ".". The operation to put the path to ${CC} in $PATH has a different problem. It uses the variable COMPATH for this, which is the dirname of the patch to $CC, with the trailing /bin stripped off. That results in /usr/local being added to $PATH, which is nonsensical, though mostly harmless. There are three fixes here: * Always keep the parts of $PATH for the directories under ${WRKSRC}, including "." at the beginning of the path. * Ignore symlinks to executables when deciding to prepend a directory to the path. * Append "/bin" when using COMPATH so that the result points to the directory where ${CC} actually resides. There is actually another variable CC_PATH, but it has an extra trailing "/", so it doesn't match ${PREFIX}/bin. PR: 195967 Differential Revision: https://reviews.freebsd.org/D1957 Approved by: mat (mentor)
-rw-r--r--editors/openoffice-4/files/patch-set_soenv.in79
1 files changed, 79 insertions, 0 deletions
diff --git a/editors/openoffice-4/files/patch-set_soenv.in b/editors/openoffice-4/files/patch-set_soenv.in
new file mode 100644
index 000000000000..e03a7829946d
--- /dev/null
+++ b/editors/openoffice-4/files/patch-set_soenv.in
@@ -0,0 +1,79 @@
+--- set_soenv.in.orig 2015-01-17 23:35:07.000000000 -0800
++++ set_soenv.in 2015-02-23 16:02:44.000000000 -0800
+@@ -359,7 +359,7 @@
+ elsif ( $platform =~ m/freebsd/ )
+ { $BIG_SVX = "TRUE";
+ $COM = "GCC";
+- $COMPATH = '@COMPATH@';
++ $COMPATH = '@COMPATH@' . '/bin';
+ $CVER = "C300";
+ $GUI = "UNX";
+ $GUIBASE = "unx";
+@@ -2617,26 +2617,37 @@
+ my @originalPairs = @_;
+ my @pairs = @originalPairs;
+ my @Path = split /$ps/, $oldPath;
++ my @buildPath;
++ my @sysPath;
++ my $elem;
++
++ for $elem (@Path) {
++ if ($elem eq '.' || $elem =~ m'^$SOLARENV/' ||
++ $elem =~ m'/solenv/') {
++ push @buildPath, $elem;
++ } else {
++ push @sysPath, $elem;
++ }
++ }
+
+ while (@pairs) {
+ my $path = shift @pairs;
+ my $cmd = shift @pairs;
+ my $to_append = 1;
+- my $elem;
+
+ if (! -x "$path/$cmd") {
+ AddWarning ("Missing executable $path/$cmd\n");
+ }
+
+- for $elem (@Path) {
++ for $elem (@sysPath) {
+ if ($elem eq $path) {
+ # print "Hit duplicate path in path; break\n";
+ $to_append = 0;
+ last;
+ }
+- if (-f "$elem/$cmd") {
++ if (-f "$elem/$cmd" && ! -l "$elem/$cmd") {
+ # print "Element already in path ...\n";
+- unshift @Path, $path;
++ unshift @sysPath, $path;
+ $to_append = 0;
+ last;
+ } else {
+@@ -2644,7 +2655,7 @@
+ }
+ }
+ if ($to_append) {
+- push @Path, $path;
++ push @sysPath, $path;
+ }
+ }
+
+@@ -2654,14 +2665,14 @@
+ my $cmd = shift @pairs;
+ my $realpath;
+
+- $realpath = PathLookup ($cmd, @Path);
++ $realpath = PathLookup ($cmd, @sysPath);
+ if (!($realpath eq $path)) {
+ AddWarning ("Path conflict for executables " .
+ "$path/$cmd against $realpath");
+ }
+ }
+
+- return join $ps, CleanupPath (@Path);
++ return join $ps, @buildPath, CleanupPath (@sysPath);
+ }
+
+ #------------------------------------------------------------