You are not logged in.

#1 2026-01-15 00:46:12

sebastianprehn
Member
From: Denmark
Registered: 2026-01-03
Posts: 4
Website

[FINISHED] PKGBUILD Review: futhark-bin

I saw that the futhark-bin package was outdated by a few versions, and had been marked outdated since 2025-09-28, with Futhark having been updated 5 times since the latest version submitted to the AUR. I thought that it would serve as a a good entry into starting to contribute to the AUR and wanted to give maintainership a try since I use Futhark myself, use the AUR frequently, and built it successfully using 'makepkg' on the below PKGBUILD. I wrote an email to redponike on 2026-01-03 to tell them that the PKGBUILD below installed the latest stable release, and as of this date I have not received an answer.

I do have a few questions, however.

  • AUR submission guidelines section 1.3 writes about cloning repositories (when creating a new one), but if I were to orphan the package, would I simply push to the same Git Clone URL listed on the package (having set up an existing SSH key pair for AUR as described in 1.2 of the above link)?

  • From the same page, section 1.4: This would involve me using

    makepkg --printsrcinfo > .SRCINFO

    to update the .SRCINFO each time I update the PKGBUILD, right?

  • Is the 'make configure' step of a manual install handled by the depends in the PKGBUILD? Or should users themselves install dependencies if they're not using an AUR helper like yay or paru? And can I run 'makepkg' in the folder to check that it builds correctly before using something like 'Pacman -U', or can it affect my user build beforehand? I'm trying to think ahead where I'd want to test it before pushing it.

  • Following Creating packages, I ran 'namcap PKGBUILD', and it said that 'x86_64' should be cahnged to $CARCH, but this does not seem to work?

  • 'namcap futhark-bin-0.25.34-1-x86_64.pkg.tar.zst' produces

    futhark-bin W: ELF file ('usr/bin/futhark') lacks FULL RELRO, check LDFLAGS.
    futhark-bin W: ELF file ('usr/bin/futhark') lacks PIE.
    futhark-bin E: custom:ISC is not a valid SPDX license identifier. See https://spdx.org/licenses/ for valid identifiers, or prefix the identifier with 'LicenseRef-', if it is custom.
    futhark-bin W: Dependency included, but may not be needed ('ncurses5-compat-libs')
    futhark-bin W: Dependency included, but may not be needed ('zlib')
    futhark-bin W: Dependency included, but may not be needed ('gmp')

    This is why I added 'LicenseRef-' instead of 'custom:', which made the warning go away on subsequent 'makepkg' runs. How should I interpret the other warnings?

    Looking up the ELF file errors, I found Error: ELF file ('usr/bin/onedrive') lacks FULL RELRO, check LDFLAGS. and namcap: many warnings on ELF files - lacks FULL RELRO and lacks PIE, but I'm unable to find any flags in the Makefile in 'src/futhark-0.25.34-linux-x86_64/Makefile', unless 'PREFIX' is a flag that is somehow used wrongly in the below PKGBUILD, or if I should somehow use 'MANPREFIX',. I also don't quite understand the point about PIE, and how I would check whether it's a good idea for this package.

PKGBUILD:

# Maintainer: Sebastian Larsen Prehn <slp (at) sebastianprehn (dot) dk>
# Contributor: redponike <proton (dot) me>
# Contributor: Mikael Blomstrand <gmail.com: kmbloms>

pkgname=futhark-bin
provides=('futhark')
conflicts=('futhark')
pkgver=0.25.34
pkgrel=1
pkgdesc="A data-parallel functional programming language."
arch=('x86_64')
url='https://futhark-lang.org/'
license=('LicenseRef-ISC')
depends=('ncurses5-compat-libs' 'zlib' 'gmp')
optdepends=('opencl-headers: OpenCL backend'
            'cuda: CUDA backend'
            'python-pyopencl: PyOpenCL backend')
