Skip to content

Releases: pacstall/pacstall

5.2.1 Lemon-Lime-Flavored Non-Caffeinated Soft Drink

08 Jun 17:51
931763d
Compare
Choose a tag to compare

Pacstall v5.2.1 Lemon-Lime-Flavored Non-Caffeinated Soft Drink Indigo

This update is a bugfix update for bugs present in 5.2.0 found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

  • fix checking -deb packages with overridden source arrays by @oklopfer (#1141)

Pacscript for this releases Deb
pkgname="pacstall"
pkgver="5.2.1"
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'
makedepends=('gzip')
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 --force -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
}

7Up but it is generic

5.2.0 Slime

07 Jun 19:09
14f240e
Compare
Choose a tag to compare

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

5.1.1 Indigo

23 May 22:48
978e290
Compare
Choose a tag to compare

Pacstall v5.1.1 Indigo Indigo

This update is a bugfix update for bugs present in 5.1.0 found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

  • fix checking -deb packages with source_DISTRO arrays by @oklopfer (#1122)

For the Pacscript Maintainers

Note

This update addresses a new feature from the 5.1.0 (Release).
Refer to the release notes when updating pacscripts in the official or third party repos.


Pacscript for this releases Deb
pkgname="pacstall"
pkgver="5.1.1"
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/"
  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
}

Indigo the Dye Dealer

5.1.0 Periwinkle

22 May 22:48
Compare
Choose a tag to compare

Pacstall v5.1.0 Periwinkle Periwinkle

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

Important

Breaking changes to the pacscript spec were added in 5.0.0 (Release).
Refer to the release notes when updating pacscripts in the official or third party repos.

How to use the new features

_DISTRO arrays and variables

In aim to make pacscript declarations more static, and to improve the accuracy of .SRCINFO in pacstall/pacstall-programs, over 2000 new arrays and variables have been introduced; pacscripts should deprecate their usage of $DISTRO checks wherever possible in favor of these additions. These are used just as _CARCH options are, and on all of the same arrays and variables. They provide the following options:

  • var_DISTROBASE, where DISTROBASE is either ubuntu or debian; e.g. source_ubuntu or depends_debian
  • var_DISTROVER, where DISTROVER is a version codename; e.g. source_jammy or depends_bookworm
    • Note: this cannot be the version number, like 22.04 or 12
  • var_DISTROBASE_CARCH, e.g. source_ubuntu_arm64 or depends_debian_i386
  • var_DISTROVER_CARCH, e.g. source_jammy_arm64 or depends_bookworm_i386

A CI maintained file at https://github.com/pacstall/pacstall-programs/blob/master/distrolist will provide an up-to-date list of the supported DISTROVER options.

-Ns/--nosandbox

