github pacstall/pacstall 5.2.0
5.2.0 Slime

latest release: 5.2.1
18 days ago

Pacstall v5.2.0 Slime Slime

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 running dpkg --print-architecture, and $AARCH by running echo $HOSTTYPE (with two exceptions, starred below). These are differentiated in the given list with CARCH/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

Don't miss a new pacstall release

NewReleases is sending notifications on new releases.