2015-04-08 09:22:42 -05:00
|
|
|
#!/bin/bash
|
|
|
|
|
2015-06-08 08:58:34 -05:00
|
|
|
test $# -eq 2 || { echo "Usage: $0 <chroot template directory for system libs to create> <LO installation directory>"; exit 1; }
|
2015-04-08 09:22:42 -05:00
|
|
|
|
|
|
|
# No provision for spaces or other weird characters in pathnames. So sue me.
|
|
|
|
|
|
|
|
CHROOT=$1
|
|
|
|
INSTDIR=$2
|
|
|
|
|
2015-08-14 03:30:45 -05:00
|
|
|
test -d "$INSTDIR" || { echo "No such directory: $INSTDIR"; exit 1; }
|
|
|
|
|
2017-09-22 10:04:29 -05:00
|
|
|
mkdir -p $CHROOT || exit 1
|
2015-04-08 09:22:42 -05:00
|
|
|
|
2015-04-29 07:02:59 -05:00
|
|
|
CHROOT=`cd $CHROOT && /bin/pwd`
|
|
|
|
INSTDIR=`cd $INSTDIR && /bin/pwd`
|
|
|
|
|
|
|
|
cd / || exit 1
|
2015-04-08 09:22:42 -05:00
|
|
|
|
|
|
|
(
|
2016-01-14 11:14:35 -06:00
|
|
|
# Produce a list of file names, one per line, that will be copied
|
|
|
|
# into the template tree of system files for the chroot jails.
|
|
|
|
|
|
|
|
# First essential files and shared objects
|
2018-11-01 11:25:44 -05:00
|
|
|
find etc/hosts etc/nsswitch.conf etc/resolv.conf \
|
2018-11-01 11:17:40 -05:00
|
|
|
etc/ld.so.* \
|
2018-03-10 10:00:57 -06:00
|
|
|
lib/ld-* lib64/ld-* \
|
Fix domain name resolution from jail by adding required libs to systemplate
Originally all was good, then ad21717498cc214d5d5d5c0ff378238552137e2f
removed these files from jail, therefore name resolution broke, then
ac7d67f43e2b82dcc841ca2ecae91e668eb90613 added back libnss_* libs from one location, which
happened to work on developer's computer, then 4e5528e5f8b6abbd9ca715d5ac0ec410cbc783af,
b4f15c714ae5fb5208f4267a76effe8c4f54a4e7, and 9c0ab7215568b53ce4a26de00900f9c6fa36b508
added back etc/hosts etc/nsswitch.conf etc/resolv.conf that were also needed for proper
name resolution, finally this patch adds some more possible locations of Name Service
Switch (NSS) libs, therefore it makes sure that the required libnss_* shared libs
are found e.g. on Debian based systems. Also, testing with libreoffice/online docker image
has shown that libresolv.so.2 is also required in systemplate for name resolution, although
on some other systems it was not needed (preload?).
This fixes two bugs:
1) Linked images in documents were not displayed on certain systems
2) Insert image from WOPI host did not work on certain systems
Change-Id: I5d09a65341050f0f729bdbc46977c0f686ac023c
Reviewed-on: https://gerrit.libreoffice.org/64426
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
2018-12-02 07:30:28 -06:00
|
|
|
lib/libnss_* lib64/libnss_* lib/*/libnss_* \
|
|
|
|
lib/libresolv* lib64/libresolv* lib/*/libresolv* \
|
2016-01-14 11:14:35 -06:00
|
|
|
var/cache/fontconfig \
|
|
|
|
etc/fonts \
|
2019-10-25 05:24:33 -05:00
|
|
|
etc/timezone \
|
2016-01-14 11:14:35 -06:00
|
|
|
etc/localtime \
|
|
|
|
usr/lib/locale/en_US.utf8 \
|
|
|
|
usr/lib/locale/C.UTF-8 \
|
|
|
|
usr/lib/locale/locale_archive \
|
2018-11-22 07:23:57 -06:00
|
|
|
usr/lib/*/nss/*.so \
|
|
|
|
usr/lib/*/libsqlite* \
|
2016-01-14 11:14:35 -06:00
|
|
|
usr/share/zoneinfo/* \
|
|
|
|
usr/share/liblangtag \
|
2017-10-30 05:01:14 -05:00
|
|
|
usr/share/hyphen \
|
2018-06-15 08:04:25 -05:00
|
|
|
-type f 2>/dev/null
|
2016-01-14 11:14:35 -06:00
|
|
|
|
|
|
|
find etc/fonts \
|
2019-10-25 05:24:33 -05:00
|
|
|
etc/timezone \
|
|
|
|
etc/localtime \
|
2018-10-30 15:17:53 -05:00
|
|
|
etc/resolv.conf \
|
2016-01-14 11:14:35 -06:00
|
|
|
lib/ld-* lib64/ld-* \
|
Fix domain name resolution from jail by adding required libs to systemplate
Originally all was good, then ad21717498cc214d5d5d5c0ff378238552137e2f
removed these files from jail, therefore name resolution broke, then
ac7d67f43e2b82dcc841ca2ecae91e668eb90613 added back libnss_* libs from one location, which
happened to work on developer's computer, then 4e5528e5f8b6abbd9ca715d5ac0ec410cbc783af,
b4f15c714ae5fb5208f4267a76effe8c4f54a4e7, and 9c0ab7215568b53ce4a26de00900f9c6fa36b508
added back etc/hosts etc/nsswitch.conf etc/resolv.conf that were also needed for proper
name resolution, finally this patch adds some more possible locations of Name Service
Switch (NSS) libs, therefore it makes sure that the required libnss_* shared libs
are found e.g. on Debian based systems. Also, testing with libreoffice/online docker image
has shown that libresolv.so.2 is also required in systemplate for name resolution, although
on some other systems it was not needed (preload?).
This fixes two bugs:
1) Linked images in documents were not displayed on certain systems
2) Insert image from WOPI host did not work on certain systems
Change-Id: I5d09a65341050f0f729bdbc46977c0f686ac023c
Reviewed-on: https://gerrit.libreoffice.org/64426
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
2018-12-02 07:30:28 -06:00
|
|
|
lib/libnss_* lib64/libnss_* lib/*/libnss_* \
|
|
|
|
lib/libresolv* lib64/libresolv* lib/*/libresolv* \
|
2018-11-22 07:23:57 -06:00
|
|
|
usr/lib/*/libsqlite* \
|
2018-06-15 08:04:25 -05:00
|
|
|
-type l 2>/dev/null
|
2016-01-14 11:14:35 -06:00
|
|
|
|
|
|
|
# Go through the LO shared objects and check what system libraries
|
|
|
|
# they link to.
|
2018-03-10 10:00:57 -06:00
|
|
|
find $INSTDIR -name 'xpdfimport' |
|
2016-01-14 11:14:35 -06:00
|
|
|
while read file; do
|
|
|
|
ldd $file 2>/dev/null
|
|
|
|
done |
|
|
|
|
grep -v dynamic | cut -d " " -f 3 | grep -E '^(/lib|/usr)' | sort -u | sed -e 's,^/,,'
|
|
|
|
|
2015-04-08 09:22:42 -05:00
|
|
|
) |
|
|
|
|
|
2015-04-29 07:02:59 -05:00
|
|
|
# Can't use -l because then symlinks won't be handled well enough.
|
|
|
|
# This will now copy the file a symlink points to, but whatever.
|
|
|
|
cpio -p -d -L $CHROOT
|
2015-04-27 07:49:25 -05:00
|
|
|
|
2015-07-18 13:28:12 -05:00
|
|
|
mkdir -p $CHROOT/tmp
|
|
|
|
|
2015-04-27 07:49:25 -05:00
|
|
|
# /usr/share/fonts needs to be taken care of separately because the
|
2016-04-15 08:23:44 -05:00
|
|
|
# directory time stamps must be preserved for fontconfig to trust
|
2015-04-27 07:49:25 -05:00
|
|
|
# its cache.
|
|
|
|
|
2015-04-29 07:02:59 -05:00
|
|
|
cd $CHROOT || exit 1
|
|
|
|
|
2016-02-29 06:25:12 -06:00
|
|
|
mkdir -p usr/share || exit 1
|
2016-06-29 09:01:26 -05:00
|
|
|
cp -r -p -L /usr/share/fonts usr/share
|
2016-02-29 06:25:12 -06:00
|
|
|
|
|
|
|
if [ -h usr/share/fonts/ghostscript ]; then
|
|
|
|
mkdir usr/share/ghostscript || exit 1
|
2016-06-29 09:01:26 -05:00
|
|
|
cp -r -p -L /usr/share/ghostscript/fonts usr/share/ghostscript
|
2015-04-29 07:02:59 -05:00
|
|
|
fi
|
2016-04-15 08:23:44 -05:00
|
|
|
|
2018-03-10 07:50:43 -06:00
|
|
|
# Remove obsolete & unused bitmap fonts
|
|
|
|
find usr/share -name '*.pcf' | xargs rm -f
|
|
|
|
find usr/share -name '*.pcf.gz' | xargs rm -f
|
|
|
|
|
2016-04-15 08:34:23 -05:00
|
|
|
# Debugging only hackery to avoid confusion.
|
2016-04-15 08:23:44 -05:00
|
|
|
if test "z$ENABLE_DEBUG" != "z" -a "z$HOME" != "z"; then
|
|
|
|
echo "Copying development users's fonts into systemplate"
|
|
|
|
mkdir -p $CHROOT/$HOME
|
2016-04-15 09:19:04 -05:00
|
|
|
test -d $HOME/.fonts && cp -r -p -L $HOME/.fonts $CHROOT/$HOME
|
2016-04-15 08:23:44 -05:00
|
|
|
fi
|
2016-04-15 09:19:04 -05:00
|
|
|
|
|
|
|
exit 0
|