Pacstall v5.2.0 Slime ![Slime](https://camo.githubusercontent.com/bef5462f687ddf3f3b548067551c2bed610d52464e52253f341325d9ae8b32f8/68747470733a2f2f7777772e68746d6c637373636f6c6f722e636f6d2f707265766965772f313238783132382f4130444330302e706e67)
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
- Allow arch-style architecture naming alternatives by @oklopfer (#1126)
- Add
{enhances,recommends,{make,check}conflicts}(_enh_arrs)
,custom_fields
by @oklopfer (#1134) - Parse remote
.SRCINFO
data for updates by @oklopfer (#1136) - Manpage is now shipped as a text file and compressed locally by @Elsie19 (#1139)
Bug Fixes
- Make enhanced
source
arrays override instead of append for-deb
pkgs by @oklopfer (#1131) - Name
.deb
files properly to standard format by @oklopfer (#1133) - Make git clones follow quiet rules correctly by @oklopfer (#1135)
- Handle
{make,check}{depends,conflicts}
with-dummy-builddep
by @oklopfer (#1132)
For the Pacscript Maintainers
How to use the new features
Remote .SRCINFO
data
We have now begun to integrate parsing of .SRCINFO
data into pacstall
directly, meaning if you have a personal pacstall-programs
repository, it is now required for .SRCINFO
generation to be done in it. You can do so by using this script in the pacstall-programs repository:
./scripts/srcinfo.sh packages/${pkgname}/${pkgname}.pacscript
git add packages/${pkgname}/.SRCINFO
If the .SRCINFO
file has already been added to git
, then future runs can keep the file maintained with pre-commit run --all-files
.
Arch-style alternative architectures
To allow for easier porting of packages from the AUR, particularly ones using architecture enhanced arrays, we have introduced the option to use the naming scheme from Arch as an alternative to the Debian naming scheme we currently use. Additionally, a new variable $AARCH
is available to all pacscripts. Below is the updated snippet for https://github.com/pacstall/pacstall/wiki/101.1-Variables#arch:
Two variables,
$CARCH
and$AARCH
are also available to you, and are linked to the current running architecture. You can get the value that$CARCH
would be on your system by runningdpkg --print-architecture
, and$AARCH
by runningecho $HOSTTYPE
(with two exceptions, starred below). These are differentiated in the given list withCARCH
/AARCH
(if only one is listed, the variables are equal).Pacstall supports all architectures that have an official Debian port. These are currently:
amd64
/aarch64
arm64
/x86_64
armel
/arm
armhf
/armv7h
*i386
/i686
*mips64el
ppc64el
riscv64
s390x
Important
While both $CARCH
and $AARCH
will always be accessible to a pacscript, only one naming scheme may be used in the arch
array. This means you cannot mix and match, like arch=('amd64' 'i686')
or arch=('arm64' 'aarch64')
. The naming scheme used will determine which enhanced arrays will be available.
New control fields and custom fields
makeconflicts
This is an array used to declare packages that cannot be installed on the system at build-time, usually because of a package conflict with a build-time dependency.
This array can be enhanced by $arch
and/or $DISTRO
.
checkconflicts
This is an array used to declare packages that cannot be installed on the system for testing in the check
function, usually because of a package conflict with a check dependency.
This array can be enhanced by $arch
and/or $DISTRO
.
recommends
A list of packages that this package does not depend on, but may receive improved functionality from, and most users would want to have included with their install. For Debian's "Suggests" field, use optdepends
. Packages marked "Recommends" have stronger weight than packages marked "Suggests" (optdepends
), but can still be opted out of, unlike depends
.
This array can be enhanced by $arch
and/or $DISTRO
.
enhances
A list of packages that this package can satisfy as a suggested package or recommended package. For instance, if the package foobar
recommends foobar-extras
, in foobar-extras
you would have:
enhances=("foobar")
This array can be enhanced by $arch
and/or $DISTRO
.
custom_fields
This is an optional list of Debian control fields not already used by Pacstall's variables. If you want to provide a custom field to the control
file of a built package, you may do so with the following format options:
custom_fields=(
"Banana: this is a valid field"
"My-Field: this is also a valid field"
"Third-One: even this
is a valid field"
)
There are a few restrictions on field names:
- The following cannot be used:
Depends
,Package
,Version
,Architecture
,Section
,Priority
,Essential
,Vcs-Git
,Build-Depends
,Build-Depends-Arch
,Build-Conflicts
,Build-Conflicts-Arch
,Provides
,Conflicts
,Breaks
,Enhances
,Recommends
,Suggests
,Replaces
,Homepage
,License
,Maintainer
,Uploaders
,Description
,Installed-Size
. - Numbers and spaces are not allowed.
- The first letter must be capital, and all others must be lowercase.
- Hyphens should be used for multiword fields, and follow the same capitalization rule for each word.
- Hyphens cannot be the first or last character in the field name.
This array does not have enhanced options.
Pacscript for this releases Deb
pkgname="pacstall"
pkgver="5.2.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"
)
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
}
![5Up](https://private-user-images.githubusercontent.com/104327997/336635559-eae4754d-aac2-4381-86bd-0419ed7b101e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTc3ODk0NTEsIm5iZiI6MTcxNzc4OTE1MSwicGF0aCI6Ii8xMDQzMjc5OTcvMzM2NjM1NTU5LWVhZTQ3NTRkLWFhYzItNDM4MS04NmJkLTA0MTllZDdiMTAxZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjA3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYwN1QxOTM5MTFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yZTFmZTJhZTJjNDkxNjlkMTc2MTM4MWVkYzJhODY3YzlhMThjM2ZjMGMzMDE5OGY0NWQ0NGJjODI0ZjkxMjUzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9._pjORFv7ryxBG9UMN9w0Z9NrdDVH_Od5rvVZZEHoXeA)