Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Feb 2015 06:01:58 +0000 (UTC)
From:      Don Lewis <truckman@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r379876 - head/editors/openoffice-4/files
Message-ID:  <201502250601.t1P61wnv093536@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: truckman
Date: Wed Feb 25 06:01:58 2015
New Revision: 379876
URL: https://svnweb.freebsd.org/changeset/ports/379876
QAT: https://qat.redports.org/buildarchive/r379876/

Log:
  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)

Added:
  head/editors/openoffice-4/files/patch-set_soenv.in   (contents, props changed)

Added: head/editors/openoffice-4/files/patch-set_soenv.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/openoffice-4/files/patch-set_soenv.in	Wed Feb 25 06:01:58 2015	(r379876)
@@ -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);
+ }
+ 
+ #------------------------------------------------------------



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201502250601.t1P61wnv093536>