PKGBUILD work in preparation for release.
This commit is contained in:
+5
-3
@@ -74,9 +74,11 @@ debug.log
|
|||||||
|
|
||||||
# Package artifacts
|
# Package artifacts
|
||||||
*.pkg.tar.zst
|
*.pkg.tar.zst
|
||||||
distro-packages/*/cthulhu/
|
distro-packages/**/.SRCINFO
|
||||||
distro-packages/*/cthulhu-git/
|
distro-packages/**/*.log
|
||||||
distro-packages/*/pkg/
|
distro-packages/*/*/cthulhu/
|
||||||
|
distro-packages/*/*/cthulhu-git/
|
||||||
|
distro-packages/*/*/pkg/
|
||||||
|
|
||||||
# Generated makefiles (should not be committed)
|
# Generated makefiles (should not be committed)
|
||||||
Makefile
|
Makefile
|
||||||
|
|||||||
@@ -125,5 +125,12 @@ Run the narrowest relevant checks first, then broaden testing based on the affec
|
|||||||
- In particular, update both Arch Linux `PKGBUILD` files and, when relevant, Slint's `cthulhu-info` and `README`. Review the Slackware and Slint build files for any corresponding build-dependency changes.
|
- In particular, update both Arch Linux `PKGBUILD` files and, when relevant, Slint's `cthulhu-info` and `README`. Review the Slackware and Slint build files for any corresponding build-dependency changes.
|
||||||
- Preserve the distinction between required, optional, and build-only dependencies so package builds install what Cthulhu actually needs without forcing optional features on every user.
|
- Preserve the distinction between required, optional, and build-only dependencies so package builds install what Cthulhu actually needs without forcing optional features on every user.
|
||||||
|
|
||||||
|
## Arch package verification
|
||||||
|
- After changing an Arch Linux `PKGBUILD`, build every affected recipe in a clean chroot before considering the packaging work complete. Use `pkgctl build --clean` from the `devtools` package; a normal `makepkg` or `yay` build is not a substitute for this check.
|
||||||
|
- Validate both stable and `-git` recipes when a shared packaging change affects both.
|
||||||
|
- Build dependency packages first. When a split helper depends on a locally built package that is unavailable in the configured repositories, pass that package artifact to the helper build with `pkgctl build --clean -I /path/to/package.pkg.tar.zst`.
|
||||||
|
- Run `bash -n`, `shellcheck`, and `makepkg --printsrcinfo` on each changed recipe before the clean-chroot build.
|
||||||
|
- Report which recipes completed clean-chroot builds. If sudo access, network access, or an unavailable dependency prevents a build, state that explicitly instead of describing the package as verified.
|
||||||
|
|
||||||
## Common Cthulhu agent mistakes
|
## Common Cthulhu agent mistakes
|
||||||
- Do not edit or diagnose a stale installed copy under `~/.local/...`; update the repo and rebuild with `./build-local.sh`.
|
- Do not edit or diagnose a stale installed copy under `~/.local/...`; update the repo and rebuild with `./build-local.sh`.
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ optdepends=(
|
|||||||
'python-pillow: Image processing for OCR'
|
'python-pillow: Image processing for OCR'
|
||||||
'python-pytesseract: Python wrapper for Tesseract OCR engine'
|
'python-pytesseract: Python wrapper for Tesseract OCR engine'
|
||||||
'tesseract: OCR engine for text recognition'
|
'tesseract: OCR engine for text recognition'
|
||||||
)
|
|
||||||
optdepends_x86_64=(
|
# The helper is x86_64-only, but this package is architecture-independent.
|
||||||
'cthulhu-wine-access-git: Wine, Proton, NVDA Controller, and Tolk integration'
|
'cthulhu-wine-access-git: Wine, Proton, NVDA Controller, and Tolk integration'
|
||||||
)
|
)
|
||||||
makedepends=(
|
makedepends=(
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ provides=(cthulhu-wine-access)
|
|||||||
conflicts=(cthulhu-wine-access)
|
conflicts=(cthulhu-wine-access)
|
||||||
source=("${_pkgname}::git+https://git.stormux.org/storm/${_pkgname}.git#branch=master")
|
source=("${_pkgname}::git+https://git.stormux.org/storm/${_pkgname}.git#branch=master")
|
||||||
sha512sums=('SKIP')
|
sha512sums=('SKIP')
|
||||||
|
options=(!lto)
|
||||||
|
|
||||||
pkgver() {
|
pkgver() {
|
||||||
cd "${_pkgname}"
|
cd "${_pkgname}"
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
# Maintainer: Storm Dragon <storm_dragon@stormux.org>
|
|
||||||
# shellcheck shell=bash disable=SC2034,SC2154,SC2164
|
|
||||||
|
|
||||||
pkgname=cthulhu-wine-access
|
|
||||||
pkgver=2026.07.18
|
|
||||||
pkgrel=1
|
|
||||||
pkgdesc="Optional Wine and Proton accessibility bridge for Cthulhu"
|
|
||||||
url="https://git.stormux.org/storm/cthulhu"
|
|
||||||
arch=(x86_64)
|
|
||||||
license=(LGPL-2.1-or-later)
|
|
||||||
depends=(
|
|
||||||
"cthulhu=${pkgver}"
|
|
||||||
glib2
|
|
||||||
wine
|
|
||||||
)
|
|
||||||
makedepends=(
|
|
||||||
cmake
|
|
||||||
meson
|
|
||||||
)
|
|
||||||
source=("git+https://git.stormux.org/storm/cthulhu.git#tag=${pkgver}")
|
|
||||||
sha512sums=('SKIP')
|
|
||||||
|
|
||||||
build() {
|
|
||||||
cd cthulhu
|
|
||||||
arch-meson _build -Dwine-access=enabled
|
|
||||||
meson compile -C _build
|
|
||||||
}
|
|
||||||
|
|
||||||
package() {
|
|
||||||
cd cthulhu
|
|
||||||
install -Dm755 _build/cthulhu-wine-access.exe \
|
|
||||||
"$pkgdir/usr/libexec/cthulhu/wine/cthulhu-wine-access.exe"
|
|
||||||
install -Dm755 _build/cthulhu-wine-access.exe.so \
|
|
||||||
"$pkgdir/usr/libexec/cthulhu/wine/cthulhu-wine-access.exe.so"
|
|
||||||
}
|
|
||||||
|
|
||||||
# vim:set sw=2 sts=-1 et:
|
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
pkgbase=cthulhu
|
pkgbase=cthulhu
|
||||||
pkgname=cthulhu
|
pkgname=cthulhu
|
||||||
pkgver=2026.07.18
|
pkgver=2026.05.25
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Desktop-agnostic screen reader with plugin system, forked from Orca"
|
pkgdesc="Desktop-agnostic screen reader with plugin system, forked from Orca"
|
||||||
url="https://git.stormux.org/storm/cthulhu"
|
url="https://git.stormux.org/storm/cthulhu"
|
||||||
@@ -63,9 +63,6 @@ optdepends=(
|
|||||||
'python-pytesseract: Python wrapper for Tesseract OCR engine'
|
'python-pytesseract: Python wrapper for Tesseract OCR engine'
|
||||||
'tesseract: OCR engine for text recognition'
|
'tesseract: OCR engine for text recognition'
|
||||||
)
|
)
|
||||||
optdepends_x86_64=(
|
|
||||||
'cthulhu-wine-access: Wine, Proton, NVDA Controller, and Tolk integration'
|
|
||||||
)
|
|
||||||
makedepends=(
|
makedepends=(
|
||||||
git
|
git
|
||||||
meson
|
meson
|
||||||
@@ -75,7 +72,7 @@ sha512sums=('SKIP')
|
|||||||
|
|
||||||
build() {
|
build() {
|
||||||
cd cthulhu
|
cd cthulhu
|
||||||
arch-meson _build -Dwine-access=disabled
|
arch-meson _build
|
||||||
meson compile -C _build
|
meson compile -C _build
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,14 +12,15 @@ class ArchPkgbuildOptionalWineTests(unittest.TestCase):
|
|||||||
]
|
]
|
||||||
cls.helperPkgbuilds = [
|
cls.helperPkgbuilds = [
|
||||||
repository / "distro-packages" / "Arch-Linux" / name / "PKGBUILD"
|
repository / "distro-packages" / "Arch-Linux" / name / "PKGBUILD"
|
||||||
for name in ("cthulhu-wine-access", "cthulhu-wine-access-git")
|
for name in ("cthulhu-wine-access-git",)
|
||||||
]
|
]
|
||||||
|
|
||||||
def test_main_packages_disable_wine_helper_build(self):
|
def test_main_packages_disable_wine_helper_build(self):
|
||||||
for pkgbuild in self.pkgbuilds:
|
stableContents = self.pkgbuilds[0].read_text(encoding="utf-8")
|
||||||
with self.subTest(pkgbuild=pkgbuild):
|
self.assertNotIn("wine-access", stableContents)
|
||||||
contents = pkgbuild.read_text(encoding="utf-8")
|
|
||||||
self.assertIn("-Dwine-access=disabled", contents)
|
gitContents = self.pkgbuilds[1].read_text(encoding="utf-8")
|
||||||
|
self.assertIn("-Dwine-access=disabled", gitContents)
|
||||||
|
|
||||||
def test_main_packages_do_not_depend_on_wine(self):
|
def test_main_packages_do_not_depend_on_wine(self):
|
||||||
for pkgbuild in self.pkgbuilds:
|
for pkgbuild in self.pkgbuilds:
|
||||||
@@ -33,6 +34,21 @@ class ArchPkgbuildOptionalWineTests(unittest.TestCase):
|
|||||||
}
|
}
|
||||||
self.assertNotIn("wine", dependencyLines)
|
self.assertNotIn("wine", dependencyLines)
|
||||||
|
|
||||||
|
def test_main_packages_advertise_matching_optional_helper(self):
|
||||||
|
stableContents = self.pkgbuilds[0].read_text(encoding="utf-8")
|
||||||
|
self.assertNotIn("cthulhu-wine-access", stableContents)
|
||||||
|
|
||||||
|
gitContents = self.pkgbuilds[1].read_text(encoding="utf-8")
|
||||||
|
self.assertIn(
|
||||||
|
"'cthulhu-wine-access-git: Wine, Proton, NVDA Controller, and Tolk integration'",
|
||||||
|
gitContents,
|
||||||
|
)
|
||||||
|
self.assertNotIn("optdepends_x86_64", gitContents)
|
||||||
|
|
||||||
|
def test_stable_packages_use_current_release_version(self):
|
||||||
|
contents = self.pkgbuilds[0].read_text(encoding="utf-8")
|
||||||
|
self.assertRegex(contents, r"(?m)^pkgver=2026\.05\.25$")
|
||||||
|
|
||||||
def test_optional_helper_packages_own_the_wine_dependency(self):
|
def test_optional_helper_packages_own_the_wine_dependency(self):
|
||||||
for pkgbuild in self.helperPkgbuilds:
|
for pkgbuild in self.helperPkgbuilds:
|
||||||
with self.subTest(pkgbuild=pkgbuild):
|
with self.subTest(pkgbuild=pkgbuild):
|
||||||
@@ -40,6 +56,22 @@ class ArchPkgbuildOptionalWineTests(unittest.TestCase):
|
|||||||
self.assertIn("-Dwine-access=enabled", contents)
|
self.assertIn("-Dwine-access=enabled", contents)
|
||||||
self.assertRegex(contents, r"(?m)^ wine$")
|
self.assertRegex(contents, r"(?m)^ wine$")
|
||||||
|
|
||||||
|
def test_optional_helper_packages_disable_lto(self):
|
||||||
|
for pkgbuild in self.helperPkgbuilds:
|
||||||
|
with self.subTest(pkgbuild=pkgbuild):
|
||||||
|
contents = pkgbuild.read_text(encoding="utf-8")
|
||||||
|
self.assertRegex(contents, r"(?m)^options=\(!lto\)$")
|
||||||
|
|
||||||
|
def test_git_sources_declare_git_as_a_build_dependency(self):
|
||||||
|
for pkgbuild in self.pkgbuilds + self.helperPkgbuilds:
|
||||||
|
with self.subTest(pkgbuild=pkgbuild):
|
||||||
|
contents = pkgbuild.read_text(encoding="utf-8")
|
||||||
|
self.assertIn("git+", contents)
|
||||||
|
makeDependencies = contents.split("makedepends=(", 1)[1].split(
|
||||||
|
")", 1
|
||||||
|
)[0]
|
||||||
|
self.assertRegex(makeDependencies, r"(?m)^ git$")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Reference in New Issue
Block a user