Pacstall v5.3.0 Phthalo
This update is a quality of life update focusing on important bug fixes and adding requested features. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master
, or reinstall using the deb file.
Developers, Developers, Developers...
Features
Bug Fixes
- Run
replaces
check beforebreaks
/conflicts
by @oklopfer (#1146) - Make sure builddeps always install and not build by @oklopfer (#1147)
- Fix
-Qa
with packages that have a.
by @oklopfer (#1148) - Don't
chown
with a group by @oklopfer (#1149) stacktrace
and saferm
s, pretty deps prompt by @oklopfer (#1156)- Always log at least one
provides
by @oklopfer (#1165) - Add
Bugs
deb-logging by @Elsie19 (#1167) - Decompress
.tar.bz
/.tbz
without the2
by @oklopfer (#1170) - Make pacdeps check prompt pretty by @oklopfer (#1172)
- only make
/tmp/pacstall-no-build
with-K
by @oklopfer (#1174) - and many more small ones
For the Pacscript Maintainers
How to use the new features
pkgbase
splitting
Like in the AUR, pacscripts can now build multiple packages:
pkgbase="rhino-pkg-git"
source=("https://github.com/rhino-linux/rhino-pkg.git")
pkgver="0.1.2"
makedepends=("make" "gettext")
depends=("gettext")
pkgdesc="Rhino-pkg wrapper script"
maintainer=("Oren Klopfer <oren@taumoda.com>")
pkgname=("rhino-pkg-git" "rpk-git")
package_rhino-pkg-git() {
gives="rhino-pkg"
cd "${gives}"
DESTDIR="${pkgdir}" make install
}
package_rpk-git() {
gives="rpk"
pacdeps=("pacstall-qa-git")
cd "${pkgbase%-git}"
DESTDIR="${pkgdir}" make install
mv "${pkgdir}/usr/bin/rhino-pkg" "${pkgdir}/usr/bin/rpk"
rm -r "${pkgdir}/usr/share/locale"
}
The following variables can be overridden in split package functions: gives
, pkgdesc
, arch
, url
, license
, depends
, checkdepends
, optdepends
, pacdeps
, provides
, conflicts
, breaks
, replaces
, enhances
, recommends
, priority
, backup
, repology
Inside the pacstall-programs repository, .SRCINFO
generation is now required to be done before packagelist
generation. Both are handled by ./scripts/srcinfo.sh
:
./scripts/srcinfo.sh write packages/pkgname/pkgname.pacscript
# generates .SRCINFO to packages/pkgname/.SRCINFO
# OR
list=($(ls packages/*/*.pacscript))
./scripts/srcinfo.sh write "${list[@]}"
# does it for the whole repo
./scripts/srcinfo.sh check
# checks if SRCINFOs exists for files and is tracked by git, for preventing merges without one
# can be run on individual files or array of files, assumes every file if none passed
./scripts/srcinfo.sh packagelist
# must be run from the head of the repository, updates the packagelist
- All
.SRCINFO
files now declarepkgbase
at the top - If a pacscript does not include
pkgbase
pkgbase
in.SRCINFO
will default to thepkgname
packagelist
entry is same as before
- If a pacscript does include
pkgbase
, then thepackagelist
entries are split up like:
${pkgbase}:pkgbase
${pkgbase}:${pkgname}
so for the example in #1153, our entries become:
rhino-pkg-git:pkgbase
rhino-pkg-git:rpk-git
rhino-pkg-git:rhino-pkg-git
This can of course also be done by hand, but either way is required for pacstall
to handle pkgbase
split packages.
They can then be called to install with any of the following:
pacstall -I rhino-pkg-git # same as with :pkgbase
pacstall -I rhino-pkg-git:pkgbase # prompts which to install
pacstall -I rhino-pkg-git:rpk-git # auto-selects only rpk-git split package
pacstall -I rhino-pkg-git:rhino-pkg-git # auto-selects only rhino-pkg-git split package
if using -Qa, this must be done without any :extensions
:
pacstall -Qa "${pkgbase}#6143" # prompts which to install, will do all if none selected
pacstall -Qa rhino-pkg-git#1153 # as an example
Once installed on the system, you call split packages without their parent:
pacstall -Qi rpk-git
pacstall -R rpk-git
parent distros
the following distro examples are described with the combination child:codename/num|parent:codename/num
:
debian:trixie/13|debian:sid/sid
elementary:next/8|ubuntu:noble/24.04
linuxmint:elsie/5|debian:bullseye/11
linuxmint:virginia/21.3|ubuntu:jammy/22.04
pop:focal/20.04|ubuntu:focal/20.04
ubuntu:devel/2024.1
ubuntu:oracular/24.10
for each of these, the new variable CDISTRO
is:
debian:trixie
elementary:next
linuxmint:elsie
linuxmint:virginia
pop:focal
ubuntu:devel
ubuntu:oracular
and DISTRO
is:
debian:sid
ubuntu:noble
debian:bullseye
ubuntu:jammy
ubuntu:focal
ubuntu:devel
ubuntu:oracular
Important
enhanced arrays use the DISTRO
variable.
Pacscript for this releases Deb
pkgname="pacstall"
pkgver="5.3.0"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install and update downstream programs,
without scouring github repos and the likes."
url='https://pacstall.dev'
depends=(
'bash'
'curl'
'wget'
'git'
'unzip'
'zstd'
'tar'
'sensible-utils'
'iputils-ping'
'lsb-release'
'aptitude'
'bubblewrap'
'build-essential'
'jq'
'distro-info-data'
)
optdepends=(
"axel: faster file downloads"
"ninja-build: common building tool"
"meson: common building tool"
"spdx-licenses: commonly provided licenses"
)
maintainer=(
"Pacstall Team <pacstall@pm.me>"
"Elsie19 <hwengerstickel@pm.me>"
)
backup=('usr/share/pacstall/repo/pacstallrepo' 'usr/share/pacstall/update')
source=("https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip")
prepare() {
cd "${pkgname}-${pkgver}"
mkdir -p "${pkgdir}/usr/bin/"
mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
mkdir -p "${pkgdir}/usr/share/man/man8/"
mkdir -p "${pkgdir}/usr/share/bash-completion/completions"
mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d"
mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
mkdir -p "${pkgdir}/var/lib/pacstall/metadata/"
mkdir -p "${pkgdir}/var/cache/pacstall/"
mkdir -p "${pkgdir}/usr/src/pacstall/"
}
package() {
cd "${pkgname}-${pkgver}"
install -Dm755 pacstall "${pkgdir}/usr/bin/"
install -Dm755 "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
gzip -9n misc/pacstall.8
install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
install "misc/completion/fish" "${pkgdir}/usr/share/fish/vendor_completions.d/pacstall.fish"
install "misc/completion/bash" "${pkgdir}/usr/share/bash-completion/completions/pacstall"
echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" > /dev/null
}