skywire

MEDIUM
maintainer moe_narrow 1 votes scanned 2026-08-24 01:21:42.645556
View on AUR
Why flagged

A non-pip/npm package manager (pipx, uv, poetry, cargo install, go install, gem, conda…) fetches and builds an external package at build time, outside source=() and makepkg's checksums.

Triggered rules

Medium External install via pipx/uv/poetry/cargo/go/gem alt_pkg_manager_install

A non-pip/npm package manager (pipx, uv, poetry, cargo install, go install, gem, conda…) fetches and builds an external package at build time, outside source=() and makepkg's checksums.

  • PKGBUILD:51 go install -trimpath --ldflags="" --ldflags " -s -w -linkmode external -extldflags '-static' -buildid=" github.com/skycoin/skywire/cmd/skywire@v${pkgver}

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: Moses Narrow <moe_narrow@use.startmail.com>
2_projectname=skycoin
3pkgname=skywire
4_pkgname=${pkgname}
5_githuborg=${FORK:-$_projectname}
6pkgdesc="Software defined networking with public keys. Skycoin.com"
7_pkggopath=github.com/${_githuborg}/${_pkgname}
8pkgver='1.3.89'
9pkgrel='1'
10_rc=''
11#_rc='-pr1'
12_pkgver="${pkgver}${_rc}"
13_tag_ver="v${_pkgver}"
14arch=( 'i686' 'x86_64' 'aarch64' 'armv8' 'armv7' 'armv7l' 'armv7h' 'armv6h' 'armhf' 'armel' 'arm' 'riscv64' )
15url=https://${_pkggopath}
16license=('license-free')
17makedepends=("git" "go>=1.24" "musl" "kernel-headers-musl")
18[[ ${REBUILDUI} == "1" ]] && makedepends=(${makedepends[@]} "npm")
19install=skywire.install
20# /etc/skywire.conf is generated by post_install/postinst on first
21# install only when missing — not shipped by the package, so no
22# backup= entry needed (and no .pacnew dance on upgrade).
23backup=()
24_script=("skywire-autoconfig")
25_desktop=("skywire.desktop" "skywirevpn.desktop")
26_icon=("skywirevpn.png" "skywire.png")
27_service=("skywire.service" "skywire-autoconfig.service" "skywire-sn.service" "skywire-ar.service" "skywire-rf.service" "skywire-tpd.service" "skywire-dmsgd.service" "skywire-dmsg.service" "skywire-sd.service" "dmsgpty-tcp.socket" "dmsgpty-tcp@.service")
28_source=("skywire-bin::git+https://aur.archlinux.org/skywire-bin")
29source=("${_source[@]}")
30#source=("skywire-${_tag_ver}.tar.gz::${url}/archive/refs/tags/${_tag_ver}.tar.gz")
31#"https://raw.githubusercontent.com/skycoin/skywire/develop/dmsghttp-config.json"
32#"all_servers.json"::"https://dmsgd.skywire.skycoin.com/dmsg-discovery/all_servers")
33sha256sums=('SKIP')
34
35_binaryscript=("skywire-cli" "skywire-visor")
36
37
38build() {
39mkdir -p "${srcdir}"/go/bin || true
40export GOPATH="${srcdir}/go"
41export GOBIN="${GOPATH}/bin"
42export GOOS=linux
43export CGO_ENABLED=1 #default anyways
44#use musl-gcc for static compilation
45export CC=musl-gcc
46_build
47}
48#_build function - used in build variants
49_build() {
50_msg2 "go install -trimpath --ldflags=\"\" --ldflags \" -s -w -linkmode external -extldflags '-static' -buildid=\" github.com/skycoin/skywire/cmd/skywire@develop"
51go install -trimpath --ldflags="" --ldflags " -s -w -linkmode external -extldflags '-static' -buildid=" github.com/skycoin/skywire/cmd/skywire@v${pkgver}
52_msg2 'creating launcher scripts'
53echo -e '#!/bin/bash\nexec /opt/skywire/bin/skywire cli "$@"' > "${GOBIN}/skywire-cli"
54echo -e '#!/bin/bash\nexec /opt/skywire/bin/skywire visor "$@"' > "${GOBIN}/skywire-visor"
55#binary transparency
56cd "$GOBIN" || exit
57_msg2 'binary sha256sum'
58sha256sum skywire
59}
60
61package() {
62#declare the _pkgdir and systemd directory
63_pkgdir="${pkgdir}"
64_systemddir="usr/lib/systemd/system"
65_skywirebin="skywire-bin/"
66_package
67if command -v tree &> /dev/null ; then
68_msg2 'package tree'
69 tree -a ${pkgdir}
70fi
71}
72#_package function - used in build variants
73_package() {
74_dir="opt/skywire"
75_apps="${_dir}/apps"
76_bin="${_dir}/bin"
77_scriptsdir="${_dir}/scripts"
78_msg2 'creating dirs'
79mkdir -p "${_pkgdir}/usr/bin"
80mkdir -p "${_pkgdir}/${_dir}/bin"
81mkdir -p "${_pkgdir}/${_dir}/scripts"
82mkdir -p "${_pkgdir}/${_systemddir}"
83_msg2 'installing scripts and binaries'
84install -Dm755 "${GOBIN}/skywire" "${_pkgdir}/${_bin}/"
85ln -rTsf "${_pkgdir}/${_bin}/skywire" "${_pkgdir}/usr/bin/skywire"
86install -Dm755 "${GOBIN}/skywire-cli" "${_pkgdir}/${_bin}/"
87ln -rTsf "${_pkgdir}/${_bin}/skywire-cli" "${_pkgdir}/usr/bin/skywire-cli"
88install -Dm755 "${GOBIN}/skywire-visor" "${_pkgdir}/${_bin}/"
89ln -rTsf "${_pkgdir}/${_bin}/skywire-visor" "${_pkgdir}/usr/bin/skywire-visor"
90for _i in "${_script[@]}" ; do
91 _msg3 ${_i}
92 install -Dm755 "${srcdir}/${_skywirebin}${_i}" "${_pkgdir}/${_scriptsdir}/${_i}"
93 ln -rTsf "${_pkgdir}/${_scriptsdir}/${_i}" "${_pkgdir}/usr/bin/${_i}"
94done
95_msg2 'Installing systemd services'
96for _i in "${_service[@]}" ; do
97 _msg3 ${_i}
98 install -Dm644 "${srcdir}/${_skywirebin}${_i}" "${_pkgdir}/${_systemddir}/${_i}"
99 install -Dm644 "${srcdir}/${_skywirebin}${_i}" "${_pkgdir}/etc/skel/.config/systemd/user/${_i}"
100done
101
102# Pull the user-mode unit and sysusers/tmpfiles declarations from
103# the skywire-bin git checkout (same source tree). Keeps the file
104# shapes identical across both AUR packages — only the build step
105# differs (this one builds from source, skywire-bin uses upstream
106# release tarballs).
107_msg3 'skywire-user.service → /usr/lib/systemd/user/skywire.service'
108install -Dm644 "${srcdir}/${_skywirebin}skywire-user.service" "${_pkgdir}/usr/lib/systemd/user/skywire.service"
109install -Dm644 "${srcdir}/${_skywirebin}skywire-user.service" "${_pkgdir}/etc/skel/.config/systemd/user/skywire.service"
110
111_msg2 'Installing sysusers.d / tmpfiles.d (declarative user + dirs)'
112install -Dm644 "${srcdir}/${_skywirebin}skywire.sysusers" "${_pkgdir}/usr/lib/sysusers.d/skywire.conf"
113install -Dm644 "${srcdir}/${_skywirebin}skywire.tmpfiles" "${_pkgdir}/usr/lib/tmpfiles.d/skywire.conf"
114
115# /etc/skywire.conf is INTENTIONALLY not shipped by the package.
116# The postinst (deb) and post_install (arch) hooks generate it on
117# first install via `skywire cli config gen -pqQ /etc/skywire.conf`,
118# but only if it's missing — so operator edits survive upgrades
119# without a conffile / .pacnew dance.
120
121_msg2 'installing desktop files and icons'
122mkdir -p "${_pkgdir}/usr/share/applications/" "${_pkgdir}/usr/share/icons/hicolor/48x48/apps/"
123for _i in "${_desktop[@]}" ; do
124 _msg3 ${_i}
125 install -Dm644 "${srcdir}/${_skywirebin}${_i}" "${_pkgdir}/usr/share/applications/${_i}"
126done
127for _i in "${_icon[@]}" ; do
128 _msg3 ${_i}
129 install -Dm644 "${srcdir}/${_skywirebin}${_i}" "${_pkgdir}/usr/share/icons/hicolor/48x48/apps/${_i}"
130done
131
132}
133
134_msg2() {
135(( QUIET )) && return
136local mesg=$1; shift
137printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@"
138}
139
140_msg3() {
141(( QUIET )) && return
142local mesg=$1; shift
143printf "${BLUE} -->${ALL_OFF} ${mesg}${ALL_OFF}\n" "$@"
144}
145
146# _gen_deb_scripts writes the canonical postinst.sh / prerm.sh /
147# postrm.sh under ${srcdir}/ for deb-package consumption. Shared
148# between skywire/deb.PKGBUILD and skywire-bin/cc.deb.PKGBUILD so
149# the two deb consumers stay in sync. Mirrored verbatim in
150# skywire-bin/PKGBUILD; keep both copies in sync.
151#
152# Idempotent: safe to call multiple times. Writes the same files
153# every time.
154#
155# Semantics (matches skywire.install on the arch side):
156# - postinst: systemd-sysusers + tmpfiles, setcap on the unified
157# binary, then idempotent `skywire autoconfig` (SK-preserving).
158# - prerm: case-aware. remove|deconfigure stops+disables;
159# upgrade|failed-upgrade only stops. Never touches /opt/skywire.
160# - postrm: case-aware. Only `purge` nukes /opt/skywire + drop-ins.
161# remove keeps state for possible reinstall.
162_gen_deb_scripts() {
163 cat > "${srcdir}/postinst.sh" <<'POSTINST_EOF'
164#!/bin/bash
165set -e
166
167# Process the sysusers.d / tmpfiles.d files we shipped, so the
168# _skywire user exists and /opt/skywire is owned by them BEFORE
169# autoconfig runs and tries to write into the dir. systemd-sysusers
170# creates the user; systemd-tmpfiles --create applies the d/Z lines.
171if command -v systemd-sysusers >/dev/null 2>&1 ; then
172 systemd-sysusers /usr/lib/sysusers.d/skywire.conf 2>/dev/null || true
173fi
174if command -v systemd-tmpfiles >/dev/null 2>&1 ; then
175 systemd-tmpfiles --create /usr/lib/tmpfiles.d/skywire.conf 2>/dev/null || true
176fi
177
178# File caps for VPN apps + low-port hypervisor binds. Survives
179# User= changes; required for the user-mode unit (which can't be
180# granted ambient caps).
181if command -v setcap >/dev/null 2>&1 ; then
182 setcap 'cap_net_admin,cap_net_bind_service+eip' /opt/skywire/bin/skywire 2>/dev/null || true
183fi
184
185# Generate the canonical /etc/skywire.conf template ONLY if it's
186# missing. Operator edits (SK, HYPERVISORPKS, SKYWIRE_USER, etc.)
187# are preserved by default across upgrades because the package no
188# longer ships the file — there's nothing for dpkg to overwrite.
189[[ ! -f /etc/skywire.conf ]] && skywire cli config gen -pqQ /etc/skywire.conf
190
191skywire autoconfig
192
193# On upgrade, restart every package-shipped service that's
194# currently active. try-restart is a noop on inactive units, so
195# operators who haven't enabled every shipped unit don't see
196# spurious starts. autoconfig already touched skywire.service via
197# its restart-if-active path; try-restart on a just-restarted
198# service is harmless.
199for _unit in skywire.service skywire-autoconfig.service \
200 skywire-sn.service skywire-ar.service \
201 skywire-rf.service skywire-tpd.service \
202 skywire-dmsgd.service skywire-dmsg.service \
203 skywire-sd.service dmsgpty-tcp.socket ; do
204 systemctl try-restart "$_unit" 2>/dev/null || true
205done
206POSTINST_EOF
207
208 cat > "${srcdir}/prerm.sh" <<'PRERM_EOF'
209#!/bin/bash
210set -e
211case "$1" in
212 remove|deconfigure)
213 # Genuine uninstall. Stop and disable the units but leave
214 # /opt/skywire alone: an operator running `apt remove`
215 # (not `apt purge`) may reinstall later and expect their
216 # identity / hypervisor accounts intact. postrm with
217 # $1=purge is where the actual nuke happens.
218 for _unit in skywire.service skywire-autoconfig.service \
219 skywire-sn.service skywire-ar.service \
220 skywire-rf.service skywire-tpd.service \
221 skywire-dmsgd.service skywire-dmsg.service \
222 skywire-sd.service dmsgpty-tcp.socket ; do
223 systemctl stop "$_unit" 2>/dev/null || true
224 systemctl disable "$_unit" 2>/dev/null || true
225 done
226 ;;
227 upgrade|failed-upgrade)
228 # No-op on upgrade. dpkg replaces files via unlink+rename,
229 # so running processes keep the old binary inode mapped
230 # until postinst's try-restart loop picks them up on the
231 # new binary.
232 ;;
233esac
234PRERM_EOF
235
236 cat > "${srcdir}/postrm.sh" <<'POSTRM_EOF'
237#!/bin/bash
238set -e
239case "$1" in
240 purge)
241 rm -rf /opt/skywire
242 rm -f /etc/systemd/system/skywire.service.d/skywire-user.conf
243 rmdir --ignore-fail-on-non-empty /etc/systemd/system/skywire.service.d 2>/dev/null || true
244 ;;
245 remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
246 # nothing: keep state for possible reinstall, and let the
247 # in-progress upgrade complete normally.
248 ;;
249esac
250systemctl daemon-reload 2>/dev/null || true
251POSTRM_EOF
252}
253

