skywire
MEDIUM
maintainer moe_narrow
1 votes
scanned 2026-08-24 01:21:42.645556
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
3
pkgname=skywire
4
_pkgname=${pkgname}
5
_githuborg=${FORK:-$_projectname}
6
pkgdesc="Software defined networking with public keys. Skycoin.com"
7
_pkggopath=github.com/${_githuborg}/${_pkgname}
8
pkgver='1.3.89'
9
pkgrel='1'
10
_rc=''
11
#_rc='-pr1'
12
_pkgver="${pkgver}${_rc}"
13
_tag_ver="v${_pkgver}"
14
arch=( 'i686' 'x86_64' 'aarch64' 'armv8' 'armv7' 'armv7l' 'armv7h' 'armv6h' 'armhf' 'armel' 'arm' 'riscv64' )
15
url=https://${_pkggopath}
16
license=('license-free')
17
makedepends=("git" "go>=1.24" "musl" "kernel-headers-musl")
18
[[ ${REBUILDUI} == "1" ]] && makedepends=(${makedepends[@]} "npm")
19
install=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).
23
backup=()
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")
29
source=("${_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")
33
sha256sums=('SKIP')
34
35
_binaryscript=("skywire-cli" "skywire-visor")
36
37
38
build() {
39
mkdir -p "${srcdir}"/go/bin || true
40
export GOPATH="${srcdir}/go"
41
export GOBIN="${GOPATH}/bin"
42
export GOOS=linux
43
export CGO_ENABLED=1 #default anyways
44
#use musl-gcc for static compilation
45
export 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"
51
go install -trimpath --ldflags="" --ldflags " -s -w -linkmode external -extldflags '-static' -buildid=" github.com/skycoin/skywire/cmd/skywire@v${pkgver}
52
_msg2 'creating launcher scripts'
53
echo -e '#!/bin/bash\nexec /opt/skywire/bin/skywire cli "$@"' > "${GOBIN}/skywire-cli"
54
echo -e '#!/bin/bash\nexec /opt/skywire/bin/skywire visor "$@"' > "${GOBIN}/skywire-visor"
55
#binary transparency
56
cd "$GOBIN" || exit
57
_msg2 'binary sha256sum'
58
sha256sum skywire
59
}
60
61
package() {
62
#declare the _pkgdir and systemd directory
63
_pkgdir="${pkgdir}"
64
_systemddir="usr/lib/systemd/system"
65
_skywirebin="skywire-bin/"
66
_package
67
if command -v tree &> /dev/null ; then
68
_msg2 'package tree'
69
tree -a ${pkgdir}
70
fi
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'
79
mkdir -p "${_pkgdir}/usr/bin"
80
mkdir -p "${_pkgdir}/${_dir}/bin"
81
mkdir -p "${_pkgdir}/${_dir}/scripts"
82
mkdir -p "${_pkgdir}/${_systemddir}"
83
_msg2 'installing scripts and binaries'
84
install -Dm755 "${GOBIN}/skywire" "${_pkgdir}/${_bin}/"
85
ln -rTsf "${_pkgdir}/${_bin}/skywire" "${_pkgdir}/usr/bin/skywire"
86
install -Dm755 "${GOBIN}/skywire-cli" "${_pkgdir}/${_bin}/"
87
ln -rTsf "${_pkgdir}/${_bin}/skywire-cli" "${_pkgdir}/usr/bin/skywire-cli"
88
install -Dm755 "${GOBIN}/skywire-visor" "${_pkgdir}/${_bin}/"
89
ln -rTsf "${_pkgdir}/${_bin}/skywire-visor" "${_pkgdir}/usr/bin/skywire-visor"
90
for _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}"
94
done
95
_msg2 'Installing systemd services'
96
for _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}"
100
done
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'
108
install -Dm644 "${srcdir}/${_skywirebin}skywire-user.service" "${_pkgdir}/usr/lib/systemd/user/skywire.service"
109
install -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)'
112
install -Dm644 "${srcdir}/${_skywirebin}skywire.sysusers" "${_pkgdir}/usr/lib/sysusers.d/skywire.conf"
113
install -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'
122
mkdir -p "${_pkgdir}/usr/share/applications/" "${_pkgdir}/usr/share/icons/hicolor/48x48/apps/"
123
for _i in "${_desktop[@]}" ; do
124
_msg3 ${_i}
125
install -Dm644 "${srcdir}/${_skywirebin}${_i}" "${_pkgdir}/usr/share/applications/${_i}"
126
done
127
for _i in "${_icon[@]}" ; do
128
_msg3 ${_i}
129
install -Dm644 "${srcdir}/${_skywirebin}${_i}" "${_pkgdir}/usr/share/icons/hicolor/48x48/apps/${_i}"
130
done
131
132
}
133
134
_msg2() {
135
(( QUIET )) && return
136
local mesg=$1; shift
137
printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@"
138
}
139
140
_msg3() {
141
(( QUIET )) && return
142
local mesg=$1; shift
143
printf "${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
165
set -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.
171
if command -v systemd-sysusers >/dev/null 2>&1 ; then
172
systemd-sysusers /usr/lib/sysusers.d/skywire.conf 2>/dev/null || true
173
fi
174
if command -v systemd-tmpfiles >/dev/null 2>&1 ; then
175
systemd-tmpfiles --create /usr/lib/tmpfiles.d/skywire.conf 2>/dev/null || true
176
fi
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).
181
if 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
183
fi
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
191
skywire 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.
199
for _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
205
done
206
POSTINST_EOF
207
208
cat > "${srcdir}/prerm.sh" <<'PRERM_EOF'
209
#!/bin/bash
210
set -e
211
case "$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
;;
233
esac
234
PRERM_EOF
235
236
cat > "${srcdir}/postrm.sh" <<'POSTRM_EOF'
237
#!/bin/bash
238
set -e
239
case "$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
;;
249
esac
250
systemctl daemon-reload 2>/dev/null || true
251
POSTRM_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) | Severity | Rules |
|---|---|---|
| 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 |