mirror of
https://github.com/flatpak/flatpak.git
synced 2026-01-27 09:08:12 -05:00
This adds variable support for collection IDs: they can either be
enabled on the server, on the server and client, or not at all. If
enabled on the server, apps and runtimes are built with collection IDs
and the repository has one set. If enabled on the client, the remote
config is added to the local repository with a collection ID and GPG
verification enabled. They are controlled with
USE_COLLECTIONS_IN_{SERVER,CLIENT}={yes,no}.
These variables are used in the new wrapper tests,
test-repo-collections.sh and test-repo-collections-server-only.sh.
Signed-off-by: Philip Withnall <withnall@endlessm.com>
79 lines
2.3 KiB
Bash
Executable File
79 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
DIR=`mktemp -d`
|
|
|
|
REPONAME=$1
|
|
shift
|
|
ID=$1
|
|
shift
|
|
COLLECTION_ID=$1
|
|
shift
|
|
|
|
mkdir ${DIR}/files
|
|
mkdir ${DIR}/usr
|
|
cat > ${DIR}/metadata <<EOF
|
|
[Runtime]
|
|
name=${ID}
|
|
EOF
|
|
|
|
cat ${DIR}/metadata
|
|
|
|
# Add bash and dependencies
|
|
mkdir -p ${DIR}/usr/bin
|
|
mkdir -p ${DIR}/usr/lib
|
|
ln -s ../lib ${DIR}/usr/lib64
|
|
ln -s ../lib ${DIR}/usr/lib32
|
|
T=`mktemp`
|
|
for i in $@; do
|
|
I=`which $i`
|
|
cp $I ${DIR}/usr/bin
|
|
ldd $I | sed "s/.* => //" | awk '{ print $1}' | grep ^/ | grep ^/ >> $T
|
|
if test $i == python2; then
|
|
mkdir -p ${DIR}/usr/lib/python2.7/lib-dynload
|
|
# This is a hardcoded minimal set of modules we need in the current tests.
|
|
# Pretty hacky stuff. Add modules as needed.
|
|
PYDIR=/usr/lib/python2.7
|
|
if test -d /usr/lib64/python2.7; then PYDIR=/usr/lib64/python2.7; fi
|
|
for py in site os stat posixpath genericpath warnings \
|
|
linecache types UserDict abc _abcoll \
|
|
_weakrefset copy_reg traceback sysconfig \
|
|
re sre_compile sre_parse sre_constants \
|
|
_sysconfigdata ; do
|
|
cp ${PYDIR}/$py.py ${DIR}/usr/lib/python2.7
|
|
done
|
|
# These might not exist, depending how Python was configured; and the
|
|
# part after ${so} might be "module" or ".x86_64-linux-gnu" or
|
|
# something else
|
|
for so in _locale strop ; do
|
|
cp ${PYDIR}/lib-dynload/${so}*.so ${DIR}/usr/lib/python2.7/lib-dynload || :
|
|
done
|
|
for plat in $( cd ${PYDIR} && echo plat-* ); do
|
|
test -e ${PYDIR}/${plat} || continue
|
|
mkdir -p ${DIR}/usr/lib/python2.7/${plat}
|
|
cp ${PYDIR}/${plat}/*.py ${DIR}/usr/lib/python2.7/${plat}/
|
|
done
|
|
fi
|
|
done
|
|
ln -s bash ${DIR}/usr/bin/sh
|
|
for i in `sort -u $T`; do
|
|
cp "$i" ${DIR}/usr/lib/
|
|
done
|
|
|
|
# We copy the C.UTF8 locale and call it en_US. Its a bit of a lie, but
|
|
# the real en_US locale is often not available, because its in the
|
|
# local archive.
|
|
mkdir -p ${DIR}/usr/lib/locale/
|
|
cp -r /usr/lib/locale/C.* ${DIR}/usr/lib/locale/en_US
|
|
|
|
if [ x$COLLECTION_ID != x ]; then
|
|
collection_args=--collection-id=${COLLECTION_ID}
|
|
else
|
|
collection_args=
|
|
fi
|
|
|
|
mkdir -p repos
|
|
flatpak build-export ${collection_args} --runtime ${GPGARGS-} repos/${REPONAME} ${DIR}
|
|
rm -rf ${DIR}
|