Files
deb-lite-xl/build-packages.sh
T
Francesco Abbate c41dedafad Improve the implementation of unix-like directories usage
Add a Meson option "portable" to choose between "portable" and unix-like
directories. Add information about this option in the README.

To determine the user's directory use the variable USERPROFILE only on
Windows and use HOME otherwise.

Implement the "portable" option in the package build script.
2020-12-03 16:46:18 +01:00

177 lines
4.3 KiB
Bash
Executable File

#!/bin/bash
copy_directory_from_repo () {
local dirname="$1"
local destdir="$2"
git --work-tree="$destdir" checkout HEAD -f -- "$dirname"
}
# Check if build directory is ok to be used to build.
build_dir_is_usable () {
local build="$1"
if [[ $build == */* || -z "$build" ]]; then
echo "invalid build directory, no path allowed: \"$build\""
return 1
fi
git ls-files --error-unmatch "$build" &> /dev/null
if [ $? == 0 ]; then
echo "invalid path, \"$build\" is under revision control"
return 1
fi
}
# Ordinary release build
lite_build () {
local meson_options=("-Dportable=$1")
local build="$2"
build_dir_is_usable "$build" || exit 1
rm -fr "$build"
meson setup --buildtype=release "${meson_options[@]}" "$build" || exit 1
ninja -C "$build" || exit 1
}
# Build using Profile Guided Optimizations (PGO)
lite_build_pgo () {
local meson_options=("-Dportable=$1")
local build="$2"
build_dir_is_usable "$build" || exit 1
rm -fr "$build"
meson setup --buildtype=release "${meson_options[@]}" -Db_pgo=generate "$build" || exit 1
ninja -C "$build" || exit 1
copy_directory_from_repo data "$build/src"
"$build/src/lite"
meson configure -Db_pgo=use "$build"
ninja -C "$build" || exit 1
}
lite_build_package_windows () {
local portable="$1"
local build="$2"
local version="$3"
local arch="$4"
local os="win"
local pdir=".package-build/lite-xl"
if [ $portable == "true" ]; then
local bindir="$pdir"
local datadir="$pdir/data"
else
local bindir="$pdir/bin"
local datadir="$pdir/share/lite-xl"
fi
mkdir -p "$bindir"
mkdir -p "$datadir"
for module_name in core plugins fonts; do
copy_directory_from_repo "data/$module_name" "$datadir"
done
cp "$build/src/lite.exe" "$bindir"
strip --strip-all "$bindir/lite.exe"
pushd ".package-build"
local package_name="lite-xl-$os-$arch.zip"
zip "$package_name" -r "lite-xl"
mv "$package_name" ..
popd
rm -fr ".package-build"
echo "created package $package_name"
}
lite_build_package_macosx () {
local portable="$1"
local build="$2"
local version="$3"
local arch="$4"
local os="macosx"
local pdir=".package-build/lite-xl.app/Contents/MacOS"
if [ $portable == "true" ]; then
local bindir="$pdir"
local datadir="$pdir/data"
else
local bindir="$pdir/bin"
local datadir="$pdir/share/lite-xl"
fi
mkdir -p "$bindir"
mkdir -p "$datadir"
for module_name in core plugins fonts; do
copy_directory_from_repo "data/$module_name" "$datadir"
done
cp "$build/src/lite" "$bindir"
strip "$bindir/lite"
pushd ".package-build"
local package_name="lite-xl-$os-$arch.zip"
zip "$package_name" -r "lite-xl.app"
mv "$package_name" ..
popd
rm -fr ".package-build"
echo "created package $package_name"
}
lite_build_package_linux () {
local portable="$1"
local build="$2"
local version="$3"
local arch="$4"
local os="linux"
local pdir=".package-build/lite-xl"
if [ $portable == "true" ]; then
local bindir="$pdir"
local datadir="$pdir/data"
else
local bindir="$pdir/bin"
local datadir="$pdir/share/lite-xl"
fi
mkdir -p "$bindir"
mkdir -p "$datadir"
for module_name in core plugins fonts; do
copy_directory_from_repo "data/$module_name" "$datadir"
done
cp "$build/src/lite" "$bindir"
strip "$bindir/lite"
pushd ".package-build"
local package_name="lite-xl-$os-$arch.tar.gz"
tar czf "$package_name" "lite-xl"
mv "$package_name" ..
popd
rm -fr ".package-build"
echo "created package $package_name"
}
lite_build_package () {
if [[ "$OSTYPE" == msys || "$OSTYPE" == win32 ]]; then
lite_build_package_windows "$@"
elif [[ "$OSTYPE" == "darwin"* ]]; then
lite_build_package_macosx "$@"
elif [[ "$OSTYPE" == "linux"* || "$OSTYPE" == "freebsd"* ]]; then
lite_build_package_linux "$@"
else
echo "Unknown OS type \"$OSTYPE\""
exit 1
fi
}
if [[ -z "$1" || -z "$2" ]]; then
echo "usage: $0 [options] <version> <arch>"
exit 1
fi
if [[ "$1" == "-pgo" ]]; then
pgo=true
shift
fi
portable="false"
if [ "$1" == "-portable" ]; then
portable="true"
shift
fi
version="$1"
arch="$2"
build_dir=".build-$arch"
if [ -z ${pgo+set} ]; then
lite_build "$portable" "$build_dir"
else
lite_build_pgo "$portable" "$build_dir"
fi
lite_build_package "$portable" "$build_dir" "$version" "$arch"