Changes since previous scan

--- PKGBUILD @ 2026-07-25 00:13
+++ PKGBUILD @ 2026-08-24 01:21
@@ -5,7 +5,7 @@
_githuborg=${FORK:-$_projectname}
pkgdesc="Software defined networking with public keys. Skycoin.com"
_pkggopath=github.com/${_githuborg}/${_pkgname}
-pkgver='1.3.88'
+pkgver='1.3.89'
pkgrel='1'
_rc=''
#_rc='-pr1'

Scan history

Scanned at (UTC)SeverityRules
2026-08-24 01:21:42 Medium 1
2026-07-25 00:13:44 Clean 2
2026-07-24 21:28:26 Medium 1
2026-07-24 00:02:28 Low 2
2026-07-23 01:22:21 Medium 1
2026-07-23 00:14:47 Low 2
2026-07-22 00:29:32 Low 2
2026-07-21 00:24:15 Low 2
2026-07-20 00:19:49 Low 2
2026-07-19 00:17:08 Low 2
2026-07-18 00:14:48 Low 2
2026-07-17 00:06:16 Low 2
2026-07-16 00:05:41 Low 2
2026-07-15 00:09:25 Low 2
2026-07-14 00:09:48 Low 2
2026-07-13 00:19:36 Low 2
2026-07-12 00:27:26 Low 2
2026-07-11 00:25:18 Low 2
2026-07-10 00:20:30 Low 2
2026-07-09 00:22:38 Low 2

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion