CI and custom build script utilities
- macOS DMG image using AppDMG with custom background - Linux AppImage - Windows MSYS2 packaging - Source code tarball including subprojects source code - LHelper compatible build script
This commit is contained in:
parent
37dcc4725f
commit
904214378d
|
@ -5,6 +5,7 @@ submodules/
|
||||||
subprojects/lua/
|
subprojects/lua/
|
||||||
subprojects/libagg/
|
subprojects/libagg/
|
||||||
subprojects/reproc/
|
subprojects/reproc/
|
||||||
|
/appimage*
|
||||||
.ccls-cache
|
.ccls-cache
|
||||||
.lite-debug.log
|
.lite-debug.log
|
||||||
.run*
|
.run*
|
||||||
|
@ -13,7 +14,6 @@ subprojects/reproc/
|
||||||
*.zip
|
*.zip
|
||||||
*.DS_Store
|
*.DS_Store
|
||||||
*App*
|
*App*
|
||||||
appimage*
|
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
error.txt
|
error.txt
|
||||||
lite-xl*
|
lite-xl*
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 6.0 KiB |
|
@ -0,0 +1,30 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [ ! -e "src/api/api.h" ]; then
|
||||||
|
echo "Please run this script from the root directory of Lite XL."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat > lite-xl-dmg.json << EOF
|
||||||
|
{
|
||||||
|
"title": "Lite XL",
|
||||||
|
"icon": "$(pwd)/resources/icons/icon.icns",
|
||||||
|
"background": "$(pwd)/resources/macos/appdmg.png",
|
||||||
|
"window": {
|
||||||
|
"position": {
|
||||||
|
"x": 360,
|
||||||
|
"y": 360
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 480,
|
||||||
|
"height": 360
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contents": [
|
||||||
|
{ "x": 144, "y": 248, "type": "file", "path": "$(pwd)/Lite XL.app" },
|
||||||
|
{ "x": 336, "y": 248, "type": "link", "path": "/Applications" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
~/node_modules/appdmg/bin/appdmg.js lite-xl-dmg.json "$(pwd)/$1.dmg"
|
|
@ -0,0 +1,160 @@
|
||||||
|
#!/bin/env bash
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [ ! -e "src/api/api.h" ]; then
|
||||||
|
echo "Please run this script from the root directory of Lite XL."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
show_help(){
|
||||||
|
echo
|
||||||
|
echo $0
|
||||||
|
echo
|
||||||
|
echo "Available options:"
|
||||||
|
echo
|
||||||
|
echo "-h --help Show this help and exits."
|
||||||
|
echo "-b --builddir DIRNAME Sets the name of the build dir (no path)."
|
||||||
|
echo " Default: 'build'."
|
||||||
|
echo "-n --nobuild Skips the build step, use existing files."
|
||||||
|
echo "-s --static Specify if building using static libraries"
|
||||||
|
echo " by using lhelper tool."
|
||||||
|
echo "-v --version VERSION Specify a version, non whitespace separated string."
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
ARCH="$(uname -m)"
|
||||||
|
BUILD_DIR=build
|
||||||
|
RUN_BUILD=true
|
||||||
|
STATIC_BUILD=false
|
||||||
|
|
||||||
|
for i in "$@"; do
|
||||||
|
case $i in
|
||||||
|
-h|--belp)
|
||||||
|
show_help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-b|--builddir)
|
||||||
|
BUILD_DIR="$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-n|--nobuild)
|
||||||
|
RUN_BUILD=false
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-s|--static)
|
||||||
|
STATIC_BUILD=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-v|--version)
|
||||||
|
VERSION="$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# unknown option
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# TODO: Versioning using git
|
||||||
|
#if [[ -z $VERSION && -d .git ]]; then
|
||||||
|
# VERSION=$(git describe --tags --long | sed 's/^v//; s/\([^-]*-g\)/r\1/; s/-/./g')
|
||||||
|
#fi
|
||||||
|
|
||||||
|
if [[ -n $1 ]]; then
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
setup_appimagetool(){
|
||||||
|
if ! which appimagetool > /dev/null ; then
|
||||||
|
if [ ! -e appimagetool ]; then
|
||||||
|
if ! wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-${ARCH}.AppImage" ; then
|
||||||
|
echo "Could not download the appimagetool for the arch '${ARCH}'."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
chmod 0755 appimagetool
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
download_appimage_apprun(){
|
||||||
|
if [ ! -e AppRun ]; then
|
||||||
|
if ! wget -O AppRun "https://github.com/AppImage/AppImageKit/releases/download/continuous/AppRun-${ARCH}" ; then
|
||||||
|
echo "Could not download AppRun for the arch '${ARCH}'."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
chmod 0755 AppRun
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
build_litexl(){
|
||||||
|
if [ -e build ]; then
|
||||||
|
rm -rf build
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e ${BUILD_DIR} ]; then
|
||||||
|
rm -rf ${BUILD_DIR}
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Build lite-xl..."
|
||||||
|
sleep 1
|
||||||
|
meson setup --buildtype=release --prefix /usr ${BUILD_DIR}
|
||||||
|
meson compile -C ${BUILD_DIR}
|
||||||
|
}
|
||||||
|
|
||||||
|
generate_appimage(){
|
||||||
|
if [ -e LiteXL.AppDir ]; then
|
||||||
|
rm -rf LiteXL.AppDir
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Creating LiteXL.AppDir..."
|
||||||
|
|
||||||
|
DESTDIR="$(realpath LiteXL.AppDir)" meson install --skip-subprojects -C ${BUILD_DIR}
|
||||||
|
mv AppRun LiteXL.AppDir/
|
||||||
|
# These could be symlinks but it seems they doesn't work with AppimageLauncher
|
||||||
|
cp resources/icons/lite-xl.svg LiteXL.AppDir/
|
||||||
|
cp resources/linux/org.lite-xl.lite-xl.desktop LiteXL.AppDir/
|
||||||
|
|
||||||
|
if [[ $STATIC_BUILD == false ]]; then
|
||||||
|
echo "Copying libraries..."
|
||||||
|
|
||||||
|
mkdir -p LiteXL.AppDir/usr/lib/
|
||||||
|
|
||||||
|
local allowed_libs=(
|
||||||
|
libfreetype
|
||||||
|
libpcre2
|
||||||
|
libSDL2
|
||||||
|
libsndio
|
||||||
|
liblua
|
||||||
|
)
|
||||||
|
|
||||||
|
while read line; do
|
||||||
|
local libname="$(echo $line | cut -d' ' -f1)"
|
||||||
|
local libpath="$(echo $line | cut -d' ' -f2)"
|
||||||
|
for lib in "${allowed_libs[@]}" ; do
|
||||||
|
if echo "$libname" | grep "$lib" > /dev/null ; then
|
||||||
|
cp "$libpath" LiteXL.AppDir/usr/lib/
|
||||||
|
continue 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo " Ignoring: $libname"
|
||||||
|
done < <(ldd build/src/lite-xl | awk '{print $1 " " $3}')
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Generating AppImage..."
|
||||||
|
local version=""
|
||||||
|
if [ -n "$VERSION" ]; then
|
||||||
|
version="-$VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
./appimagetool LiteXL.AppDir LiteXL${version}-${ARCH}.AppImage
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_appimagetool
|
||||||
|
download_appimage_apprun
|
||||||
|
if [[ $RUN_BUILD == true ]]; then build_litexl; fi
|
||||||
|
generate_appimage $1
|
|
@ -0,0 +1,103 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [ ! -e "src/api/api.h" ]; then
|
||||||
|
echo "Please run this script from the root directory of Lite XL."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
show_help(){
|
||||||
|
echo
|
||||||
|
echo "Usage: $0 <OPTIONS>"
|
||||||
|
echo
|
||||||
|
echo "Available options:"
|
||||||
|
echo
|
||||||
|
echo "-b --builddir DIRNAME Sets the name of the build directory (not path)."
|
||||||
|
echo " Default: 'build'."
|
||||||
|
echo "-p --prefix Install directory prefix. Mandatory."
|
||||||
|
echo "-s --static Specify if building using static libraries"
|
||||||
|
echo " by using lhelper tool."
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
install_lhelper() {
|
||||||
|
if [[ ! -d lhelper ]]; then
|
||||||
|
git clone https://github.com/franko/lhelper.git
|
||||||
|
pushd lhelper; bash install-github; popd
|
||||||
|
|
||||||
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
|
CC=clang CXX=clang++ lhelper create lite-xl -n
|
||||||
|
else
|
||||||
|
lhelper create lite-xl -n
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Not using `lhelper activate lite-xl`
|
||||||
|
source "$(lhelper env-source lite-xl)"
|
||||||
|
|
||||||
|
lhelper install freetype2
|
||||||
|
lhelper install sdl2 2.0.14-wait-event-timeout-1
|
||||||
|
lhelper install pcre2
|
||||||
|
|
||||||
|
# Help MSYS2 to find the SDL2 include and lib directories to avoid errors
|
||||||
|
# during build and linking when using lhelper.
|
||||||
|
if [[ "$OSTYPE" == "msys" ]]; then
|
||||||
|
CFLAGS=-I${LHELPER_ENV_PREFIX}/include/SDL2
|
||||||
|
LDFLAGS=-L${LHELPER_ENV_PREFIX}/lib
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS meson setup \
|
||||||
|
--buildtype=release \
|
||||||
|
--prefix "$PREFIX" \
|
||||||
|
--wrap-mode=forcefallback \
|
||||||
|
"${BUILD_DIR}"
|
||||||
|
|
||||||
|
meson compile -C build
|
||||||
|
}
|
||||||
|
|
||||||
|
BUILD_DIR=build
|
||||||
|
STATIC_BUILD=false
|
||||||
|
|
||||||
|
for i in "$@"; do
|
||||||
|
case $i in
|
||||||
|
-h|--belp)
|
||||||
|
show_help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-b|--builddir)
|
||||||
|
BUILD_DIR="$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-p|--prefix)
|
||||||
|
PREFIX="$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-s|--static)
|
||||||
|
STATIC_BUILD=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# unknown option
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -n $1 ]]; then
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $PREFIX ]]; then
|
||||||
|
echo "ERROR: prefix argument is missing."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $STATIC_BUILD == true ]]; then
|
||||||
|
install_lhelper
|
||||||
|
fi
|
||||||
|
|
||||||
|
build
|
|
@ -0,0 +1,56 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [ ! -e "src/api/api.h" ]; then
|
||||||
|
echo "Please run this script from the root directory of Lite XL."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# FIXME: For some strange reason sometimes an error occurs randomly on the
|
||||||
|
# MINGW32 build of GitHub Actions; the environment variable $INSTALL_NAME
|
||||||
|
# is correct, but it expands with a drive letter at the end (all builds).
|
||||||
|
|
||||||
|
show_help(){
|
||||||
|
echo
|
||||||
|
echo "Usage: $0 <OPTIONS>"
|
||||||
|
echo
|
||||||
|
echo "Available options:"
|
||||||
|
echo
|
||||||
|
echo "-b --builddir DIRNAME Sets the name of the build directory (not path)."
|
||||||
|
echo " Default: 'build'."
|
||||||
|
echo "-d --destdir DIRNAME Sets the name of the install directory (not path)."
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
BUILD_DIR=build
|
||||||
|
|
||||||
|
for i in "$@"; do
|
||||||
|
case $i in
|
||||||
|
-h|--belp)
|
||||||
|
show_help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-b|--builddir)
|
||||||
|
BUILD_DIR="$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-d|--destdir)
|
||||||
|
DEST_DIR="$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# unknown option
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -n $1 ]]; then
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
DESTDIR="$(pwd)/${DEST_DIR}" meson install --skip-subprojects -C ${BUILD_DIR}
|
||||||
|
|
||||||
|
zip -9rv ${DEST_DIR}.zip ${DEST_DIR}/*
|
|
@ -0,0 +1,69 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [ ! -e "src/api/api.h" ]; then
|
||||||
|
echo "Please run this script from the root directory of Lite XL."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
show_help(){
|
||||||
|
echo
|
||||||
|
echo "Usage: $0 <OPTIONS>"
|
||||||
|
echo
|
||||||
|
echo "Available options:"
|
||||||
|
echo
|
||||||
|
echo "-b --builddir DIRNAME Sets the name of the build directory (no path)."
|
||||||
|
echo " Default: 'build'."
|
||||||
|
echo "-d --destdir DIRNAME Sets the name of the install directory (no path)."
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
BUILD_DIR=build
|
||||||
|
DEST_DIR=lite-xl-src
|
||||||
|
|
||||||
|
for i in "$@"; do
|
||||||
|
case $i in
|
||||||
|
-h|--belp)
|
||||||
|
show_help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-b|--builddir)
|
||||||
|
BUILD_DIR="$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-d|--destdir)
|
||||||
|
DEST_DIR="$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# unknown option
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -n $1 ]]; then
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -d ${BUILD_DIR}; then rm -rf ${BUILD_DIR}; fi
|
||||||
|
if test -d ${DEST_DIR}; then rm -rf ${DEST_DIR}; fi
|
||||||
|
if test -f ${DEST_DIR}.tar.gz; then rm ${DEST_DIR}.tar.gz; fi
|
||||||
|
|
||||||
|
meson subprojects download
|
||||||
|
meson setup ${BUILD_DIR}
|
||||||
|
|
||||||
|
rsync -arv \
|
||||||
|
--exclude /*build*/ \
|
||||||
|
--exclude *.git* \
|
||||||
|
--exclude lhelper \
|
||||||
|
--exclude lite-xl* \
|
||||||
|
--exclude submodules \
|
||||||
|
. ${DEST_DIR}
|
||||||
|
|
||||||
|
cp "${BUILD_DIR}/start.lua" "${DEST_DIR}/data/core"
|
||||||
|
|
||||||
|
tar rf ${DEST_DIR}.tar ${DEST_DIR}
|
||||||
|
gzip -9 ${DEST_DIR}.tar
|
Loading…
Reference in New Issue