94e29dab1e
The amount of system frameworks (both public and private) needed by the LO libraries is staggering. It will not work to try to list them here. If you are crazy enough to want to run this on OS X, use some other tool than this script to set up the system template for the chroot jail. Like mkjail from https://github.com/glvnst/shlibs.
94 lines
3.1 KiB
Bash
Executable file
94 lines
3.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
test $# -eq 2 || { echo "Usage: $0 <chroot template directory> <LO installation directory>"; exit 1; }
|
|
|
|
# No provision for spaces or other weird characters in pathnames. So sue me.
|
|
|
|
CHROOT=$1
|
|
INSTDIR=$2
|
|
|
|
mkdir $CHROOT || exit 1
|
|
|
|
CHROOT=`cd $CHROOT && /bin/pwd`
|
|
INSTDIR=`cd $INSTDIR && /bin/pwd`
|
|
|
|
cd / || exit 1
|
|
|
|
(
|
|
# Produce a list of file names, one per line, that will be copied
|
|
# into the template tree of system files for the chroot jails.
|
|
|
|
if [ `uname -s` = Linux ]; then
|
|
|
|
# First essential files and shared objects
|
|
find etc/passwd etc/group etc/hosts \
|
|
etc/resolv.conf \
|
|
lib/ld-* lib64/ld-* \
|
|
etc/ld.so.* \
|
|
lib/libnss_* lib64/libnss_* \
|
|
var/cache/fontconfig \
|
|
etc/fonts \
|
|
usr/share/liblangtag \
|
|
-type f
|
|
|
|
# Go through the LO shared objects and check what system libraries
|
|
# they link to.
|
|
find $INSTDIR -name '*.so' -o -name '*.so.[0-9]*' |
|
|
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,^/,,'
|
|
else
|
|
find usr/lib/dyld \
|
|
usr/lib/*.dylib \
|
|
usr/lib/system/*.dylib \
|
|
System/Library/Frameworks/Accelerate.framework \
|
|
System/Library/Frameworks/ApplicationServices.framework \
|
|
System/Library/Frameworks/CFNetwork.framework \
|
|
System/Library/Frameworks/Carbon.framework \
|
|
System/Library/Frameworks/CoreFoundation.framework \
|
|
System/Library/Frameworks/CoreGraphics.framework \
|
|
System/Library/Frameworks/CoreServices.framework \
|
|
System/Library/Frameworks/CoreText.framework \
|
|
System/Library/Frameworks/DiskArbitration.framework \
|
|
System/Library/Frameworks/Foundation.framework \
|
|
System/Library/Frameworks/ImageIO.framework \
|
|
System/Library/Frameworks/IOKit.framework \
|
|
System/Library/Frameworks/IOSurface.framework \
|
|
System/Library/Frameworks/NetFS.framework \
|
|
System/Library/Frameworks/OpenDirectory.framework \
|
|
System/Library/Frameworks/Security.framework \
|
|
System/Library/Frameworks/SystemConfiguration.framework \
|
|
System/Library/PrivateFrameworks/DataDetectorsCore.framework \
|
|
System/Library/PrivateFrameworks/MultitouchSupport.framework \
|
|
System/Library/PrivateFrameworks/NetAuth.framework \
|
|
System/Library/PrivateFrameworks/login.framework \
|
|
-type f
|
|
|
|
find $INSTDIR -name '*.dylib' |
|
|
while read file; do
|
|
otool -L $file 2>/dev/null
|
|
done |
|
|
sed -e 's/^[ ]//' | grep -E '^/(lib|usr/lib)/' | cut -d' ' -f1 | sort -u | sed -e 's,^/,,'
|
|
fi
|
|
) |
|
|
|
|
# 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
|
|
|
|
# /usr/share/fonts needs to be taken care of separately because the
|
|
# directory time stamps must be preserved are for fontconfig to trust
|
|
# its cache.
|
|
|
|
cd $CHROOT || exit 1
|
|
|
|
if [ `uname -s` = Linux ]; then
|
|
mkdir -p usr/share || exit 1
|
|
cp -r -p /usr/share/fonts usr/share
|
|
|
|
if [ -h usr/share/fonts/ghostscript ]; then
|
|
mkdir usr/share/ghostscript || exit 1
|
|
cp -r -p /usr/share/ghostscript/fonts usr/share/ghostscript
|
|
fi
|
|
fi
|