diff --git a/.forgejo/workflows/calamares.yml b/.forgejo/workflows/calamares.yml new file mode 100644 index 0000000..80637f9 --- /dev/null +++ b/.forgejo/workflows/calamares.yml @@ -0,0 +1,35 @@ +name: Build and publish calamares + +# Calamares is AUR-only (not in Arch's official repos), so BOS maintains an +# in-house PKGBUILD and publishes the built package to the [breadway] repo. +on: + push: + paths: + - 'packaging/calamares/**' + workflow_dispatch: + +jobs: + calamares: + runs-on: [self-hosted, hestia] + container: + image: archlinux:latest + steps: + - name: Build and publish + env: + PUBLISH_TOKEN: ${{ secrets.REGISTRY_TOKEN }} + run: | + set -euo pipefail + pacman -Syu --noconfirm base-devel git cmake ninja \ + extra-cmake-modules qt6-tools qt6-translations libglvnd \ + kcoreaddons kpmcore libpwquality qt6-declarative qt6-svg yaml-cpp + useradd -m builder + git config --global --add safe.directory '*' + git clone --depth 1 "https://git.breadway.dev/${GITHUB_REPOSITORY}.git" /home/builder/src + chown -R builder:builder /home/builder/src + su builder -c "cd /home/builder/src/packaging/calamares && makepkg -f --noconfirm --nocheck" + PKG=$(find /home/builder/src/packaging/calamares -name '*.pkg.tar.zst' | head -1) + curl -fsS -X PUT \ + -H "Authorization: token ${PUBLISH_TOKEN}" \ + -H "Content-Type: application/octet-stream" \ + --data-binary "@${PKG}" \ + "https://git.breadway.dev/api/packages/Breadway/arch/os" diff --git a/iso/packages.x86_64 b/iso/packages.x86_64 index 5d96c35..64eb299 100644 --- a/iso/packages.x86_64 +++ b/iso/packages.x86_64 @@ -67,9 +67,9 @@ foot # File manager nautilus -# Installer — from the official extra repo +# Installer — Calamares is AUR-only; built in-house and served from [breadway] +# (calamares 3.4.x is already Qt6; there is no separate calamares-qt6 package) calamares -calamares-qt6 # Bread ecosystem — sourced from [breadway] repo bakery diff --git a/packaging/calamares/PKGBUILD b/packaging/calamares/PKGBUILD new file mode 100644 index 0000000..494ae31 --- /dev/null +++ b/packaging/calamares/PKGBUILD @@ -0,0 +1,92 @@ +# Maintainer: Breadway +# In-house copy of the AUR calamares PKGBUILD (Calamares is AUR-only; not in +# Arch's official repos). Built by CI and published to the [breadway] repo. +# Source of truth: https://aur.archlinux.org/packages/calamares +# Contributor: Rustmilian Rustmilian@proton.me + +_pkgname="calamares" +pkgname="$_pkgname" +pkgver=3.4.2 +pkgrel=2 +pkgdesc="Distribution-independent installer framework" +url="https://codeberg.org/Calamares/calamares" +license=("GPL-3.0-or-later") +arch=('i686' 'x86_64') +options=(!debug) + +depends=( + 'kcoreaddons' + 'kpmcore' + 'libpwquality' + 'qt6-declarative' + 'qt6-svg' + 'yaml-cpp' +) +makedepends=( + 'extra-cmake-modules' + 'libglvnd' + 'ninja' + 'qt6-tools' + 'qt6-translations' +) + +_pkgext="tar.gz" +source=("$_pkgname-$pkgver.$_pkgext"::"$url/releases/download/v$pkgver/$_pkgname-$pkgver.$_pkgext") +sha256sums=('733bbbb00dc9f84874bd5c22960952f317ea2537565431179fa2152b2fbfdccc') + +build() { + local _skip_modules=( + dracut + dracutlukscfg + dummycpp + dummyprocess + dummypython + dummypythonqt + initramfs + initramfscfg + interactiveterminal + packagechooser + packagechooserq + services-openrc + ) + + # Correct source directory (inside src/) + local _pkgsrc_dir="$srcdir/$_pkgname-$pkgver" + + local _cmake_options=( + -B build + -S "$_pkgsrc_dir" + -G Ninja + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX='/usr' + -DCMAKE_INSTALL_LIBDIR='lib' + -DWITH_QT6=ON + -DINSTALL_CONFIG=ON + -DSKIP_MODULES="${_skip_modules[*]}" + -DBUILD_TESTING=OFF + + # Explicit KDE install dirs to suppress warnings + -DKDE_INSTALL_BINDIR=/usr/bin + -DKDE_INSTALL_SBINDIR=/usr/sbin + -DKDE_INSTALL_LIBDIR=/usr/lib + -DKDE_INSTALL_LIBEXECDIR=/usr/libexec + -DKDE_INSTALL_INCLUDEDIR=/usr/include + -DKDE_INSTALL_LOCALSTATEDIR=/var + -DKDE_INSTALL_SHAREDSTATEDIR=/usr/share + -DKDE_INSTALL_DATAROOTDIR=/usr/share + -DKDE_INSTALL_DATADIR=/usr/share + -DKDE_INSTALL_LOCALEDIR=/usr/share/locale + -DKDE_INSTALL_MANDIR=/usr/share/man + -DKDE_INSTALL_INFODIR=/usr/share/info + -DKDE_INSTALL_SYSCONFDIR=/etc + + -Wno-dev + ) + + cmake "${_cmake_options[@]}" + cmake --build build +} + +package() { + DESTDIR="$pkgdir" cmake --install build +}