Some environments, namely chroot or chroot-like ones, are purely incompatible with bwrap (e.g. Debian's live-build, which uses chroot). These environments need to be able to build pacscripts without bwrap involved. While this is how pacstall worked before 5.0.0, this lack of isolation is still potentially dangerous and could lead to unwanted harm on a system. This flag should be used with caution, and is intended for use in those aforementioned environments, which already have other levels of isolation.

-Rr/--remove-repo and repo metalinks

The -A/--add-repo command has existed for a long time, with no accommodating removal function. The new -Rr/--remove-repo command can be used with the exact same syntax as its adding counterpart. In addition to passing links as normal (e.g. https://github.com/user/repo or file://path/to/dir), metalinks (which are used in -Qa and displayed in -Up) may also be used for more user-friendly handling of the commands. They are formatted with the following options:

  • provider:user/repo, where provider is either github or gitlab; defaults to branch master
  • provider:user/repo#branch
  • local:/path/to/dir

Example usage:

pacstall -A github:pacstall/pacstall-programs#5.0.0-master
pacstall -Rr github:pacstall/pacstall-programs#5.0.0-master

pacstall -A local:/home/pacstall/pacstall-programs
pacstall -Rr local:/home/pacstall/pacstall-programs

Pacscript for this releases Deb
pkgname="pacstall"
pkgver="5.1.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/"
  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
}

Pacwinkle

5.0.1 Toucan

07 May 23:25
b94170a
Compare
Choose a tag to compare

Pacstall v5.0.1 Toucan Toucan

This update is a bugfix update for bugs present in 5.0.0 Canary found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug Fixes

Refactoring and minor changes

  • Replace directories with the corresponding *DIR variables by @D-Brox (#/1105)
  • Remove the deprecated /tmp/pacstall-pacdep by @D-Brox in (#1104)
  • Normalize script names by @D-Brox (#1098)
  • Re-run shfmt and chmod +x the scripts by @oklopfer (#1099)

For the Pacscript Maintainers

Important

Breaking changes to the pacscript spec where added in 5.0.0 (Release)
Refer to the release notes when updating pacscripts in the official or third party repos.


Pacscript for this releases Deb
pkgname="pacstall"
pkgver="5.0.1"
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'
  'ninja-build'
  'meson'
  'jq'
)
optdepends=(
  "axel: faster file downloads"
)
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/"
  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
}

Yellow Pac with a beak

5.0.0 Canary

02 May 00:43
Compare
Choose a tag to compare

Pacstall v5.0.0 Canary Canary

This update is a major update focusing on quality of life features and enhanced security and functionality. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

BREAKING CHANGES

Features

Bug Fixes


For the Pacscript Maintainers

How to use the new features and deal with the breaking changes

bwrap

  • Remove sudo calls in pacscripts
  • Internet access is restricted while pacscript functions are running (bypass if you need to with external_connection=true).

With bwrap, potentially dangerous scripts are locked down, by giving the child processes read-only access to every directory except the $PACDIR source directory and the pkgdir staging directory. This will also kill any child processes after bwrap is finished, meaning that no extra code could possibly be left running after.

Require cd for functions

With the introduction of source[@], pacscript functions will no longer be run from the unarchived download, instead they will be run from $srcdir. To maintain compatibility with pre-5.0.0 scripts, we have put cd "${_archive}" into all pacscript functions on our 5.0.0 master branch, which can be used to enter source[0] once extracted.

Version constraints & alternative dependencies

Sometimes when making a pacscript, only certain versions of an apt package will work in conjunction with your package, and until now, the only way to solve that was to make a pacdep on the appropriate version, which is clunky, so now, you can optionally specify version constraints and alternate dependencies on packages. The syntax is as follows:

You may include a version constraint after a package name in the form of pkg>=version, pkg<=version, pkg=version, pkg>version, pkg<version.

After the version with an optional constraint, you may use a pipe to provide alternate dependencies.

depends=("foo>=1.2.3 | bar<=1.2.3")
makedepends=("libfoo=1.0.1")
optdepends=("libidk:i386<5.2.3 | libidk:i386>1.2.5: provides libidk support")

url to source[@]

You can now include multiple files to be downloaded by pacstall, meaning you won't have to make pacscripts like neovide-bin, upscayl-app or sidequest. This should remove a lot of headaches with download files.

You can even have sources defined by multiple architectures, such as if you ever needed to download a specific config file for a specific architecture.

To change from pre-5.0.0 scripts into 5.0.0, change all instances of url (variable) into source (array). Architecture specific sources are defined like source_$arch.

📝 Examples

Let's take amfora-bin for example (https://github.com/pacstall/pacstall-programs/blob/76398ebda1f31e140c48b2d4b562d1127bd37a8b/packages/amfora-bin/amfora-bin.pacscript):

url="https://github.com/makeworld-the-better-one/amfora/releases/download/v${pkgver}/amfora_${pkgver}_linux_64-bit"
hash="a468f97f0e3fa1d69868980fd0e5893388ccd9c849874d26e4d0b426fd6bff3e"
...
wget -q https://roboticoverlords.org/amfora.png
if [[ "$(sha256sum amfora.png | cut -d' ' -f 1)" != "3d029d05cff8c42e82685ce7a61fcaa2118e4cbb6a547816a7d5150868a11092" ]]; then
  fancy_message error "Checksum for amfora.png failed"
  return 1
fi
wget -q https://raw.githubusercontent.com/makeworld-the-better-one/amfora/master/amfora.desktop
if [[ "$(sha256sum amfora.desktop | cut -d' ' -f 1)" != "812e1faad6f6d4817eac60d36813472afebe2980cd2e661151a3d98669274207" ]]; then
  fancy_message error "Checksum for amfora.desktop failed"
  return 1
fi

We can now do something like:

sha256sums=(
  "a468f97f0e3fa1d69868980fd0e5893388ccd9c849874d26e4d0b426fd6bff3e"
  "3d029d05cff8c42e82685ce7a61fcaa2118e4cbb6a547816a7d5150868a11092"
  "812e1faad6f6d4817eac60d36813472afebe2980cd2e661151a3d98669274207"
)
source_amd64=(
  "https://github.com/makeworld-the-better-one/amfora/releases/download/v${pkgver}/amfora_${pkgver}_linux_64-bit"
  "https://roboticoverlords.org/amfora.png"
  "https://raw.githubusercontent.com/makeworld-the-betterne/amfora/master/amfora.desktop"
)

nosubmodules array

Pacstall by default will clone git sources with submodules, but some maintainers may not need that, so now you may use the nosubmodules array which takes destination names from source[@]. For instance:

source=(
  "https://github.com/rhino-linux/rhino-pkg.git"
  "https://github.com/tamton-aquib/stuff.nvim.git"
)
nosubmodules=("rhino-pkg")

will clone rhino-pkg.git without submodules but will clone with submodules for stuff.nvim.git.

homepage to url

This is a simple name change to conform to PKGBUILDs.

replace to replaces

This is a simple name change to conform to PKGBUILDs.

hash to *sums

To conform to PKGBUILDs, the hash variable has been replaced with an array *sums. You now have the following options for specifying hashs:

  • sha256sums (should be used by default; what pacstall pre-5.0.0 used)
  • sha512sums
  • sha384sums
  • sha224sums
  • sha1sums
  • md5sums
  • b2sums

Along with these, you can have architecture specific sums arrays, which should compliment source_$arch in the form of *sums_$arch. If you want to include some hashes to check, but not for certain files, you can put SKIP as the value corresponding to the source array.

maintainer to maintainer[@]

The maintainer variable is now an array, where the first value becomes what apt sees as the maintainer, and everyone after will be seen as an "uploader".

check() function

The check function is used just like it is in PKGBUILDs, which will be run between build() and package(). Here is where maintainers should run any tests to check that the final binary or source code runs as it should. You can skip this function with the -Nc/--nocheck flag.

conflicts array

On pre-5.0.0 pacstall, the only way to prevent certain packages from replacing others was with breaks, but dpkg can get more specific. Both breaks and conflicts will declare incompatibilities, but they have very subtle differences during installation:

breaks will tell dpkg that the two packages can be unpacked on the system at the same time, even though one will be uninstalled soon.
conflicts will tell dpkg that both cannot be unpacked on the system at the same time; one must be uninstalled before the other one is installed. A common example of this is two packages that both have a file in the same location.

If you are a pacscript maintainer and you have an array like this:

breaks=("${gives}-git" "${gives}-bin")

That should now be using the conflicts array.

license array

You may now specify licenses. Licenses must be one of the identifiers on https://spdx.org/licenses/, or to specify a custom license, prefix the value with custom:

-Qa/--quality-assurance command

This is an internalization of https://github.com/pacstall/pacstall-qa, rewritten purely in Bash. You can pass this command to test a package PR before it fully lands upstream. The syntax looks like one of the following:

pacstall -Qa firefox-bin#5853
pacstall -Qa firefox-bin#5853@github:pacstall/pacstall-programs
pacstall -Qa firefox-bin@github:pacstall/pacstall-programs#5853

Where:

  • the package is given first, followed by the pull request NUM, separated by a #.
  • Optionally, a metalink separated by a @ may be provided before or after the #NUM.
    • The metalink...
Read more

4.3.2 Firebrick4

21 Jan 22:27
2d722a3
Compare
Choose a tag to compare

Pacstall v4.3.2 Firebrick4 Firebrick4

This update is a bugfix update for bugs present in 4.3.1 Firebrick2 found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes


Pacscript for this releases Deb
name="pacstall"
pkgver="4.3.2"
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 programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git" "zstd")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <pacstall@pm.me>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

Pac with Firebricks.

4.3.1 Firebrick2

17 Dec 01:15
aefc30a
Compare
Choose a tag to compare

Pacstall v4.3.1 Firebrick2 Firebrick2

This update is a bugfix update for bugs present in 4.3.0 Firebrick found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes


Pacscript for this releases Deb
name="pacstall"
pkgver="4.3.1"
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 programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git" "zstd")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <pacstall@pm.me>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

Pac with Firebricks. We thought it'd be funny for this release to have the name Firebrick2 because it's an X11 color name

4.3.0 Firebrick

15 Dec 22:32
e04500e
Compare
Choose a tag to compare

Pacstall v4.3.0 Firebrick Firebrick

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


Pacscript for this releases Deb
name="pacstall"
pkgver="4.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 programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git" "zstd")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <pacstall@pm.me>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

Pac with fire eyes next to a bunch of bricks on fire lol

4.2.2 Clover

03 Dec 03:02
3d5fd27
Compare
Choose a tag to compare

Pacstall v4.2.2 Clover Clover

This update is a bugfix update for bugs present in 4.2.1 Kelp found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

Performance changes

Changes


Pacscript for this releases Deb
name="pacstall"
pkgver="4.2.2"
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 programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <pacstall@pm.me>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

Pac next to a clover