From ed2f9b744d57f946e3bd257beaa275c74bcd2755 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot <groot@kde.org> Date: Mon, 18 Mar 2019 18:50:17 -0400 Subject: [PATCH] CI: AppImage support - Add a script for building a Calamares AppImage file (this is useful in *some* limited contexts, not a general way to distribute Calamares since it's much more efficient to use installed libs). - Add example config files for this AppImage build. - Download the linuxdeploy tools if they are missing - Document script flags some more --- ci/AppImage.md | 45 ++++ ci/AppImage.sh | 227 ++++++++++++++++++ .../branding/default/squid.png | Bin 0 -> 10796 bytes .../modules/displaymanager.conf | 28 +++ data/config-appimage/modules/finished.conf | 21 ++ data/config-appimage/modules/keyboard.conf | 16 ++ data/config-appimage/modules/locale.conf | 31 +++ data/config-appimage/modules/users.conf | 62 +++++ data/config-appimage/modules/welcome.conf | 46 ++++ data/config-appimage/settings.conf | 35 +++ 10 files changed, 511 insertions(+) create mode 100644 ci/AppImage.md create mode 100644 ci/AppImage.sh create mode 100644 data/config-appimage/branding/default/squid.png create mode 100644 data/config-appimage/modules/displaymanager.conf create mode 100644 data/config-appimage/modules/finished.conf create mode 100644 data/config-appimage/modules/keyboard.conf create mode 100644 data/config-appimage/modules/locale.conf create mode 100644 data/config-appimage/modules/users.conf create mode 100644 data/config-appimage/modules/welcome.conf create mode 100644 data/config-appimage/settings.conf diff --git a/ci/AppImage.md b/ci/AppImage.md new file mode 100644 index 000000000..7fa51a8bc --- /dev/null +++ b/ci/AppImage.md @@ -0,0 +1,45 @@ +# AppImage building for Calamares + +> It is possible to build Calamares as an AppImage (perhaps other +> containerized formats as well). This might make sense for +> OEM phase-1 deployments in environments where Calamares is +> not using the native toolkit. + +## AppImage tools + +You will need + - [`linuxdeploy-x86_64.AppImage`](https://github.com/linuxdeploy/linuxdeploy/releases) + - [`linuxdeploy-plugin-qt-x86_64.AppImage`](https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases) + - [`linuxdeploy-plugin-conda.sh`](https://github.com/linuxdeploy/linuxdeploy-plugin-conda) + +These tools should run -- they are bundled as AppImages after all -- on +any modern Linux system. The [AppImage packaging documentation](https://docs.appimage.org/packaging-guide/) +explains how the whole tooling works. + +If the tools are not present, the build script (see below) will download them, +but you should save them for later. + +## AppImage build + +From the **source** directory, run `ci/AppImage.sh`: + - Use `--tools-dir` to copy the tools from a local cache rather than + downloading them again. + - Run it with `--cmake-args` for special CMake handling. + - Use `--skip-build` to avoid rebuilding Calamares all the time. + - Use `--config-dir` to copy in Calamares configuration files (e.g. + *settings.conf* and the module configuration files) from a given + directory. + +The build process will: + - copy (or download) the AppImage tools into a fresh build directory + - configure and build Calamares with suitable settings + - modifies the standard `.desktop` file to be AppImage-compatible + - builds the image with the AppImage tools + +## AppImage caveats + +The resulting AppImage, `Calamares-x86_64.AppImage`, can be run as if it is +a regular Calamares executable. For internal reasons it always passes the +`-X` flag; any other command-line flags are passed in unchanged. Internally, +`XDG_*_DIRS` are used to get Calamares to find the resources inside the AppImage +rather than in the host system. diff --git a/ci/AppImage.sh b/ci/AppImage.sh new file mode 100644 index 000000000..7dccc4d89 --- /dev/null +++ b/ci/AppImage.sh @@ -0,0 +1,227 @@ +#! /bin/sh +# +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright 2019 Adriaan de Groot <adridg@FreeBSD.org> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +### END LICENSES + +### USAGE +# +# Shell script to help build an AppImage for Calamares. +# +# Usage: +# AppImage.sh [-T|--tools-dir <dir>] +# [-C|--cmake-args <args>] +# [-c|--config-dir <dir>] +# [-s|--skip-build] +# +# Multiple --cmake-args arguments will be collected together and passed to +# CMake before building the application. +# +# Use --tools-dir to indicate where the linuxdeploy tools are located. +# +# Use --config to copy a config-directory (with settings.conf and others) +# into the resulting image, +# +### END USAGE + +TOOLS_DIR="." +CMAKE_ARGS="" +NO_SKIP_BUILD="true" +CONFIG_DIR="" +while test "$#" -gt 0 +do + case "x$1" in + x--help|x-h) + sed -e '1,/USAGE/d' -e '/END.USAGE/,$d' < "$0" + return 0 + ;; + x--tools-dir|x-T) + TOOLS_DIR="$2" + shift + ;; + x--cmake-args|x-C) + CMAKE_ARGS="$CMAKE_ARGS $2" + shift + ;; + x--config-dir|x-c) + CONFIG_DIR="$2" + shift + ;; + x--skip-build|x-s) + NO_SKIP_BUILD="false" + ;; + *) + echo "! Unknown argument '$1'." + exit 1 + ;; + esac + test "$#" -gt 0 || { echo "! Missing arguments."; exit 1; } + shift +done + +### Check where we're running +# +BIN_DIR=$( cd $( dirname "$0" ) && pwd -P ) +test -d "$BIN_DIR" || { echo "! Could not find BIN_DIR"; exit 1; } +test -f "$BIN_DIR/AppImage.sh" || { echo "! $BIN_DIR does not have AppImage.sh"; exit 1; } + +SRC_DIR=$( cd "$BIN_DIR/.." && pwd -P ) +test -d "$SRC_DIR" || { echo "! Could not find SRC_DIR"; exit 1; } +test -d "$SRC_DIR/ci" || { echo "! $SRC_DIR isn't a top-level Calamares checkout"; exit 1; } +test -f "$SRC_DIR/CMakeLists.txt" || { echo "! SRC_DIR is missing CMakeLists.txt"; exit 1; } + +### Check pre-requisites +# +BUILD_DIR=build-AppImage +test -d "$BUILD_DIR" || mkdir -p "$BUILD_DIR" +test -d "$BUILD_DIR" || { echo "! Could not create $BUILD_DIR"; exit 1; } + +for tool in linuxdeploy-x86_64.AppImage linuxdeploy-plugin-qt-x86_64.AppImage linuxdeploy-plugin-conda.sh +do + if test -x "$BUILD_DIR/$tool" ; then + # This tool is ok + : + else + if test -f "$TOOLS_DIR/$tool" ; then + cp "$TOOLS_DIR/$tool" "$BUILD_DIR/$tool" || exit 1 + else + fetch=$( grep "^# URL .*$tool\$" "$0" | sed 's/# URL *//' ) + curl -L -o "$BUILD_DIR/$tool" "$fetch" + fi + chmod +x "$BUILD_DIR/$tool" + test -x "$BUILD_DIR/$tool" || { echo "! Missing tool $tool in tools-dir $TOOLS_DIR"; exit 1; } + fi +done + +if test -z "$CONFIG_DIR" ; then + echo "# Using basic settings.conf" +else + test -f "$CONFIG_DIR/settings.conf" || { echo "! No settings.conf in $CONFIG_DIR"; exit 1; } +fi + +### Clean up build-directory +# +rm -rf "$BUILD_DIR/AppDir" +if $NO_SKIP_BUILD ; then + rm -rf "$BUILD_DIR/build" + mkdir "$BUILD_DIR/build" || { echo "! Could not create $BUILD_DIR/build for the cmake-build."; exit 1; } +else + test -d "$BUILD_DIR/build" || { echo "! No build found in $BUILD_DIR, but --skip-build is given."; exit 1; } + test -x "$BUILD_DIR/build/calamares" || { echo "! No complete build found in $BUILD_DIR/build ."; exit 1; } +fi +mkdir "$BUILD_DIR/AppDir" || { echo "! Could not create $BUILD_DIR/AppDir for the AppImage install."; exit 1; } +LOG_FILE="$BUILD_DIR/AppImage.log" +rm -f "$LOG_FILE" + +### Build Calamares +# +if $NO_SKIP_BUILD ; then + echo "# Running cmake ..." + ( + cd "$BUILD_DIR/build" && + cmake "$SRC_DIR" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib $CMAKE_ARGS + ) > "$LOG_FILE" 2>&1 || { tail -10 "$LOG_FILE" ; echo "! Could not run CMake"; exit 1; } + echo "# Running make ..." + ( + cd "$BUILD_DIR/build" && + make -j4 + ) > "$LOG_FILE" 2>&1 || { tail -10 "$LOG_FILE" ; echo "! Could not run make"; exit 1; } +fi +echo "# Running make install ..." +( + cd "$BUILD_DIR/build" && + make install DESTDIR=../AppDir +) > "$LOG_FILE" 2>&1 || { tail -10 "$LOG_FILE" ; echo "! Could not run make install"; exit 1; } + +### Modify installation +# +IMAGE_DIR="$BUILD_DIR/AppDir" + +# Munge the desktop file to not use absolute paths or pkexec +sed -i \ + -e 's+^Exec=.*+Exec=calamares+' \ + -e 's+^Name=.*+Name=Calamares+' \ + "$IMAGE_DIR"/usr/share/applications/calamares.desktop + +# Replace the executable with a shell-proxy +test -x "$IMAGE_DIR/usr/bin/calamares" || { echo "! Does not seem to have installed calamares"; exit 1; } +mv "$IMAGE_DIR/usr/bin/calamares" "$IMAGE_DIR/usr/bin/calamares.bin" +cat > "$IMAGE_DIR/usr/bin/calamares" <<"EOF" +#! /bin/sh +# +# Calamares proxy-script +export XDG_DATA_DIRS="$APPDIR/usr/share/calamares:" +export XDG_CONFIG_DIRS="$APPDIR/etc/calamares:$D/usr/share:" +cd "$APPDIR" +exec "$APPDIR"/usr/bin/calamares.bin -X "$@" +EOF +chmod 755 "$IMAGE_DIR/usr/bin/calamares" +test -x "$IMAGE_DIR/usr/bin/calamares" || { echo "! Does not seem to have proxy for calamares"; exit 1; } + +### Install additional files +# +PLUGIN_DIR=$( qmake -query QT_INSTALL_PLUGINS ) +for plugin in \ + libpmsfdiskbackendplugin.so \ + libpmdummybackendplugin.so +do + cp "$PLUGIN_DIR/$plugin" "$IMAGE_DIR/usr/lib" || { echo "! Could not copy plugin $plugin"; exit 1; } +done + +# Install configuration files +ETC_DIR="$IMAGE_DIR"/etc/calamares +mkdir -p "$ETC_DIR" +test -d "$ETC_DIR" || { echo "! Could not create /etc/calamares in image."; exit 1; } + +if test -z "$CONFIG_DIR" ; then + echo "# Using basic settings.conf" + cp "$SRC_DIR/settings.conf" "$ETC_DIR" +else + test -f "$CONFIG_DIR/settings.conf" || { echo "! No settings.conf in $CONFIG_DIR"; exit 1; } + mkdir -p "$ETC_DIR/modules" + cp "$CONFIG_DIR/settings.conf" "$ETC_DIR" + test -d "$CONFIG_DIR/modules" && cp -r "$CONFIG_DIR/modules" "$ETC_DIR" + test -d "$CONFIG_DIR/branding" && cp -r "$CONFIG_DIR/branding" "$IMAGE_DIR/usr/share/calamares" +fi + +### Build the AppImage +# +# +echo "# Building AppImage" +( + export QT_SELECT=qt5 # Otherwise might pick Qt4 in image + export LD_LIBRARY_PATH=AppDir/usr/lib # RPATH isn't set in the executable + cd "$BUILD_DIR" && + ./linuxdeploy-x86_64.AppImage --appdir=AppDir/ --plugin=qt --output=appimage +) > "$LOG_FILE" 2>&1 || { tail -10 "$LOG_FILE" ; echo "! Could not create image"; exit 1; } + +exit 0 +### Database for installation +# +# URL https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage +# URL https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage +# URL https://raw.githubusercontent.com/TheAssassin/linuxdeploy-plugin-conda/master/linuxdeploy-plugin-conda.sh diff --git a/data/config-appimage/branding/default/squid.png b/data/config-appimage/branding/default/squid.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe615c18a3c5e55837fb5fb35ab04cb5180cd37 GIT binary patch literal 10796 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 PJpm0B9px%T^N{}mnOI*q literal 0 HcmV?d00001 diff --git a/data/config-appimage/modules/displaymanager.conf b/data/config-appimage/modules/displaymanager.conf new file mode 100644 index 000000000..8f8e9c704 --- /dev/null +++ b/data/config-appimage/modules/displaymanager.conf @@ -0,0 +1,28 @@ +# Configure one or more display managers (e.g. SDDM) +# with a "best effort" approach. +--- +#The DM module attempts to set up all the DMs found in this list, in that precise order. +#It also sets up autologin, if the feature is enabled in globalstorage. +#The displaymanagers list can also be set in globalstorage, and in that case it overrides anything set up here. +displaymanagers: + - slim + - sddm + - lightdm + - gdm + - mdm + - lxdm + - kdm + +#Enable the following settings to force a desktop environment in your displaymanager configuration file: +#defaultDesktopEnvironment: +# executable: "startkde" +# desktopFile: "plasma" + +#If true, try to ensure that the user, group, /var directory etc. for the +#display manager are set up correctly. This is normally done by the distribution +#packages, and best left to them. Therefore, it is disabled by default. +basicSetup: false + +#If true, setup autologin for openSUSE. This only makes sense on openSUSE +#derivatives or other systems where /etc/sysconfig/displaymanager exists. +sysconfigSetup: false diff --git a/data/config-appimage/modules/finished.conf b/data/config-appimage/modules/finished.conf new file mode 100644 index 000000000..29e5e49b4 --- /dev/null +++ b/data/config-appimage/modules/finished.conf @@ -0,0 +1,21 @@ +# Configuration for the "finished" page, which is usually shown only at +# the end of the installation (successful or not). +--- +# The finished page can hold a "restart system now" checkbox. +# If this is false, no checkbox is shown and the system is not restarted +# when Calamares exits. +restartNowEnabled: true + +# Initial state of the checkbox "restart now". Only relevant when the +# checkbox is shown by restartNowEnabled. +restartNowChecked: false + +# If the checkbox is shown, and the checkbox is checked, then when +# Calamares exits from the finished-page it will run this command. +# If not set, falls back to "shutdown -r now". +restartNowCommand: "systemctl -i reboot" + +# When the last page is (successfully) reached, send a DBus notification +# to the desktop that the installation is done. This works only if the +# user as whom Calamares is run, can reach the regular desktop session bus. +notifyOnFinished: false diff --git a/data/config-appimage/modules/keyboard.conf b/data/config-appimage/modules/keyboard.conf new file mode 100644 index 000000000..ee97c3939 --- /dev/null +++ b/data/config-appimage/modules/keyboard.conf @@ -0,0 +1,16 @@ +# NOTE: you must have ckbcomp installed and runnable +# on the live system, for keyboard layout previews. +--- +# The name of the file to write X11 keyboard settings to +# The default value is the name used by upstream systemd-localed. +# Relative paths are assumed to be relative to /etc/X11/xorg.conf.d +xOrgConfFileName: "/etc/X11/xorg.conf.d/00-keyboard.conf" + +# The path to search for keymaps converted from X11 to kbd format +# Leave this empty if the setting does not make sense on your distribution. +convertedKeymapPath: "/lib/kbd/keymaps/xkb" + +# Write keymap configuration to /etc/default/keyboard, usually +# found on Debian-related systems. +# Defaults to true if nothing is set. +#writeEtcDefaultKeyboard: true diff --git a/data/config-appimage/modules/locale.conf b/data/config-appimage/modules/locale.conf new file mode 100644 index 000000000..8ae016279 --- /dev/null +++ b/data/config-appimage/modules/locale.conf @@ -0,0 +1,31 @@ +--- +# This settings are used to set your default system time zone. +# Time zones are usually located under /usr/share/zoneinfo and +# provided by the 'tzdata' package of your Distribution. +# +# Distributions using systemd can list available +# time zones by using the timedatectl command. +# timedatectl list-timezones +# +# The starting timezone (e.g. the pin-on-the-map) when entering +# the locale page can be set through keys *region* and *zone*. +# If either is not set, defaults to America/New_York. +# +region: "Europe" +zone: "Amsterdam" + + +# Enable only when your Distribution is using an +# custom path for locale.gen +#localeGenPath: "PATH_TO/locale.gen" + +# GeoIP based Language settings: +# +# GeoIP need an working Internet connection. +# +geoipUrl: "https://geoip.kde.org/v1/calamares" + +# GeoIP style. Leave commented out for the "legacy" interpretation. +# This setting only makes sense if geoipUrl is set, enabliing geoIP. +geoipStyle: "json" + diff --git a/data/config-appimage/modules/users.conf b/data/config-appimage/modules/users.conf new file mode 100644 index 000000000..64b3aac43 --- /dev/null +++ b/data/config-appimage/modules/users.conf @@ -0,0 +1,62 @@ +# Configuration for the one-user-system user module. +# +# Besides these settings, the user module also places the following +# keys into the globalconfig area, based on user input in the view step. +# +# - hostname +# - username +# - password (obscured) +# - autologinUser (if enabled, set to username) +# +# These globalconfig keys are set when the jobs for this module +# are created. +--- +# Used as default groups for the created user. +# Adjust to your Distribution defaults. +defaultGroups: + - users + - lp + - video + - network + - storage + - wheel + - audio + +# Some Distributions require a 'autologin' group for the user. +# Autologin causes a user to become automatically logged in to +# the desktop environment on boot. +# Disable when your Distribution does not require such a group. +autologinGroup: autologin +# You can control the initial state for the 'autologin checkbox' in UsersViewStep here. +# Possible values are: true to enable or false to disable the checkbox by default +doAutologin: true + +# When set to a non-empty string, Calamares creates a sudoers file for the user. +# /etc/sudoers.d/10-installer +# Remember to add sudoersGroup to defaultGroups. +# +# If your Distribution already sets up a group of sudoers in its packaging, +# remove this setting (delete or comment out the line below). Otherwise, +# the setting will be duplicated in the /etc/sudoers.d/10-installer file, +# potentially confusing users. +sudoersGroup: wheel + +# Setting this to false , causes the root account to be disabled. +setRootPassword: true +# You can control the initial state for the 'root password checkbox' in UsersViewStep here. +# Possible values are: true to enable or false to disable the checkbox by default. +# When enabled the user password is used for the root account too. +# NOTE: doReusePassword requires setRootPassword to be enabled. +doReusePassword: true + +# These are optional password-requirements that a distro can enforce +# on the user. The values given in this sample file disable each check, +# as if the check was not listed at all. +passwordRequirements: + minLength: -1 # Password at least this many characters + maxLength: -1 # Password at most this many characters + libpwquality: + - minlen=0 + - minclass=0 + +userShell: /bin/bash diff --git a/data/config-appimage/modules/welcome.conf b/data/config-appimage/modules/welcome.conf new file mode 100644 index 000000000..8dae3e957 --- /dev/null +++ b/data/config-appimage/modules/welcome.conf @@ -0,0 +1,46 @@ +# Configuration for the welcome module. The welcome page +# displays some information from the branding file. +# Which parts it displays can be configured through +# the show* variables. +# +# In addition to displaying the welcome page, this module +# can check requirements for installation. +--- +# Display settings for various buttons on the welcome page. +showSupportUrl: true +showKnownIssuesUrl: true +showReleaseNotesUrl: true + +# Requirements checking. These are general, generic, things +# that are checked. They may not match with the actual requirements +# imposed by other modules in the system. +requirements: + # Amount of available disk, in GB. Floating-point is allowed here. + # Note that this does not account for *usable* disk, so it is possible + # to pass this requirement, yet have no space to install to. + requiredStorage: 5.5 + + # Amount of available RAM, in GB. Floating-point is allowed here. + requiredRam: 1.0 + + # To check for internet connectivity, Calamares does a HTTP GET + # on this URL; on success (e.g. HTTP code 200) internet is OK. + internetCheckUrl: http://google.com + + # List conditions to check. Each listed condition will be + # probed in some way, and yields true or false according to + # the host system satisfying the condition. + # + # This sample file lists all the conditions that are known. + check: + - ram + - power + - internet + - root + - screen + # List conditions that **must** be satisfied (from the list + # of conditions, above) for installation to proceed. + # If any of these conditions are not met, the user cannot + # continue past the welcome page. + required: + - ram diff --git a/data/config-appimage/settings.conf b/data/config-appimage/settings.conf new file mode 100644 index 000000000..54026cd6e --- /dev/null +++ b/data/config-appimage/settings.conf @@ -0,0 +1,35 @@ +# Configuration file for Calamares +# Syntax is YAML 1.2 +--- +modules-search: [ usr/lib/calamares/modules ] + +# YAML: list of maps of string:string key-value pairs. +#instances: +#- id: owncloud +# module: webview +# config: owncloud.conf + +# Sequence section. This section describes the sequence of modules, both +# viewmodules and jobmodules, as they should appear and/or run. +sequence: +- show: + - welcome + - locale + - keyboard + - users + - summary +- exec: + - locale + - keyboard + - users + - displaymanager + - networkcfg +- show: + - finished + +branding: default + +prompt-install: false +# OEM mode +dont-chroot: true +disable-cancel: false