2018-11-08 08:03:36 +05:30
#!/bin/bash -ex
# This script generates the appdata.xml and org.citra.$REPO_NAME.json files
# needed to define application metadata and build citra depending on what version
# of citra we're building (nightly or canary)
# Converts "citra-emu/citra-nightly" to "citra-nightly"
REPO_NAME = $( echo $TRAVIS_REPO_SLUG | cut -d'/' -f 2)
# Converts "citra-nightly" to "Citra Nightly"
REPO_NAME_FRIENDLY = $( echo $REPO_NAME | sed -e 's/-/ /g' -e 's/\b\(.\)/\u\1/g' )
# Generate the correct appdata.xml for the version of Citra we're building
cat > /tmp/appdata.xml <<EOF
<?xml version = "1.0" encoding = "UTF-8" ?>
<application>
<id type = "desktop" >org.citra.$REPO_NAME .desktop</id>
<name>$REPO_NAME_FRIENDLY </name>
<summary>Nintendo 3DS emulator</summary>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0</project_license>
<description>
<p>Citra is an experimental open-source Nintendo 3DS emulator/debugger written in C++. It is written with portability in mind, with builds actively maintained for Windows, Linux and macOS.</p>
<p>Citra emulates a subset of 3DS hardware and therefore is useful for running/debugging homebrew applications, and it is also able to run many commercial games! Some of these do not run at a playable state, but we are working every day to advance the project forward. ( Playable here means compatibility of at least "Okay" on our game compatibility list.) </p>
</description>
<url type = "homepage" >https://citra-emu.org/</url>
<url type = "donation" >https://citra-emu.org/donate/</url>
<url type = "bugtracker" >https://github.com/citra-emu/citra/issues</url>
<url type = "faq" >https://citra-emu.org/wiki/faq/</url>
<url type = "help" >https://citra-emu.org/wiki/home/</url>
<screenshot>https://raw.githubusercontent.com/citra-emu/citra-web/master/site/static/images/screenshots/01-Super%20Mario%203D%20Land.jpg</screenshot>
<screenshot>https://raw.githubusercontent.com/citra-emu/citra-web/master/site/static/images/screenshots/02-Mario%20Kart%207.jpg</screenshot>
<screenshot>https://raw.githubusercontent.com/citra-emu/citra-web/master/site/static/images/screenshots/28-The%20Legend%20of%20Zelda%20Ocarina%20of%20Time%203D.jpg</screenshot>
<screenshot>https://raw.githubusercontent.com/citra-emu/citra-web/master/site/static/images/screenshots/35-Pok%C3%A9mon%20ORAS.png</screenshot>
<categories>
<category>Games</category>
<category>Emulator</category>
</categories>
</application>
EOF
# Generate the citra flatpak manifest, appending certain variables depending on
# whether we're building nightly or canary.
cat > /tmp/org.citra.$REPO_NAME .json <<EOF
{
"app-id" : " org.citra. $REPO_NAME " ,
"runtime" : "org.kde.Platform" ,
2020-03-28 20:40:35 +05:30
"runtime-version" : "5.13" ,
2018-11-08 08:03:36 +05:30
"sdk" : "org.kde.Sdk" ,
"command" : "citra-qt" ,
"rename-desktop-file" : "citra.desktop" ,
"rename-icon" : "citra" ,
"rename-appdata-file" : " org.citra. $REPO_NAME .appdata.xml " ,
"build-options" : {
"build-args" : [
"--share=network"
] ,
"env" : {
"CI" : " $CI " ,
"TRAVIS" : " $TRAVIS " ,
"CONTINUOUS_INTEGRATION" : " $CONTINUOUS_INTEGRATION " ,
"TRAVIS_BRANCH" : " $TRAVIS_BRANCH " ,
"TRAVIS_BUILD_ID" : " $TRAVIS_BUILD_ID " ,
"TRAVIS_BUILD_NUMBER" : " $TRAVIS_BUILD_NUMBER " ,
"TRAVIS_COMMIT" : " $TRAVIS_COMMIT " ,
"TRAVIS_JOB_ID" : " $TRAVIS_JOB_ID " ,
"TRAVIS_JOB_NUMBER" : " $TRAVIS_JOB_NUMBER " ,
"TRAVIS_REPO_SLUG" : " $TRAVIS_REPO_SLUG " ,
"TRAVIS_TAG" : " $TRAVIS_TAG "
}
} ,
"finish-args" : [
"--device=all" ,
"--socket=x11" ,
"--socket=pulseaudio" ,
"--share=network" ,
"--share=ipc" ,
"--filesystem=xdg-config/citra-emu:create" ,
"--filesystem=xdg-data/citra-emu:create" ,
"--filesystem=host:ro"
] ,
"modules" : [
{
"name" : "citra" ,
"buildsystem" : "cmake-ninja" ,
"builddir" : true,
"config-opts" : [
"-DCMAKE_BUILD_TYPE=Release" ,
"-DENABLE_QT_TRANSLATION=ON" ,
"-DCITRA_ENABLE_COMPATIBILITY_REPORTING=ON" ,
2019-04-24 02:47:37 +05:30
"-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON" ,
2019-08-20 12:15:39 +05:30
"-DENABLE_FFMPEG_VIDEO_DUMPER=ON"
2018-11-08 08:03:36 +05:30
] ,
"cleanup" : [
"/bin/citra" ,
"/share/man" ,
"/share/pixmaps"
] ,
"post-install" : [
" install -Dm644 ../appdata.xml /app/share/appdata/org.citra. $REPO_NAME .appdata.xml " ,
"desktop-file-install --dir=/app/share/applications ../dist/citra.desktop" ,
" sed -i 's/Name=Citra/Name= $REPO_NAME_FRIENDLY /g' /app/share/applications/citra.desktop " ,
"echo 'StartupWMClass=citra-qt' >> /app/share/applications/citra.desktop" ,
"install -Dm644 ../dist/citra.svg /app/share/icons/hicolor/scalable/apps/citra.svg" ,
"install -Dm644 ../dist/icon.png /app/share/icons/hicolor/512x512/apps/citra.png" ,
" mv /app/share/mime/packages/citra.xml /app/share/mime/packages/org.citra. $REPO_NAME .xml " ,
2019-01-12 20:23:45 +05:30
" sed 's/citra/org.citra.citra-nightly/g' -i /app/share/mime/packages/org.citra. $REPO_NAME .xml "
2018-11-08 08:03:36 +05:30
] ,
"sources" : [
{
"type" : "git" ,
"url" : " https://github.com/citra-emu/ $REPO_NAME .git " ,
"branch" : " $TRAVIS_BRANCH " ,
"disable-shallow-clone" : true
} ,
{
"type" : "file" ,
"path" : "/tmp/appdata.xml"
}
]
}
]
}
EOF
# Call the script to build citra
/bin/bash -ex /citra/.travis/linux-flatpak/docker.sh