github pacstall/pacstall 5.3.0
5.3.0 Phthalo

latest releases: 5.5.0, 5.4.1, 5.4.0...
4 months ago

Pacstall v5.3.0 Phthalo 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

Bug Fixes


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 declare pkgbase at the top
  • If a pacscript does not include pkgbase
    • pkgbase in .SRCINFO will default to the pkgname
    • packagelist entry is same as before
  • If a pacscript does include pkgbase, then the packagelist 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
}

ScientistPac

Don't miss a new pacstall release

NewReleases is sending notifications on new releases.