mirror of
https://github.com/flatpak/flatpak.git
synced 2026-02-02 20:11:27 -05:00
We enforce --no-update-summary when we create test apps and runtimes, and then we ensure we always manually call update_repo after all modifications are done. This means we save work avoiding summary updates, but it also means we can do special handling in update_summary and guarantee that this is the only place this happens. For example, we want this to work around the mtime handling of summary updates.
166 lines
4.1 KiB
Bash
Executable File
166 lines
4.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# Don't inherit the -x from the testsuite
|
|
set +x
|
|
|
|
DIR=`mktemp -d`
|
|
|
|
REPO=$1
|
|
shift
|
|
APP_ID=$1
|
|
shift
|
|
BRANCH=$1
|
|
shift
|
|
COLLECTION_ID=$1
|
|
shift
|
|
|
|
if [ x$APP_ID = x ]; then
|
|
APP_ID=org.test.Hello
|
|
fi
|
|
|
|
RUNTIME_BRANCH=${RUNTIME_BRANCH:-$BRANCH}
|
|
|
|
EXTRA="${1-}"
|
|
|
|
ARCH=`flatpak --default-arch`
|
|
|
|
# Init dir
|
|
cat > ${DIR}/metadata <<EOF
|
|
[Application]
|
|
name=$APP_ID
|
|
runtime=org.test.Platform/$ARCH/$RUNTIME_BRANCH
|
|
sdk=org.test.Platform/$ARCH/$RUNTIME_BRANCH
|
|
EOF
|
|
|
|
if [ x${REQUIRED_VERSION-} != x ]; then
|
|
cat >> ${DIR}/metadata <<EOF
|
|
required-flatpak=$REQUIRED_VERSION
|
|
EOF
|
|
fi
|
|
|
|
cat >> ${DIR}/metadata <<EOF
|
|
[Extension $APP_ID.Locale]
|
|
directory=share/runtime/locale
|
|
autodelete=true
|
|
locale-subset=true
|
|
EOF
|
|
|
|
mkdir -p ${DIR}/files/bin
|
|
cat > ${DIR}/files/bin/hello.sh <<EOF
|
|
#!/bin/sh
|
|
echo "Hello world, from a sandbox$EXTRA"
|
|
if [ "$EXTRA" = "SPIN" ]; then
|
|
exec sh
|
|
fi
|
|
EOF
|
|
chmod a+x ${DIR}/files/bin/hello.sh
|
|
|
|
mkdir -p ${DIR}/files/share/applications
|
|
cat > ${DIR}/files/share/applications/org.test.Hello.desktop <<EOF
|
|
[Desktop Entry]
|
|
Version=1.0
|
|
Type=Application
|
|
Name=Hello
|
|
Exec=hello.sh
|
|
Icon=$APP_ID
|
|
MimeType=x-test/Hello;
|
|
EOF
|
|
cat > ${DIR}/files/share/applications/org.test.Hello.Again.desktop <<EOF
|
|
[Desktop Entry]
|
|
Version=1.0
|
|
Type=Application
|
|
Name=Hello Again
|
|
Exec=hello.sh --again
|
|
Icon=$APP_ID
|
|
MimeType=x-test/Hello;
|
|
X-Flatpak-RenamedFrom=hello-again.desktop;
|
|
EOF
|
|
|
|
mkdir -p ${DIR}/files/share/gnome-shell/search-providers
|
|
cat > ${DIR}/files/share/gnome-shell/search-providers/org.test.Hello.search-provider.ini <<EOF
|
|
[Shell Search Provider]
|
|
DesktopId=org.test.Hello.desktop
|
|
BusName=org.test.Hello.SearchProvider
|
|
ObjectPath=/org/test/Hello/SearchProvider
|
|
Version=2
|
|
EOF
|
|
|
|
mkdir -p ${DIR}/files/share/icons/hicolor/64x64/apps
|
|
cp $(dirname $0)/org.test.Hello.png ${DIR}/files/share/icons/hicolor/64x64/apps/${APP_ID}.png
|
|
cp $(dirname $0)/org.test.Hello.png ${DIR}/files/share/icons/hicolor/64x64/apps/dont-export.png
|
|
mkdir -p ${DIR}/files/share/icons/HighContrast/64x64/apps
|
|
cp $(dirname $0)/org.test.Hello.png ${DIR}/files/share/icons/HighContrast/64x64/apps/${APP_ID}.png
|
|
|
|
|
|
mkdir -p ${DIR}/files/share/app-info/xmls
|
|
mkdir -p ${DIR}/files/share/app-info/icons/flatpak/64x64
|
|
gzip -c > ${DIR}/files/share/app-info/xmls/${APP_ID}.xml.gz <<EOF
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<components version="0.8">
|
|
<component type="desktop">
|
|
<id>$APP_ID.desktop</id>
|
|
<name>Hello world test app: $APP_ID</name>
|
|
<summary>Print a greeting</summary>
|
|
<description><p>This is a test app.</p></description>
|
|
<categories>
|
|
<category>Utility</category>
|
|
</categories>
|
|
<icon height="64" width="64" type="cached">64x64/org.gnome.gedit.png</icon>
|
|
<releases>
|
|
<release timestamp="1525132800" version="0.0.1"/>
|
|
</releases>
|
|
</component>
|
|
</components>
|
|
EOF
|
|
cp $(dirname $0)/org.test.Hello.png ${DIR}/files/share/app-info/icons/flatpak/64x64/${APP_ID}.png
|
|
|
|
if [ x$COLLECTION_ID != x ]; then
|
|
collection_args=--collection-id=${COLLECTION_ID}
|
|
else
|
|
collection_args=
|
|
fi
|
|
|
|
mkdir -p ${DIR}/files/share/locale
|
|
mkdir -p ${DIR}/files/share/runtime/locale/de
|
|
ln -s -t ${DIR}/files/share/locale ../../share/runtime/locale/de/share/de
|
|
mkdir -p ${DIR}/files/share/runtime/locale/fr
|
|
ln -s -t ${DIR}/files/share/locale ../../share/runtime/locale/fr/share/fr
|
|
|
|
flatpak build-finish ${BUILD_FINISH_ARGS-} --command=hello.sh ${DIR}
|
|
mkdir -p repos
|
|
flatpak build-export --no-update-summary --disable-sandbox ${collection_args} ${GPGARGS-} ${EXPORT_ARGS-} ${REPO} ${DIR} ${BRANCH}
|
|
rm -rf ${DIR}
|
|
|
|
# build a locale extension
|
|
|
|
DIR=`mktemp -d`
|
|
|
|
# Init dir
|
|
cat > ${DIR}/metadata <<EOF
|
|
[Runtime]
|
|
name=${APP_ID}.Locale
|
|
|
|
[ExtensionOf]
|
|
ref=app/$APP_ID/$ARCH/$BRANCH
|
|
EOF
|
|
|
|
cat > de.po <<EOF
|
|
msgid "Hello world"
|
|
msgstr "Hallo Welt"
|
|
EOF
|
|
mkdir -p ${DIR}/files/de/share/de/LC_MESSAGES
|
|
msgfmt --output-file ${DIR}/files/de/share/de/LC_MESSAGES/helloworld.mo de.po
|
|
cat > fr.po <<EOF
|
|
msgid "Hello world"
|
|
msgstr "Bonjour le monde"
|
|
EOF
|
|
mkdir -p ${DIR}/files/fr/share/fr/LC_MESSAGES
|
|
msgfmt --output-file ${DIR}/files/fr/share/fr/LC_MESSAGES/helloworld.mo fr.po
|
|
|
|
flatpak build-finish ${DIR}
|
|
mkdir -p repos
|
|
flatpak build-export --no-update-summary --runtime ${collection_args} ${GPGARGS-} ${EXPORT_ARGS-} ${REPO} ${DIR} ${BRANCH}
|
|
rm -rf ${DIR}
|