source=("https://github.com/diku-dk/futhark/releases/download/v${pkgver}/futhark-${pkgver}-linux-x86_64.tar.xz"
		"https://raw.githubusercontent.com/diku-dk/futhark/v${pkgver}/LICENSE")

sha256sums=('b860a39613b17dfa14d3068ff8b8b23fc83c5b1ac6a1a0010256d269bdf0bf78'
            'd029ffa271dcee84cc883fb9e83744f703401e2abb097b8ef084fff0674d935b')

package() {
    cd "${srcdir}/futhark-${pkgver}-linux-x86_64"
    make PREFIX="${pkgdir}/usr" install
    install -Dm644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}

Mentioned Makefile, since I reference it:

#  High-performance purely functional data-parallel array programming on the GPU
# See LICENSE file for copyright and license details.

include config.mk

BINARIES=bin/*

all:
	@echo "This is a precompiled binary distribution of Futhark - no building necessary."
	@echo "But you may want to check out config.mk to ensure that 'make install' installs to the right place."

install:
	@echo \# Installing executable files to ${PREFIX}/bin
	@mkdir -p ${PREFIX}/bin/
	install bin/* ${PREFIX}/bin/
	@echo \# Installing manual page to ${MANPREFIX}/man1
	@mkdir -p ${MANPREFIX}/man1/
	@echo \# Installing manpages to ${MANPREFIX}/man1/
	install -D -m 644 share/man/man1/* ${MANPREFIX}/man1/


.PHONY: all install

EDIT:
I also looked into PKGBUILD, and saw that it had a changelog entry. Considering each release of Futhark has a changelog (as seen here), should I include something there?

EDIT 2:
Looking into the dependencies after checking over the 'namcap' output once more,  I tried to remove the built PKGBUILD, removed all hard dependencies and then built a new .SRCINFO, and tried to 'makepkg' again, succeeding. I tried to remove it once again, removed 'ncurses5-compat-libs' from my computer along with my futhark installation, rebuilt the PKGBUILD again, and it succeeded, and Futhark worked when I then ran 'makepkg --install' to add it to pacman. Does this mean I should remove those dependencies, as they seem to be what is needed when building from source as this link says: Futhark Installation documentation

Last edited by sebastianprehn (2026-01-17 20:32:04)

Offline

#2 2026-01-15 09:44:10

Lone_Wolf
Administrator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 14,700

Re: [FINISHED] PKGBUILD Review: futhark-bin

Following Creating packages, I ran 'namcap PKGBUILD', and it said that 'x86_64' should be cahnged to $CARCH, but this does not seem to work?

namcap is overzealous with that message

Is the 'make configure' step of a manual install handled by the depends in the PKGBUILD? Or should users themselves install dependencies if they're not using an AUR helper like yay or paru? And can I run 'makepkg' in the folder to check that it builds correctly before using something like 'Pacman -U', or can it affect my user build beforehand? I'm trying to think ahead where I'd want to test it before pushing it.

https://wiki.archlinux.org/title/Arch_U … requisites
make is a member of base-devel

Best way to check what deps are needed at compiletime is to perform a clean chroot build


The package is named incorrectly, it should be futhark .


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.

clean chroot building not flexible enough ?
Try clean chroot manager by graysky

Offline

#3 2026-01-15 12:23:56

sebastianprehn
Member
From: Denmark
Registered: 2026-01-03
Posts: 4
Website

Re: [FINISHED] PKGBUILD Review: futhark-bin

Lone_Wolf wrote:

https://wiki.archlinux.org/title/Arch_U … requisites
make is a member of base-devel

Best way to check what deps are needed at compiletime is to perform a clean chroot build

I might misunderstand how 'pkgctl' works, but after trying to run 'pkgctl build' inside the repository of the PKGBUILD with only the PKGBUILD and .SRCINFO file present, I got the output of [1]. It resulted in the files:

  • futhark-0.25.34-linux-x86_64.tar.xz

  • futhark-bin-0.25.34-1-x86_64.pkg.tar.zst

  • futhark-bin-debug-0.25.34-1-x86_64.pkg.tar.zst

  • LICENSE

  • PKGBUILD-namcap.log

  • futhark-bin-0.25.34-1-x86_64-package.log

  • futhark-bin-0.25.34-1-x86_64.pkg.tar.zst-namcap.log

  • futhark-bin-debug-0.25.34-1-x86_64.pkg.tar.zst-namcap.log

Lone_Wolf wrote:

The package is named incorrectly, it should be futhark .

I trust that you are right, but was just curious, as when I read AUR submission guidelines, in section 1.1, it has the following line

Packages that use prebuilt deliverables, when the sources are available, must use the -bin suffix.

and when I run 'makepkg' in the repository, I get the following files (with futhark executables boldened)

  • futhark-0.25.34-linux-x86_64.tar.xz

  • futhark-bin-debug-0.25.34-1-x86_64.pkg.tar.zst

  • pkg

    • pkg/futhark-bin

      • pkg/futhark-bin/usr/

        • pkg/futhark-bin/usr/bin/futhark

        • pkg/futhark-bin/usr/share/

          • pkg/futhark-bin/usr/share/licenses/futhark-bin/LICENSE

          • pkg/futhark-bin/usr/share/man/man1/{lot of futhark-x.1.gz files} (x being different topics like autotune, bench, c etc.)

    • pkg/futhark-bin-debug

      • pkg/futhark-bin-debug/usr/lib/debug/usr/bin/futhark.debug

      • pkg/futhark-bin-debug/usr/src/debug/futhark-bin/ (empty folder)

  • src

    • src/futhark-0.25.34-linux-x86_64

      • src/futhark-0.25.34-linux-x86_64/bin/futhark

      • src/futhark-0.25.34-linux-x86_64/commit-id

      • src/futhark-0.25.34-linux-x86_64/config.mk

      • src/futhark-0.25.34-linux-x86_64/LICENSE

      • src/futhark-0.25.34-linux-x86_64/Makefile

      • src/futhark-0.25.34-linux-x86_64/README.md

      • src/futhark-0.25.34-linux-x86_64/share/man/man1/{same situation as in pkg}

    • futhark-0.25.34-linux-x86_64.tar.xz

    • LICENSE

  • futhark-bin-0.25.34-1-x86_64.pkg.tar.zst

  • LICENSE

I thought that meant we had prebuilt deliverables? Another reason why I suspected it was a binary installation is that when I run 'futhark --version', it has the information that it was Compiled with GHC 9.8.4, while my own ghc is GHC 9.14.1.

And in case I'm just misunderstanding that line, how would the process to orphan and rename the package go?

  • 1. orphan the package on the AUR (and get this orphan request accepted. How do I then become the maintainer? Simply by pushing to the repository?)

  • 1.2 It seems like a matthewq337 have requested the package to be orphaned, so this whole thread might be redundant seeing how they beat me to it.

  • 2. Set the line 'replaces=('futhark-bin')' and change 'pkgname=futhark'?

For how long should a 'replaces' line exist?
It also seems from the 'conflicts' line that there used to be a 'futhark' package, as that is also what is linked in the Futhark documentation alongside a 'futhark-nightly' (which coincidentally is most likely the second package I would look into making, but one step at a time). What could a reason be that the 'futhark' package was deleted, and only this 'futhark-bin' persisted?

[1]

ebastian@archibald ~/pkgs/aur/futhark-bin (master) $ pkgctl build
==> Updating pacman database cache
:: Synchronizing package databases...
 core downloading...
 extra downloading...
 multilib downloading...
==> Building futhark-bin
  ->   repo: extra
  ->   arch: x86_64
  -> worker: sebastian-0
==> Building futhark-bin for [extra] (x86_64)
[sudo] password for sebastian:
:: Synchronizing package databases...
 core downloading...
 extra downloading...
:: Starting full system upgrade...
 there is nothing to do
==> Building in chroot for [extra] (x86_64)...
==> Synchronizing chroot copy [/var/lib/archbuild/extra-x86_64/root] -> [sebastian-0]...done
==> Making package: futhark-bin 0.25.34-1 (Thu Jan 15 12:41:04 2026)
==> Retrieving sources...
  -> Downloading futhark-0.25.34-linux-x86_64.tar.xz...
  % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                 Dload  Upload  Total   Spent   Left   Speed
  0      0   0      0   0      0      0      0                              0
100  7.75M 100  7.75M   0      0 17.06M      0                              0
  -> Downloading LICENSE...
  % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                 Dload  Upload  Total   Spent   Left   Speed
100    767 100    767   0      0   3998      0                              0
==> Validating source files with sha256sums...
    futhark-0.25.34-linux-x86_64.tar.xz ... Passed
    LICENSE ... Passed
==> Making package: futhark-bin 0.25.34-1 (Thu Jan 15 11:41:08 2026)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Found futhark-0.25.34-linux-x86_64.tar.xz
  -> Found LICENSE
==> WARNING: Skipping all source file integrity checks.
==> Extracting sources...
  -> Extracting futhark-0.25.34-linux-x86_64.tar.xz with bsdtar
==> Entering fakeroot environment...
==> Starting package()...
# Installing executable files to /build/futhark-bin/pkg/futhark-bin/usr/bin
install bin/* /build/futhark-bin/pkg/futhark-bin/usr/bin/
# Installing manual page to /build/futhark-bin/pkg/futhark-bin/usr/share/man/man1
# Installing manpages to /build/futhark-bin/pkg/futhark-bin/usr/share/man/man1/
install -D -m 644 share/man/man1/* /build/futhark-bin/pkg/futhark-bin/usr/share/man/man1/
==> Tidying install...
  -> Removing libtool files...
  -> Removing static library files...
  -> Purging unwanted files...
  -> Stripping unneeded symbols from binaries and libraries...
  -> Compressing man and info pages...
==> Checking for packaging issues...
==> Creating package "futhark-bin"...
  -> Generating .PKGINFO file...
  -> Generating .BUILDINFO file...
  -> Generating .MTREE file...
  -> Compressing package...
==> Creating package "futhark-bin-debug"...
  -> Generating .PKGINFO file...
  -> Generating .BUILDINFO file...
  -> Generating .MTREE file...
  -> Compressing package...
==> Leaving fakeroot environment.
==> Finished making: futhark-bin 0.25.34-1 (Thu Jan 15 11:41:23 2026)
==> Installing package futhark-bin with pacman -U...
loading packages...
resolving dependencies...
looking for conflicting packages...

Package (2)        New Version  Net Change

futhark-bin        0.25.34-1     48.77 MiB
futhark-bin-debug  0.25.34-1      0.00 MiB

Total Installed Size:  48.77 MiB

:: Proceed with installation? [Y/n]
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing futhark-bin...
Optional dependencies for futhark-bin
    opencl-headers: OpenCL backend
    cuda: CUDA backend
    python-pyopencl: PyOpenCL backend
installing futhark-bin-debug...
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
resolving dependencies...
looking for conflicting packages...

Package (9)                      New Version  Net Change

core/elfutils                    0.194-1        3.56 MiB
core/licenses                    20240728-1     1.54 MiB
core/mpdecimal                   4.0.1-1        0.33 MiB
extra/pyalpm                     0.11.1-1       0.23 MiB
core/python                      3.14.2-2      72.04 MiB
extra/python-boolean.py          5.0-2          0.36 MiB
extra/python-license-expression  30.4.4-2       1.24 MiB
extra/python-pyelftools          0.32-2         2.17 MiB
extra/namcap                     3.6.0-3        1.00 MiB

Total Installed Size:  82.48 MiB

:: Proceed with installation? [Y/n]
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing elfutils...
installing licenses...
installing mpdecimal...
installing python...
Optional dependencies for python
    python-setuptools: for building Python packages using tooling that is usually bundled with Python
    python-pip: for installing Python packages using tooling that is usually bundled with Python
    python-pipx: for installing Python software not packaged on Arch Linux
    sqlite: for a default database integration [installed]
    xz: for lzma [installed]
    tk: for tkinter
installing pyalpm...
installing python-boolean.py...
installing python-license-expression...
installing python-pyelftools...
installing namcap...
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
Checking PKGBUILD
PKGBUILD (futhark-bin) W: Reference to x86_64 should be changed to $CARCH
PKGBUILD (futhark-bin) W: Reference to x86_64 should be changed to $CARCH
Checking futhark-bin-0.25.34-1-x86_64.pkg.tar.zst
futhark-bin W: ELF file ('usr/bin/futhark') lacks FULL RELRO, check LDFLAGS.
futhark-bin W: ELF file ('usr/bin/futhark') lacks PIE.
Checking futhark-bin-debug-0.25.34-1-x86_64.pkg.tar.zst
futhark-bin-debug W: Directory (usr/src/debug/futhark-bin) is empty
==> Running checkpkg
error: target not found: futhark-bin
==> WARNING: Skipped checkpkg due to missing repo packages
==> Generating .SRCINFO...done

Last edited by sebastianprehn (2026-01-15 13:18:54)

Offline

#4 2026-01-16 22:05:29

Lone_Wolf
Administrator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 14,700

Re: [FINISHED] PKGBUILD Review: futhark-bin

The log files produced by pkgctl are the interesting part, especially the checks done at the end of the compilation .
If pkgctl finishes building you can be sure you didn't miss makedeps.


https://lists.archlinux.org/archives/li … 4OGULBJDZ/
Looks like futhark was abandoned and futhark-bin was considered the better choice.

The repo is still present , if you clone it over ssh and push to it you'll be the new maintainer and it will be visible again in the aurweb interface.


Prebuild binaries are binaries compiled by others that are downloaded in -bin packages and repackaged for use on arch (often with some small adjustments).
Look into https://futhark-lang.org/releases/futha … _64.tar.xz , it contains a /usr/bin/futhark binary which seems to be created on the nixOS distro. That's a prebuilt binary.

Example :
cnrdrvcups-lb-bin and cnrdrvcups-lb both provide the same driver. The former uses the driver as compiled by canon for rpm / deb distros, the latter builds from source.
(some canon printer models only work with one of those packages) .

replaces are rarely useful for aur packages and there are reasons for having both sourcebuilds and -bin versions.
The source build of a stable version is considered the primary package and other variants need to coexist or conflict with it.

Last edited by Lone_Wolf (2026-01-16 22:08:26)


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.

clean chroot building not flexible enough ?
Try clean chroot manager by graysky

Offline

#5 2026-01-17 00:42:44

sebastianprehn
Member
From: Denmark
Registered: 2026-01-03
Posts: 4
Website

Re: [FINISHED] PKGBUILD Review: futhark-bin

Lone_Wolf wrote:

The log files produced by pkgctl are the interesting part, especially the checks done at the end of the compilation .
If pkgctl finishes building you can be sure you didn't miss makedeps.

The last part:

==> Running checkpkg
error: target not found: futhark-bin
==> WARNING: Skipped checkpkg due to missing repo packages
==> Generating .SRCINFO...done

Gave me reason to pause, considering I did not get pkg and src file I get when simply running 'makepkg'.
Is that considered finishing building, or did it quit because of the error?

futhark-bin-0.25.34-1-x86_64-package.log contains:

# Installing executable files to /build/futhark-bin/pkg/futhark-bin/usr/bin
install bin/* /build/futhark-bin/pkg/futhark-bin/usr/bin/
# Installing manual page to /build/futhark-bin/pkg/futhark-bin/usr/share/man/man1
# Installing manpages to /build/futhark-bin/pkg/futhark-bin/usr/share/man/man1/
install -D -m 644 share/man/man1/* /build/futhark-bin/pkg/futhark-bin/usr/share/man/man1/

PKGBUILD-namcap.log contains:

PKGBUILD (futhark-bin) W: Reference to x86_64 should be changed to $CARCH
PKGBUILD (futhark-bin) W: Reference to x86_64 should be changed to $CARCH

futhark-bin-0.25.34-1-x86_64.pkg.tar.zst-namcap.log

futhark-bin W: ELF file ('usr/bin/futhark') lacks FULL RELRO, check LDFLAGS.
futhark-bin W: ELF file ('usr/bin/futhark') lacks PIE.

futhark-bin-debug-0.25.34-1-x86_64.pkg.tar.zst-namcap.log contains:

futhark-bin-debug W: Directory (usr/src/debug/futhark-bin) is empty
Lone_Wolf wrote:

https://lists.archlinux.org/archives/li … 4OGULBJDZ/
Looks like futhark was abandoned and futhark-bin was considered the better choice.

The repo is still present , if you clone it over ssh and push to it you'll be the new maintainer and it will be visible again in the aurweb interface.


Prebuild binaries are binaries compiled by others that are downloaded in -bin packages and repackaged for use on arch (often with some small adjustments).
Look into https://futhark-lang.org/releases/futha … _64.tar.xz , it contains a /usr/bin/futhark binary which seems to be created on the nixOS distro. That's a prebuilt binary.

Example :
cnrdrvcups-lb-bin and cnrdrvcups-lb both provide the same driver. The former uses the driver as compiled by canon for rpm / deb distros, the latter builds from source.
(some canon printer models only work with one of those packages) .

replaces are rarely useful for aur packages and there are reasons for having both sourcebuilds and -bin versions.
The source build of a stable version is considered the primary package and other variants need to coexist or conflict with it.

The link to futhark-lang.org contains the exact same .tar.xz that my PKGBUILD contains, simply getting it from a different source, namely GitHub. I downloaded both and they contain exactly the same files. I ran 'sha256sum' on both of them, and got the same:
b860a39613b17dfa14d3068ff8b8b23fc83c5b1ac6a1a0010256d269bdf0bf78 (which is also the sha256sum I have written in my PKGBUILD)

I'm really sorry for asking so many questions, and really thankful that you're taking the time to respond to them. I'm trying to get a proper grasp on how 'pkgctl' works and differs from 'makepkg', as it seems like 'pkgctl' is a very good tool to be able to use if I were to maintain some AUR packages.

Offline

#6 2026-01-17 16:36:38

Lone_Wolf
Administrator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 14,700

Re: [FINISHED] PKGBUILD Review: futhark-bin

==> Running checkpkg
error: target not found: futhark-bin
==> WARNING: Skipped checkpkg due to missing repo packages

pkgctl is designed to be used by arch devs and checkpkg compares new builds with older versions in repos.
For aur packages that check will always fail.

My statement that this would need to be futhark instead of futhark-bin appears to have been made too hasty and is wrong .
The PKGBUILD you use now is indeed providing prebuilt binaries .

In case you want to try a futhark source build at some point, look at https://futhark.readthedocs.io/en/stabl … rom-source .

Clean chroot building is useful for aur maintainers and pkgctl is one of the methods that provides that.

I typically build packages with makepkg, but before uploading changes to AUR I test them with a clean chroot build.


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.

clean chroot building not flexible enough ?
Try clean chroot manager by graysky

Offline

#7 2026-01-17 20:31:44

sebastianprehn
Member
From: Denmark
Registered: 2026-01-03
Posts: 4
Website

Re: [FINISHED] PKGBUILD Review: futhark-bin

I feel like I've gotten a lot of gold nuggets from asking here, so thank you very much Lone_Wolf! smile I have linked this topic on the orphan request for futhark-bin in the hopes it will be useful, and will mark this as [FINISHED] as I would feel comfortable releasing the PKGBUILD I ended up with.

Offline

Board footer

Powered by FluxBB