1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-04-30 15:49:41 +02:00
audacity/linux/create_appimage.sh
Emily Mabrey 2f316d5bc4
Rename project in many places; Replace Most Project Logos; Refactor About Tenacity... Dialog (#276)
Add `locale/en.po` file.
Add English to `locale/LINGUAS` list.
Partially duplicate `msgid`s to `msgstr`s in English locale enable eventual key `msgid` changes
Replace former project name with Tenacity in English locale.
Replace former project website with Tenacity compatible usages in English locale.
Modify `AboutDialog.h` by renaming variables.
Modify `AboutDialog.cpp` by replacing usage of pre-fork name in Strings.
Modify AddBuildInfoRow methods to be static in About dialog.
Make License text const in About dialog.
Make pre-fork credits different in About dialog.
Begin adding Tenacity specific credits
Macros starting with `__` are reserved, so I removed the `__` on the About Dialog guard macro.
Remove `AboutDialog::` from usage of `Role` in `AboutDialog.h`
Refactor overly long generator method into separate methods in `AboutDialog.(h|cpp)`
Begin adding Tenacity developer information
Cleanup layout of `AboutDialog.h` and `AboutDialog.cpp`
Add `safedelete` macro to compliment odd `safenew` macro
Add `enum` to `ShuttleGui.cpp` to make it more clear what `Prop` method is doing.
Remove a ton of pointless and/or redunant `#ifdef` usage
Remove pointless singleton in AboutDialog
Make AboutDialog modal on MacOS
Fix reference type use of `auto` in `AudacityApp` b/c it makes unintentional copy.
Update XPM and PNG images using Tenacity assets
Update ICO images using Tenacity assets.
Fix Windows resource script that improperly used `winuser.h` import.
Add `*.aps` to gitignore to prevent IDE RC pre-load file from being committed.
Add default values for pre-processor constants in `tenacity.rc`.
Make changes needed for `Tenacity.exe` binary
Add 8x8 PNG to Windows ICO files
Replace project name in various CMake and CPack file.
Replace project name in various directory structures.
Replace project name in various OS-specific build files.
Replace project name in various documentation files.
Update the PO and POT files using the script.
Fix places where a `.desktop` file was used on Linux.
Replace title of project windows.
Make splash screen click through to `tenacityaudio.org`.
Remove ® from `AboutDialog.cpp`
Modify copyright message in `AboutDialog.cpp`

Signed-off-by: Emily Mabrey <emilymabrey93@gmail.com>
2021-07-20 19:46:29 -04:00

114 lines
3.7 KiB
Bash
Executable File

#!/usr/bin/env bash
((${BASH_VERSION%%.*} >= 4)) || { echo >&2 "$0: Error: Please upgrade Bash."; exit 1; }
set -euxo pipefail
readonly appdir="$1" # input path (Audacity install directory)
readonly appimage="$2" # output path to use for created AppImage
#============================================================================
# Helper functions
#============================================================================
function download_github_release()
{
local -r repo_slug="$1" release_tag="$2" file="$3"
wget -q --show-progress "https://github.com/${repo_slug}/releases/download/${release_tag}/${file}"
chmod +x "${file}"
}
function extract_appimage()
{
# Extract AppImage so we can run it without having to install FUSE
local -r image="$1" binary_name="$2"
local -r dir="${image%.AppImage}.AppDir"
"./${image}" --appimage-extract >/dev/null # dest folder "squashfs-root"
mv squashfs-root "${dir}" # rename folder to avoid collisions
ln -s "${dir}/AppRun" "${binary_name}" # symlink for convenience
rm -f "${image}"
}
function download_appimage_release()
{
local -r github_repo_slug="$1" binary_name="$2" tag="$3"
local -r image="${binary_name}-x86_64.AppImage"
download_github_release "${github_repo_slug}" "${tag}" "${image}"
extract_appimage "${image}" "${binary_name}"
}
function download_linuxdeploy_component()
{
local -r component="$1" tag="$2"
download_appimage_release "linuxdeploy/$1" "$1" "$2"
}
function create_path()
{
local -r path="$1"
if [[ -d "${path}" ]]; then
return 1 # already exists
fi
mkdir -p "${path}"
}
#============================================================================
# Fetch AppImage packaging tools
#============================================================================
if create_path "appimagetool"; then
(
cd "appimagetool"
download_appimage_release AppImage/AppImageKit appimagetool continuous
)
fi
export PATH="${PWD%/}/appimagetool:${PATH}"
appimagetool --version
if create_path "linuxdeploy"; then
(
cd "linuxdeploy"
download_linuxdeploy_component linuxdeploy continuous
)
fi
export PATH="${PWD%/}/linuxdeploy:${PATH}"
linuxdeploy --list-plugins
#============================================================================
# Create symlinks
#============================================================================
ln -sf --no-dereference . "${appdir}/usr"
ln -sf share/applications/tenacity.desktop "${appdir}/tenacity.desktop"
ln -sf share/icons/hicolor/scalable/apps/tenacity.svg "${appdir}/tenacity.svg"
ln -sf share/icons/hicolor/scalable/apps/tenacity.svg "${appdir}/.DirIcon"
#============================================================================
# Bundle dependencies
#============================================================================
# HACK: Some wxWidget libraries depend on themselves. Add
# them to LD_LIBRARY_PATH so that linuxdeploy can find them.
export LD_LIBRARY_PATH="${appdir}/usr/lib/tenacity:${LD_LIBRARY_PATH-}"
linuxdeploy --appdir "${appdir}" # add all shared library dependencies
#============================================================================
# Build AppImage
#============================================================================
appimagetool_args=(
# none
)
if [[ "${AUDACITY_UPDATE_INFO-}" ]]; then
# Enable updates. See https://github.com/AppImage/AppImageSpec/blob/master/draft.md#update-information
appimagetool_args+=( --updateinformation="${AUDACITY_UPDATE_INFO}" )
else
echo >&2 "$0: Automatic updates disabled"
fi
# Create AppImage
cd "$(dirname "${appimage}")" # otherwise zsync created in wrong directory
appimagetool "${appimagetool_args[@]}" "${appdir}" "${appimage}"