You are not logged in.
I’ve tried to build in clean chroots multiple times on multiple different occasions, but I’ve yet to succeed, so I’m starting to think I have something finicky somewhere in my setup that somehow interferes with expected functionality? It seems to always come back to not having “write permission for the directory $SRCDEST (/srcdest)” and I’m not sure what I’m doing wrong. Any suggestions for things to try/what to look at? (I’ve also tried to follow the classic way, but it ends up in the same issue with /srcdest.)
> sudo umount /mnt/chroots/arch
> sudo mount --mkdir -t tmpfs -o defaults,size=20G tmpfs /mnt/chroots/arch
> multilib-build -c -r /mnt/chroots/arch
[…]
==> Building in chroot for [multilib] (x86_64)...
==> Synchronizing chroot copy [/mnt/chroots/arch/multilib-x86_64/root] -> [freso]...done
==> Making package: lib32-gstreamer 1.28.2-1 (Mon May 11 12:40:49 2026)
==> Retrieving sources...
-> Updating gstreamer git repo...
From https://gitlab.freedesktop.org/gstreamer/gstreamer
* branch HEAD -> FETCH_HEAD
-> Found 0001-HACK-meson-Disable-broken-tests.patch
==> Validating source files with b2sums...
gstreamer ... Passed
0001-HACK-meson-Disable-broken-tests.patch ... Passed
==> Verifying source file signatures with gpg...
gstreamer git repo ... Passed
==> ERROR: You do not have write permission for the directory $SRCDEST (/srcdest).
Aborting...
==> ERROR: Build failed, check /mnt/chroots/arch/multilib-x86_64/freso/build
[255]> sudo ls -Ald /mnt/chroots/arch/multilib-x86_64/*/srcdest
drwxr-xr-x 2 freso freso 40 11 maj 12:40 /mnt/chroots/arch/multilib-x86_64/freso/srcdest
> ls -Al /mnt/chroots/arch/multilib-x86_64/*/srcdest
total 0
> ls -Al /mnt/chroots/arch/multilib-x86_64/*/build/
total 0Last edited by Freso (2026-05-12 21:02:20)
PKGBUILDs: in AUR
Offline
Devtools scripts use the SRCDEST variable value (and a few others) from your /etc/makepkg.conf .
Please post the contents of that file.
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
/etc/makepkg.conf: https://privatebin.net/?622d321daa3a784 … VCLkGSKAxC
The SRCDEST comes from the chroot's makepkg.conf though:
> sudo grep -rF 'SRCDEST' /etc/ /mnt/chroots/arch/multilib-x86_64/*/etc/
/etc/makepkg.conf:SRCDEST=/var/cache/makepkg/sources
/mnt/chroots/arch/multilib-x86_64/freso/etc/makepkg.conf:#SRCDEST=/home/sources
/mnt/chroots/arch/multilib-x86_64/freso/etc/makepkg.conf:SRCDEST=/srcdest
/mnt/chroots/arch/multilib-x86_64/root/etc/makepkg.conf:#SRCDEST=/home/sourceshead -v -n -0 /mnt/chroots/arch/multilib-x86_64/*/etc/makepkg.conf: https://privatebin.net/?5c7ca198e36cd58 … DfCvkCvyWX
PKGBUILDs: in AUR
Offline
Any reason you're not using pkgctl build?
Offline
Not any specific reason. I’ve tried multiple different approaches, they all (incl. `pkgctl build`) end up with “==> ERROR: You do not have write permission for the directory $SRCDEST (/srcdest).”
> sudo rm -rf /var/lib/archbuild/*
> pkgctl build
==> Updating pacman database cache
:: Synchronizing package databases...
core downloading...
extra downloading...
multilib downloading...
==> Building lib32-gstreamer
-> repo: extra
-> arch: x86_64
-> worker: freso-1
==> Building lib32-gstreamer for [extra] (x86_64)
==> Creating chroot for [extra] (x86_64)...
Create subvolume '/var/lib/archbuild/extra-x86_64/root'
==> Creating install root at /var/lib/archbuild/extra-x86_64/root
==> Installing packages to /var/lib/archbuild/extra-x86_64/root
:: Synchronizing package databases...
core downloading...
extra downloading...
resolving dependencies...
looking for conflicting packages...
Package (152) New Version Net Change
[…]
:: Proceed with installation? [Y/n]
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing […]
==> Building in chroot for [extra] (x86_64)...
==> Synchronizing chroot copy [/var/lib/archbuild/extra-x86_64/root] -> [freso-1]...done
==> Making package: lib32-gstreamer 1.28.2-1 (Mon May 11 17:22:19 2026)
==> Retrieving sources...
-> Updating gstreamer git repo...
From https://gitlab.freedesktop.org/gstreamer/gstreamer
* branch HEAD -> FETCH_HEAD
-> Found 0001-HACK-meson-Disable-broken-tests.patch
==> Validating source files with b2sums...
gstreamer ... Passed
0001-HACK-meson-Disable-broken-tests.patch ... Passed
==> Verifying source file signatures with gpg...
gstreamer git repo ... Passed
==> ERROR: You do not have write permission for the directory $SRCDEST (/srcdest).
Aborting...
==> ERROR: Build failed, check /var/lib/archbuild/extra-x86_64/freso-1/build
[255]> ls -Ald /var/lib/archbuild/*/*/srcdest
drwxr-xr-x 1 freso freso 0 May 11 17:22 /var/lib/archbuild/extra-x86_64/freso-1/srcdestPKGBUILDs: in AUR
Offline
Check /usr/bin/makepkg ~line 1218 will be the invoking
ensure_writable_dir "SRCDEST" "$SRCDEST"Prepend
…
id; echo $SRCDEST; stat $SRCDEST
if ! ensure_writable_dir "SRCDEST" "$SRCDEST" ; then
…Offline
Throwing at the wall,
I've ran into alc permission settings that proved difficult to troubleshoot...
IIRC, between the different permission settings, whichever is the most restrictive will override other settings.
Consider running 'getfacl' on the problematic dir after a write permission failure.
Scripts I Use : https://github.com/Cody-Learner
grep -m1 'model name' /proc/cpuinfo : AMD Ryzen 7 8745HS w/ Radeon 780M Graphics
grep -m1 'model name' /proc/cpuinfo : Intel(R) N95
grep -m1 'model name' /proc/cpuinfo : AMD Ryzen 5 PRO 2400GE w/ Radeon Vega Graphics
Offline
Prepend […]
Seems like this (failing) write permission check happens later on?
Consider running 'getfacl' on the problematic dir after a write permission failure.
Am I missing something or does `getfacl` seem to not provide any information that wasn’t already provided by the `ls -Ald` in the first post?
> pkgctl build
==> Updating pacman database cache
:: Synchronizing package databases...
core downloading...
extra downloading...
multilib downloading...
==> Building lib32-gstreamer
-> repo: extra
-> arch: x86_64
-> worker: freso-1
==> Building lib32-gstreamer for [extra] (x86_64)
:: 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] -> [freso-1]...done
uid=1000(freso) gid=1000(freso) groups=1000(freso),7(lp),10(wheel),14(uucp),50(games),54(lock),91(video),92(audio),93(optical),95(storage),97(input),98(power),100(users),977(seat),979(realtime),1001(plugdev),1003(ssh-user)
/var/cache/makepkg/sources
File: /var/cache/makepkg/sources
Size: 58072 Blocks: 0 IO Block: 4096 directory
Device: 0,94 Inode: 410 Links: 1
Access: (0775/drwxrwxr-x) Uid: ( 0/ root) Gid: ( 10/ wheel)
Access: 2015-04-20 16:02:21.264663467 +0200
Modify: 2026-05-11 13:03:08.561220554 +0200
Change: 2026-05-11 13:03:08.561220554 +0200
Birth: 1970-01-01 01:00:00.000000000 +0100
==> Making package: lib32-gstreamer 1.28.2-1 (Tue May 12 09:44:47 2026)
==> Retrieving sources...
-> Updating gstreamer git repo...
remote: Enumerating objects: 4629, done.
remote: Counting objects: 100% (2000/2000), done.
remote: Compressing objects: 100% (596/596), done.
remote: Total 4629 (delta 1580), reused 1635 (delta 1389), pack-reused 2629 (from 1)
Receiving objects: 100% (4629/4629), 9.59 MiB | 8.27 MiB/s, done.
Resolving deltas: 100% (3257/3257), completed with 433 local objects.
From https://gitlab.freedesktop.org/gstreamer/gstreamer
* branch HEAD -> FETCH_HEAD
-> Found 0001-HACK-meson-Disable-broken-tests.patch
==> Validating source files with b2sums...
gstreamer ... Passed
0001-HACK-meson-Disable-broken-tests.patch ... Passed
==> Verifying source file signatures with gpg...
gstreamer git repo ... Passed
==> ERROR: You do not have write permission for the directory $SRCDEST (/srcdest).
Aborting...
==> ERROR: Build failed, check /var/lib/archbuild/extra-x86_64/freso-1/build
[255]> getfacl /var/lib/archbuild/extra-x86_64/*/srcdest
getfacl: Removing leading '/' from absolute path names
# file: var/lib/archbuild/extra-x86_64/freso-1/srcdest
# owner: freso
# group: freso
user::rwx
group::r-x
other::r-xPKGBUILDs: in AUR
Offline
//Edit: ignore it
I forgot that modified ACL's would be indicated with a '+' sign by 'ls -l' if these are set.
Am I missing something or does `getfacl` seem to not provide any information that wasn’t already provided by the `ls -Ald` in the first post?
You miss something ;-)
man ls
'-A' means only "do not list implied . and .." and make no sense in combination with -d
It has nothing to do with AccessControlLists(ACL) what getfacl provide.
//Edit:
Behavior of 'ls -A' try
ls -al | head -4
ls -Al | head -4Last edited by GerBra (2026-05-12 09:46:01)
My avatar: "It's not just a toilet... a FERGUSON. The King of bowls. Sit down and give me your best shot." Al Bundy
Offline
There however seem no special entries in the list.
Is any other package than gstreamer ?
Add
set -xbefore
if (( !REPKG )); then~ line 1477
Offline
I added the `set -x` before the `mkdir` and `chmod` commands (and doing it from/with another package to show that it's the same regardless of package):
> pkgctl build
==> Updating pacman database cache
:: Synchronizing package databases...
core downloading...
extra downloading...
multilib downloading...
==> Building librivox-checker
-> repo: extra
-> arch: x86_64
-> worker: freso-1
==> Building librivox-checker for [extra] (x86_64)
:: 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] -> [freso-1]...done
uid=1000(freso) gid=1000(freso) groups=1000(freso),7(lp),10(wheel),14(uucp),50(games),54(lock),91(video),92(audio),93(optical),95(storage),97(input),98(power),100(users),977(
seat),979(realtime),1001(plugdev),1003(ssh-user)
/var/cache/makepkg/sources
File: /var/cache/makepkg/sources
Size: 58072 Blocks: 0 IO Block: 4096 directory
Device: 0,71 Inode: 410 Links: 1
Access: (0775/drwxrwxr-x) Uid: ( 0/ root) Gid: ( 10/ wheel)
Access: 2015-04-20 16:02:21.264663467 +0200
Modify: 2026-05-11 13:03:08.561220554 +0200
Change: 2026-05-11 13:03:08.561220554 +0200
Birth: 1970-01-01 01:00:00.000000000 +0100
==> Making package: librivox-checker 1.2alpha1-1 (Tue May 12 16:17:53 2026)
+ mkdir -p /tmp/makechrootpkg.4jBoeX5k43/librivox-checker/src
+ chmod a-s /tmp/makechrootpkg.4jBoeX5k43/librivox-checker/src
+ (( !REPKG ))
+ (( NOEXTRACT && ! VERIFYSOURCE ))
+ download_sources
+ local netfile all_sources
+ local get_source_fn=get_all_sources_for_arch get_vcs=1
++ gettext 'Retrieving sources...'
+ msg 'Retrieving sources...'
+ (( QUIET ))
+ local 'mesg=Retrieving sources...'
+ shift
+ printf $'\E[1m\E[32m==>\E[m\017\E[1m Retrieving sources...\E[m\017\\n'
==> Retrieving sources...
+ true
+ case $1 in
+ break
+ get_all_sources_for_arch all_sources
+ local aggregate l
+ array_build l source
+ local dest=l src=source i keys values
+ declare -p source
+ eval 'keys=("${!source[@]}")'
++ keys=("${!source[@]}")
+ eval 'l=()'
++ l=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''l[0]'\'' %s "${source[0]}";'
++ printf -v 'l[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ aggregate+=("${l[@]}")
+ array_build l source_x86_64
+ local dest=l src=source_x86_64 i keys values
+ declare -p source_x86_64
+ return 1
+ array_build all_sources aggregate
+ local dest=all_sources src=aggregate i keys values
+ declare -p aggregate
+ eval 'keys=("${!aggregate[@]}")'
++ keys=("${!aggregate[@]}")
+ eval 'all_sources=()'
++ all_sources=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''all_sources[0]'\'' %s "${aggregate[0]}";'
++ printf -v 'all_sources[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ for netfile in "${all_sources[@]}"
+ pushd /var/cache/makepkg/sources
++ get_protocol librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ [[ librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz = *://* ]]
++ local proto=https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ proto=https
++ printf '%s\n' https
+ local proto=https
+ declare -f download_https
+ download_file librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ local netfile=librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ get_filepath librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+++ get_filename librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+++ local netfile=librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+++ [[ librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz = *::* ]]
+++ printf '%s\n' librivox-checker-1.2-alpha-1.tar.gz
+++ return
++ local file=librivox-checker-1.2-alpha-1.tar.gz
+++ get_protocol librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+++ [[ librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz = *://* ]]
+++ local proto=https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+++ proto=https
+++ printf '%s\n' https
++ local proto=https
++ case $proto in
++ [[ -f /home/freso/.cache/aurman/librivox-checker/librivox-checker-1.2-alpha-1.tar.gz ]]
++ [[ -f /var/cache/makepkg/sources/librivox-checker-1.2-alpha-1.tar.gz ]]
++ file=/var/cache/makepkg/sources/librivox-checker-1.2-alpha-1.tar.gz
++ printf '%s\n' /var/cache/makepkg/sources/librivox-checker-1.2-alpha-1.tar.gz
+ local filepath=/var/cache/makepkg/sources/librivox-checker-1.2-alpha-1.tar.gz
+ [[ -n /var/cache/makepkg/sources/librivox-checker-1.2-alpha-1.tar.gz ]]
++ gettext 'Found %s'
+ msg2 'Found %s' librivox-checker-1.2-alpha-1.tar.gz
+ (( QUIET ))
+ local 'mesg=Found %s'
+ shift
+ printf $'\E[1m\E[34m ->\E[m\017\E[1m Found %s\E[m\017\\n' librivox-checker-1.2-alpha-1.tar.gz
-> Found librivox-checker-1.2-alpha-1.tar.gz
+ return
+ popd
+ check_source_integrity
+ (( SKIPCHECKSUMS && SKIPPGPCHECK ))
+ (( SKIPCHECKSUMS ))
+ (( SKIPPGPCHECK ))
+ check_checksums
+ local integ a
+ declare -A correlation
+ (( SKIPCHECKSUMS ))
+ (( 1 ))
+ correlation['source']=1
+ case $1 in
+ array_build _ source_x86_64
+ local dest=_ src=source_x86_64 i keys values
+ declare -p source_x86_64
+ return 1
+ for integ in "${known_hash_algos[@]}"
+ verify_integrity_sums ck
+ integrity_sums=()
+ sources=()
+ local integ=ck arch= integrity_sums sources srcname
+ [[ -n '' ]]
+ array_build integrity_sums cksums
+ local dest=integrity_sums src=cksums i keys values
+ declare -p cksums
+ return 1
+ srcname=source
+ array_build sources source
+ local dest=sources src=source i keys values
+ declare -p source
+ eval 'keys=("${!source[@]}")'
++ keys=("${!source[@]}")
+ eval 'sources=()'
++ sources=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''sources[0]'\'' %s "${source[0]}";'
++ printf -v 'sources[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ (( 0 == 0 && 1 == 0 ))
+ (( 0 == 1 ))
+ (( 0 ))
+ return 1
+ case $1 in
+ verify_integrity_sums ck x86_64
+ integrity_sums=()
+ sources=()
+ local integ=ck arch=x86_64 integrity_sums sources srcname
+ [[ -n x86_64 ]]
+ array_build integrity_sums cksums_x86_64
+ local dest=integrity_sums src=cksums_x86_64 i keys values
+ declare -p cksums_x86_64
+ return 1
+ srcname=source_x86_64
+ array_build sources source_x86_64
+ local dest=sources src=source_x86_64 i keys values
+ declare -p source_x86_64
+ return 1
+ (( 0 == 0 && 0 == 0 ))
+ return 1
+ for integ in "${known_hash_algos[@]}"
+ verify_integrity_sums md5
+ integrity_sums=()
+ sources=()
+ local integ=md5 arch= integrity_sums sources srcname
+ [[ -n '' ]]
+ array_build integrity_sums md5sums
+ local dest=integrity_sums src=md5sums i keys values
+ declare -p md5sums
+ return 1
+ srcname=source
+ array_build sources source
+ local dest=sources src=source i keys values
+ declare -p source
+ eval 'keys=("${!source[@]}")'
++ keys=("${!source[@]}")
+ eval 'sources=()'
++ sources=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''sources[0]'\'' %s "${source[0]}";'
++ printf -v 'sources[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ (( 0 == 0 && 1 == 0 ))
+ (( 0 == 1 ))
+ (( 0 ))
+ return 1
+ case $1 in
+ verify_integrity_sums md5 x86_64
+ integrity_sums=()
+ sources=()
+ local integ=md5 arch=x86_64 integrity_sums sources srcname
+ [[ -n x86_64 ]]
+ array_build integrity_sums md5sums_x86_64
+ local dest=integrity_sums src=md5sums_x86_64 i keys values
+ declare -p md5sums_x86_64
+ return 1
+ srcname=source_x86_64
+ array_build sources source_x86_64
+ local dest=sources src=source_x86_64 i keys values
+ declare -p source_x86_64
+ return 1
+ (( 0 == 0 && 0 == 0 ))
+ return 1
+ for integ in "${known_hash_algos[@]}"
+ verify_integrity_sums sha1
+ integrity_sums=()
+ sources=()
+ local integ=sha1 arch= integrity_sums sources srcname
+ [[ -n '' ]]
+ array_build integrity_sums sha1sums
+ local dest=integrity_sums src=sha1sums i keys values
+ declare -p sha1sums
+ return 1
+ srcname=source
+ array_build sources source
+ local dest=sources src=source i keys values
+ declare -p source
+ eval 'keys=("${!source[@]}")'
++ keys=("${!source[@]}")
+ eval 'sources=()'
++ sources=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''sources[0]'\'' %s "${source[0]}";'
++ printf -v 'sources[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ (( 0 == 0 && 1 == 0 ))
+ (( 0 == 1 ))
+ (( 0 ))
+ return 1
+ case $1 in
+ verify_integrity_sums sha1 x86_64
+ integrity_sums=()
+ sources=()
+ local integ=sha1 arch=x86_64 integrity_sums sources srcname
+ [[ -n x86_64 ]]
+ array_build integrity_sums sha1sums_x86_64
+ local dest=integrity_sums src=sha1sums_x86_64 i keys values
+ declare -p sha1sums_x86_64
+ return 1
+ srcname=source_x86_64
+ array_build sources source_x86_64
+ local dest=sources src=source_x86_64 i keys values
+ declare -p source_x86_64
+ return 1
+ (( 0 == 0 && 0 == 0 ))
+ return 1
+ for integ in "${known_hash_algos[@]}"
+ verify_integrity_sums sha224
+ integrity_sums=()
+ sources=()
+ local integ=sha224 arch= integrity_sums sources srcname
+ [[ -n '' ]]
+ array_build integrity_sums sha224sums
+ local dest=integrity_sums src=sha224sums i keys values
+ declare -p sha224sums
+ return 1
+ srcname=source
+ array_build sources source
+ local dest=sources src=source i keys values
+ declare -p source
+ eval 'keys=("${!source[@]}")'
++ keys=("${!source[@]}")
+ eval 'sources=()'
++ sources=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''sources[0]'\'' %s "${source[0]}";'
++ printf -v 'sources[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ (( 0 == 0 && 1 == 0 ))
+ (( 0 == 1 ))
+ (( 0 ))
+ return 1
+ case $1 in
+ verify_integrity_sums sha224 x86_64
+ integrity_sums=()
+ sources=()
+ local integ=sha224 arch=x86_64 integrity_sums sources srcname
+ [[ -n x86_64 ]]
+ array_build integrity_sums sha224sums_x86_64
+ local dest=integrity_sums src=sha224sums_x86_64 i keys values
+ declare -p sha224sums_x86_64
+ return 1
+ srcname=source_x86_64
+ array_build sources source_x86_64
+ local dest=sources src=source_x86_64 i keys values
+ declare -p source_x86_64
+ return 1
+ (( 0 == 0 && 0 == 0 ))
+ return 1
+ for integ in "${known_hash_algos[@]}"
+ verify_integrity_sums sha256
+ integrity_sums=()
+ sources=()
+ local integ=sha256 arch= integrity_sums sources srcname
+ [[ -n '' ]]
+ array_build integrity_sums sha256sums
+ local dest=integrity_sums src=sha256sums i keys values
+ declare -p sha256sums
+ return 1
+ srcname=source
+ array_build sources source
+ local dest=sources src=source i keys values
+ declare -p source
+ eval 'keys=("${!source[@]}")'
++ keys=("${!source[@]}")
+ eval 'sources=()'
++ sources=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''sources[0]'\'' %s "${source[0]}";'
++ printf -v 'sources[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ (( 0 == 0 && 1 == 0 ))
+ (( 0 == 1 ))
+ (( 0 ))
+ return 1
+ case $1 in
+ verify_integrity_sums sha256 x86_64
+ integrity_sums=()
+ sources=()
+ local integ=sha256 arch=x86_64 integrity_sums sources srcname
+ [[ -n x86_64 ]]
+ array_build integrity_sums sha256sums_x86_64
+ local dest=integrity_sums src=sha256sums_x86_64 i keys values
+ declare -p sha256sums_x86_64
+ return 1
+ srcname=source_x86_64
+ array_build sources source_x86_64
+ local dest=sources src=source_x86_64 i keys values
+ declare -p source_x86_64
+ return 1
+ (( 0 == 0 && 0 == 0 ))
+ return 1
+ for integ in "${known_hash_algos[@]}"
+ verify_integrity_sums sha384
+ integrity_sums=()
+ sources=()
+ local integ=sha384 arch= integrity_sums sources srcname
+ [[ -n '' ]]
+ array_build integrity_sums sha384sums
+ local dest=integrity_sums src=sha384sums i keys values
+ declare -p sha384sums
+ return 1
+ srcname=source
+ array_build sources source
+ local dest=sources src=source i keys values
+ declare -p source
+ eval 'keys=("${!source[@]}")'
++ keys=("${!source[@]}")
+ eval 'sources=()'
++ sources=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''sources[0]'\'' %s "${source[0]}";'
++ printf -v 'sources[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ (( 0 == 0 && 1 == 0 ))
+ (( 0 == 1 ))
+ (( 0 ))
+ return 1
+ case $1 in
+ verify_integrity_sums sha384 x86_64
+ integrity_sums=()
+ sources=()
+ local integ=sha384 arch=x86_64 integrity_sums sources srcname
+ [[ -n x86_64 ]]
+ array_build integrity_sums sha384sums_x86_64
+ local dest=integrity_sums src=sha384sums_x86_64 i keys values
+ declare -p sha384sums_x86_64
+ return 1
+ srcname=source_x86_64
+ array_build sources source_x86_64
+ local dest=sources src=source_x86_64 i keys values
+ declare -p source_x86_64
+ return 1
+ (( 0 == 0 && 0 == 0 ))
+ return 1
+ for integ in "${known_hash_algos[@]}"
+ verify_integrity_sums sha512
+ integrity_sums=()
+ sources=()
+ local integ=sha512 arch= integrity_sums sources srcname
+ [[ -n '' ]]
+ array_build integrity_sums sha512sums
+ local dest=integrity_sums src=sha512sums i keys values
+ declare -p sha512sums
+ return 1
+ srcname=source
+ array_build sources source
+ local dest=sources src=source i keys values
+ declare -p source
+ eval 'keys=("${!source[@]}")'
++ keys=("${!source[@]}")
+ eval 'sources=()'
++ sources=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''sources[0]'\'' %s "${source[0]}";'
++ printf -v 'sources[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ (( 0 == 0 && 1 == 0 ))
+ (( 0 == 1 ))
+ (( 0 ))
+ return 1
+ case $1 in
+ verify_integrity_sums sha512 x86_64
+ integrity_sums=()
+ sources=()
+ local integ=sha512 arch=x86_64 integrity_sums sources srcname
+ [[ -n x86_64 ]]
+ array_build integrity_sums sha512sums_x86_64
+ local dest=integrity_sums src=sha512sums_x86_64 i keys values
+ declare -p sha512sums_x86_64
+ return 1
+ srcname=source_x86_64
+ array_build sources source_x86_64
+ local dest=sources src=source_x86_64 i keys values
+ declare -p source_x86_64
+ return 1
+ (( 0 == 0 && 0 == 0 ))
+ return 1
+ for integ in "${known_hash_algos[@]}"
+ verify_integrity_sums b2
+ integrity_sums=()
+ sources=()
+ local integ=b2 arch= integrity_sums sources srcname
+ [[ -n '' ]]
+ array_build integrity_sums b2sums
+ local dest=integrity_sums src=b2sums i keys values
+ declare -p b2sums
+ eval 'keys=("${!b2sums[@]}")'
++ keys=("${!b2sums[@]}")
+ eval 'integrity_sums=()'
++ integrity_sums=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''integrity_sums[0]'\'' %s "${b2sums[0]}";'
++ printf -v 'integrity_sums[0]' %s 9944a01941cc9f0891b7bc0a6cd88becc7c18ee9e94f49994fac4de6a480fbeb21cf56f1f402399a1c38efecc34f502be903f9218254bce87d0929e6b0927ab5
+ srcname=source
+ array_build sources source
+ local dest=sources src=source i keys values
+ declare -p source
+ eval 'keys=("${!source[@]}")'
++ keys=("${!source[@]}")
+ eval 'sources=()'
++ sources=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''sources[0]'\'' %s "${source[0]}";'
++ printf -v 'sources[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ (( 1 == 0 && 1 == 0 ))
+ (( 1 == 1 ))
++ gettext 'Validating %s files with %s...'
+ msg 'Validating %s files with %s...' source b2sums
+ (( QUIET ))
+ local 'mesg=Validating %s files with %s...'
+ shift
+ printf $'\E[1m\E[32m==>\E[m\017\E[1m Validating %s files with %s...\E[m\017\\n' source b2sums
==> Validating source files with b2sums...
+ local idx errors=0
+ (( idx = 0 ))
+ (( idx < 1 ))
+ verify_integrity_one librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz b2 9944a01941cc9f0891b7bc0a6cd88becc7c1
8ee9e94f49994fac4de6a480fbeb21cf56f1f402399a1c38efecc34f502be903f9218254bce87d0929e6b0927ab5
+ local source_name=librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz integ=b2 expectedsum=9944a01941cc9f0891b7b
c0a6cd88becc7c18ee9e94f49994fac4de6a480fbeb21cf56f1f402399a1c38efecc34f502be903f9218254bce87d0929e6b0927ab5 file proto realsum
++ get_filename librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ local netfile=librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ [[ librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz = *::* ]]
++ printf '%s\n' librivox-checker-1.2-alpha-1.tar.gz
++ return
+ file=librivox-checker-1.2-alpha-1.tar.gz
+ printf ' %s ... ' librivox-checker-1.2-alpha-1.tar.gz
librivox-checker-1.2-alpha-1.tar.gz ... + [[ 9944a01941cc9f0891b7bc0a6cd88becc7c18ee9e94f49994fac4de6a480fbeb21cf56f1f402399a1c38efecc34f502be903f9218254bce87d0929e6b0927
ab5 = SKIP ]]
++ get_protocol librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ [[ librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz = *://* ]]
++ local proto=https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ proto=https
++ printf '%s\n' https
+ proto=https
+ declare -f calc_checksum_https
++ calc_checksum_file librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz b2
++ local netfile=librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz integ=b2 ret=0 file sum
+++ get_filepath librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++++ get_filename librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++++ local netfile=librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++++ [[ librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz = *::* ]]
++++ printf '%s\n' librivox-checker-1.2-alpha-1.tar.gz
++++ return
+++ local file=librivox-checker-1.2-alpha-1.tar.gz
++++ get_protocol librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++++ [[ librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz = *://* ]]
++++ local proto=https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++++ proto=https
++++ printf '%s\n' https
+++ local proto=https
+++ case $proto in
+++ [[ -f /home/freso/.cache/aurman/librivox-checker/librivox-checker-1.2-alpha-1.tar.gz ]]
+++ [[ -f /var/cache/makepkg/sources/librivox-checker-1.2-alpha-1.tar.gz ]]
+++ file=/var/cache/makepkg/sources/librivox-checker-1.2-alpha-1.tar.gz
+++ printf '%s\n' /var/cache/makepkg/sources/librivox-checker-1.2-alpha-1.tar.gz 16:17 [52/1895]
++ file=/var/cache/makepkg/sources/librivox-checker-1.2-alpha-1.tar.gz
+++ b2sum /var/cache/makepkg/sources/librivox-checker-1.2-alpha-1.tar.gz
++ sum='9944a01941cc9f0891b7bc0a6cd88becc7c18ee9e94f49994fac4de6a480fbeb21cf56f1f402399a1c38efecc34f502be903f9218254bce87d0929e6b0927ab5 /var/cache/makepkg/sources/librivox-
checker-1.2-alpha-1.tar.gz'
++ sum=9944a01941cc9f0891b7bc0a6cd88becc7c18ee9e94f49994fac4de6a480fbeb21cf56f1f402399a1c38efecc34f502be903f9218254bce87d0929e6b0927ab5
++ printf %s 9944a01941cc9f0891b7bc0a6cd88becc7c18ee9e94f49994fac4de6a480fbeb21cf56f1f402399a1c38efecc34f502be903f9218254bce87d0929e6b0927ab5
++ return 0
+ realsum=9944a01941cc9f0891b7bc0a6cd88becc7c18ee9e94f49994fac4de6a480fbeb21cf56f1f402399a1c38efecc34f502be903f9218254bce87d0929e6b0927ab5
+ [[ 9944a01941cc9f0891b7bc0a6cd88becc7c18ee9e94f49994fac4de6a480fbeb21cf56f1f402399a1c38efecc34f502be903f9218254bce87d0929e6b0927ab5 != 9944a01941cc9f0891b7bc0a6cd88becc7c18
ee9e94f49994fac4de6a480fbeb21cf56f1f402399a1c38efecc34f502be903f9218254bce87d0929e6b0927ab5 ]]
++ gettext Passed
+ printf '%s\n' Passed
Passed
+ return 0
+ (( idx++ ))
+ (( idx < 1 ))
+ (( errors ))
+ unset 'correlation[source]'
+ case $1 in
+ verify_integrity_sums b2 x86_64
+ integrity_sums=()
+ sources=()
+ local integ=b2 arch=x86_64 integrity_sums sources srcname
+ [[ -n x86_64 ]]
+ array_build integrity_sums b2sums_x86_64
+ local dest=integrity_sums src=b2sums_x86_64 i keys values
+ declare -p b2sums_x86_64
+ return 1
+ srcname=source_x86_64
+ array_build sources source_x86_64
+ local dest=sources src=source_x86_64 i keys values
+ declare -p source_x86_64
+ return 1
+ (( 0 == 0 && 0 == 0 ))
+ return 1
+ (( 0 ))
+ check_pgpsigs
+ (( SKIPPGPCHECK ))
+ source_has_signatures
+ local netfile all_sources proto
+ get_all_sources_for_arch all_sources
+ local aggregate l
+ array_build l source
+ local dest=l src=source i keys values
+ declare -p source
+ eval 'keys=("${!source[@]}")'
++ keys=("${!source[@]}")
+ eval 'l=()'
++ l=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''l[0]'\'' %s "${source[0]}";'
++ printf -v 'l[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ aggregate+=("${l[@]}")
+ array_build l source_x86_64
+ local dest=l src=source_x86_64 i keys values
+ declare -p source_x86_64
+ return 1
+ array_build all_sources aggregate
+ local dest=all_sources src=aggregate i keys values
+ declare -p aggregate
+ eval 'keys=("${!aggregate[@]}")'
++ keys=("${!aggregate[@]}")
+ eval 'all_sources=()'
++ all_sources=()
+ for i in "${keys[@]}"
+ values+=("printf -v '$dest[$i]' %s \"\${$src[$i]}\";")
+ eval 'printf -v '\''all_sources[0]'\'' %s "${aggregate[0]}";'
++ printf -v 'all_sources[0]' %s librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
+ for netfile in "${all_sources[@]}"
++ get_protocol librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ [[ librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz = *://* ]]
++ local proto=https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ proto=https
++ printf '%s\n' https
+ proto=https
++ get_uri_query librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ local netfile=librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ local query=librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz
++ [[ librivox-checker-1.2-alpha-1.tar.gz::https://github.com/CGJennings/librivox-checker/archive/v1.2-alpha-1.tar.gz = librivox\-checker\-1\.2\-alpha\-1\.tar\.gz\:\:https\:/
/github\.com/CGJennings/librivox\-checker/archive/v1\.2\-alpha\-1\.tar\.gz ]]
++ unset query
++ query=
++ printf '%s\n' ''
+ query=
+ [[ librivox-checker-1.2-alpha-1.tar.gz = *.@(sig?(n)|asc) ]]
+ declare -f verify_https_signature
+ return 1
+ return 0
+ (( VERIFYFUNC ))
+ (( VERIFYSOURCE ))
+ exit 0
+ clean_up
+ local EXIT_CODE=0
+ (( INFAKEROOT ))
+ [[ -p '' ]]
+ (( (EXIT_CODE == E_OK || EXIT_CODE == E_INSTALL_FAILED) && BUILDPKG && CLEANUP ))
+ remove_deps
+ (( ! RMDEPS ))
+ return 0
+ exit 0
==> ERROR: You do not have write permission for the directory $SRCDEST (/srcdest).
Aborting...
==> ERROR: Build failed, check /var/lib/archbuild/extra-x86_64/freso-1/build
[255]>PKGBUILDs: in AUR
Offline
I duplicated your commands to test build 'lib32-gstreamer' successfully on my system.
Note my local /etc/makepkg.conf:'SRCDEST' is still commented out, whereas you've set it.
/etc/makepkg.conf:SRCDEST=/var/cache/makepkg/sources
[jeff@Arch2025p04 ~]$ sudo grep -rF 'SRCDEST' /etc/ /mnt/chroots/arch/multilib-x86_64/*/etc/
/etc/aurutils/makepkg-x86_64.conf:#SRCDEST=/home/sources
/etc/makepkg.conf:#SRCDEST=/home/sources
/etc/makepkg.conf.pnew+spaces-2025-12-13:#SRCDEST=/home/sources
/mnt/chroots/arch/multilib-x86_64/jeff/etc/makepkg.conf:#SRCDEST=/home/sources
/mnt/chroots/arch/multilib-x86_64/jeff/etc/makepkg.conf:SRCDEST=/srcdest
/mnt/chroots/arch/multilib-x86_64/root/etc/makepkg.conf:#SRCDEST=/home/sourcesLast edited by NuSkool (2026-05-12 20:03:46)
Scripts I Use : https://github.com/Cody-Learner
grep -m1 'model name' /proc/cpuinfo : AMD Ryzen 7 8745HS w/ Radeon 780M Graphics
grep -m1 'model name' /proc/cpuinfo : Intel(R) N95
grep -m1 'model name' /proc/cpuinfo : AMD Ryzen 5 PRO 2400GE w/ Radeon Vega Graphics
Offline
+ exit 0
==> ERROR: You do not have write permission for the directory $SRCDEST (/srcdest).
Aborting...It's not from makepkg?
vim /usr/bin/pkgctl, add "set -x" below "set -e"
Be ready for this to produce a metric shit-ton of text, so best "pkgctl … |& tee /tmp/wtf.txt"
Edit: but first test commenting SRCDEST and see where that leads you (also into which directory)
Last edited by seth (2026-05-12 20:05:57)
Offline
omg. commenting SRCDEST in (root, not chroot) /etc/makepkg.conf made `multilib-build -c -r /mnt/chroots/arch` build everything fine (i have /var mounted nosuid, so /var/lib/archbuild/ chroot building won’t work). “write permission for the directory $SRCDEST (/srcdest)” could really be more helpful ?
thank you all!
PKGBUILDs: in AUR
Offline
To me, the quote below indicate user freso is a member of wheel, so should have write permission?
However, are these results possibly skewed or irrelevant from running through devtools scripts using pkgbuild and nspawn?
Is it possible the wheel group permission is not being honored in the container?
I'm also thinking about builduser's potential role in this.
I'd consider looking into verifying who the user is, and add write permission for <whoever is verified> via an ACL to /var/cache/makepkg/sources.
uid=1000(freso) gid=1000(freso) groups=1000(freso),7(lp),10(wheel),14(uucp),50(games),54(lock),91(video),92(audio),93(optical),95(storage),97(input),98(power),100(users),977(
seat),979(realtime),1001(plugdev),1003(ssh-user)
/var/cache/makepkg/sources
File: /var/cache/makepkg/sources
Size: 58072 Blocks: 0 IO Block: 4096 directory
Device: 0,71 Inode: 410 Links: 1
Access: (0775/drwxrwxr-x) Uid: ( 0/ root) Gid: ( 10/ wheel)
Access: 2015-04-20 16:02:21.264663467 +0200
Modify: 2026-05-11 13:03:08.561220554 +0200
Add info:
If you go down the ACL path, AFAIK it'll require all the dir's in path /var/cache/makepkg/sources have the x bit set.
This entire post is assuming you'd like to continue using your defined SRCDEST path.
Last edited by NuSkool (2026-05-12 21:43:00)
Scripts I Use : https://github.com/Cody-Learner
grep -m1 'model name' /proc/cpuinfo : AMD Ryzen 7 8745HS w/ Radeon 780M Graphics
grep -m1 'model name' /proc/cpuinfo : Intel(R) N95
grep -m1 'model name' /proc/cpuinfo : AMD Ryzen 5 PRO 2400GE w/ Radeon Vega Graphics
Offline