You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by tr...@apache.org on 2020/08/23 13:45:21 UTC
[openoffice] branch AOO418 updated: Merge r1851443,
r1851449 from trunk:
This is an automated email from the ASF dual-hosted git repository.
truckman pushed a commit to branch AOO418
in repository https://gitbox.apache.org/repos/asf/openoffice.git
The following commit(s) were added to refs/heads/AOO418 by this push:
new e250bff Merge r1851443, r1851449 from trunk:
e250bff is described below
commit e250bff13aa73689727285b870c09bdc2d166327
Author: Jim Jagielski <ji...@apache.org>
AuthorDate: Wed Jan 16 14:36:32 2019 +0000
Merge r1851443, r1851449 from trunk:
Use fakeroot instead of our custom getuid.c LD_PRELOAD hack if available when creating Debian packages. This is because epm and dpkg (et.al.) need to be fooled into thinking that root is creating these packages for the correct permissions.
As long as we have the full path, use it
Reviewed by: jim
git-svn-id: https://svn.apache.org/repos/asf/openoffice/branches/AOO42X@1851450 13f79535-47bb-0310-9956-ffa450edef68
---
main/configure.in | 5 +++++
main/set_soenv.in | 1 +
main/setup_native/scripts/source/getuid.c | 7 ++++---
main/solenv/bin/modules/installer/download.pm | 22 +++++++++++++++++++---
main/solenv/bin/modules/installer/epmfile.pm | 16 +++++++++++++---
main/solenv/bin/modules/installer/worker.pm | 14 ++++++++++++--
main/sysui/desktop/debian/makefile.mk | 8 +++++++-
7 files changed, 61 insertions(+), 12 deletions(-)
diff --git a/main/configure.in b/main/configure.in
index ae6a4ff..42eb26f 100644
--- a/main/configure.in
+++ b/main/configure.in
@@ -3548,9 +3548,14 @@ msi - Windows .msi
if test "$PKGMK" = "no"; then
AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
fi
+ AC_PATH_PROG(FAKEROOT, fakeroot, no)
+ if test "$FAKEROOT" = "no"; then
+ AC_MSG_WARN([fakeroot recommended for deb creation. Will try with getuid.so hack.])
+ fi
fi
AC_SUBST(RPM)
AC_SUBST(DPKG)
+ AC_SUBST(FAKEROOT)
AC_SUBST(PKGMK)
else
AC_MSG_RESULT([no])
diff --git a/main/set_soenv.in b/main/set_soenv.in
index c6d4525..643f259 100644
--- a/main/set_soenv.in
+++ b/main/set_soenv.in
@@ -1732,6 +1732,7 @@ ToFile( "ENABLE_HYPHEN", "@ENABLE_HYPHEN@", "e" );
ToFile( "PERL", $PERL, "e" );
ToFile( "RPM", "@RPM@", "e" );
ToFile( "DPKG", "@DPKG@", "e" );
+ToFile( "FAKEROOT", "@FAKEROOT@", "e" );
ToFile( "PKGMK", "@PKGMK@", "e" );
ToFile( "GNUMAKE", "@GNUMAKE@", "e" );
ToFile( "GNUTAR", "@GNUTAR@", "e" );
diff --git a/main/setup_native/scripts/source/getuid.c b/main/setup_native/scripts/source/getuid.c
index 45dfebb..8de313c 100644
--- a/main/setup_native/scripts/source/getuid.c
+++ b/main/setup_native/scripts/source/getuid.c
@@ -111,10 +111,11 @@ int fstatat64(int fildes, const char *path, struct stat64 *buf, int flag)
}
#elif defined LINUX
-uid_t getuid (void) {return 0;}
-uid_t geteuid (void) {return 0;}
+uid_t getuid (void) {return 0;}
+uid_t geteuid (void) {return 0;}
+int setgid (gid_t p) {return 0;}
-/* This is to fool tar */
+/* This is to fool epm, tar, dpkg, et.al. into thinking we are root */
#ifdef X86_64
int __lxstat(int n, const char *path, struct stat *buf)
{
diff --git a/main/solenv/bin/modules/installer/download.pm b/main/solenv/bin/modules/installer/download.pm
index 5fb7b8a..d145cc7 100644
--- a/main/solenv/bin/modules/installer/download.pm
+++ b/main/solenv/bin/modules/installer/download.pm
@@ -303,7 +303,12 @@ sub tar_package
my ( $installdir, $tarfilename, $getuidlibrary) = @_;
my $ldpreloadstring = "";
- if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
+
+ if ($ENV{'FAKEROOT'} ne "no") {
+ $ldpreloadstring = $ENV{'FAKEROOT'};
+ } else {
+ if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
+ }
my $systemcall = "cd $installdir; $ldpreloadstring tar -cf - * > $tarfilename";
@@ -367,8 +372,14 @@ sub create_tar_gz_file_from_package
$installer::globals::downloadfileextension = ".tar.gz";
my $targzname = $packagename . $installer::globals::downloadfileextension;
$installer::globals::downloadfilename = $targzname;
+
my $ldpreloadstring = "";
- if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
+
+ if ($ENV{'FAKEROOT'} ne "no") {
+ $ldpreloadstring = $ENV{'FAKEROOT'};
+ } else {
+ if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
+ }
my $systemcall = "cd $installdir; $ldpreloadstring tar -cf - $packagename | gzip > $targzname";
$installer::logger::Info->printf("... %s ...\n", $systemcall);
@@ -795,7 +806,12 @@ sub create_tar_gz_file_from_directory
installer::pathanalyzer::get_path_from_fullqualifiedname(\$changedir);
my $ldpreloadstring = "";
- if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
+
+ if ($ENV{'FAKEROOT'} ne "no") {
+ $ldpreloadstring = $ENV{'FAKEROOT'};
+ } else {
+ if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
+ }
$installer::globals::downloadfileextension = ".tar.gz";
$installer::globals::downloadfilename = $downloadfilename . $installer::globals::downloadfileextension;
diff --git a/main/solenv/bin/modules/installer/epmfile.pm b/main/solenv/bin/modules/installer/epmfile.pm
index c961d0e..c577ae2 100644
--- a/main/solenv/bin/modules/installer/epmfile.pm
+++ b/main/solenv/bin/modules/installer/epmfile.pm
@@ -887,10 +887,20 @@ sub get_ld_preload_string
my $getuidlibraryname = "getuid.so";
+ my $ldpreloadstring;
+
my $getuidlibraryref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$getuidlibraryname, $includepatharrayref, 0);
- if ($$getuidlibraryref eq "") { installer::exiter::exit_program("ERROR: Could not find $getuidlibraryname!", "get_ld_preload_string"); }
- my $ldpreloadstring = "LD_PRELOAD=" . $$getuidlibraryref;
+ if ($ENV{'FAKEROOT'} ne "no") {
+
+ $ldpreloadstring = $ENV{'FAKEROOT'};
+
+ } else {
+
+ if ($$getuidlibraryref eq "") { installer::exiter::exit_program("ERROR: Could not find $getuidlibraryname!", "get_ld_preload_string"); }
+
+ my $ldpreloadstring = "LD_PRELOAD=" . $$getuidlibraryref;
+ }
return $ldpreloadstring;
}
@@ -914,7 +924,7 @@ sub call_epm
my $outdirstring = "";
if ( $installer::globals::epmoutpath ne "" ) { $outdirstring = " --output-dir $installer::globals::epmoutpath"; }
- # Debian package build needs a LD_PRELOAD for correct rights
+ # Debian package build needs fakeroot or our LD_PRELOAD hack for correct rights
my $ldpreloadstring = "";
diff --git a/main/solenv/bin/modules/installer/worker.pm b/main/solenv/bin/modules/installer/worker.pm
index a348022..78e0dc7 100644
--- a/main/solenv/bin/modules/installer/worker.pm
+++ b/main/solenv/bin/modules/installer/worker.pm
@@ -3199,7 +3199,12 @@ sub tar_package
my ( $installdir, $packagename, $tarfilename, $getuidlibrary) = @_;
my $ldpreloadstring = "";
- if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
+
+ if ($ENV{'FAKEROOT'} ne "no") {
+ $ldpreloadstring = $ENV{'FAKEROOT'};
+ } else {
+ if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
+ }
my $systemcall = "cd $installdir; $ldpreloadstring tar -cf - $packagename > $tarfilename";
# my $systemcall = "cd $installdir; $ldpreloadstring tar -cf - * > $tarfilename";
@@ -3238,7 +3243,12 @@ sub untar_package
my ( $installdir, $tarfilename, $getuidlibrary) = @_;
my $ldpreloadstring = "";
- if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
+
+ if ($ENV{'FAKEROOT'} ne "no") {
+ $ldpreloadstring = $ENV{'FAKEROOT'};
+ } else {
+ if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
+ }
my $systemcall = "cd $installdir; $ldpreloadstring tar -xf $tarfilename";
diff --git a/main/sysui/desktop/debian/makefile.mk b/main/sysui/desktop/debian/makefile.mk
index b8873a7..de6d7d0 100644
--- a/main/sysui/desktop/debian/makefile.mk
+++ b/main/sysui/desktop/debian/makefile.mk
@@ -45,6 +45,12 @@ DEBFILES=$(foreach,i,{$(PRODUCTLIST)} $(PKGDIR)$/$i4.1-$(TARGET)-menus_$(PKGVERS
.ENDIF
+.IF "$(FAKEROOT)"!="no"
+FAKEROOT2="$(FAKEROOT)"
+.ELSE
+FAKEROOT2="LD_PRELOAD=$(SOLARBINDIR)/getuid.so"
+.ENDIF
+
# --- Targets -------------------------------------------------------
.INCLUDE : target.mk
@@ -85,7 +91,7 @@ $(DEBFILES) : makefile.mk control postinst postrm prerm
@chmod a+rx $(MISC)$/$(@:b)$/DEBIAN $(MISC)/$(@:b)/DEBIAN/post* $(MISC)/$(@:b)/DEBIAN/pre*
@chmod g-s $(MISC)/$(@:b)/DEBIAN
@mkdir -p $(PKGDIR)
- /bin/bash -c "LD_PRELOAD=$(SOLARBINDIR)/getuid.so dpkg-deb --build $(MISC)/$(@:b) $@"
+ /bin/bash -c "$(FAKEROOT2) dpkg-deb --build $(MISC)/$(@:b) $@"
$(RM) -r $(MISC)$/$(@:b)
# @chmod -R g+w $(MISC)/$(TARGET)/$(DEBFILE:f)