libvirt-iso-opensuse-tumbleweed-bin
LOW
maintainer RubenKelevra
0 votes
scanned 2026-10-22 13:35:05.775257
Why flagged
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
Triggered rules
Low
Few votes, recently uploaded
zero_votes_recent
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
PKGBUILD
1
# Maintainer: @RubenKelevra <rubenkelevra@gmail.com>
2
3
_pkgname='opensuse'
4
pkgname='libvirt-iso-opensuse-tumbleweed-bin'
5
pkgver=20261017
6
pkgrel=1
7
pkgdesc='Official openSUSE Tumbleweed network installation ISO for libvirt'
8
arch=('x86_64')
9
url='https://get.opensuse.org/tumbleweed/'
10
license=('LicenseRef-Various')
11
makedepends=('gnupg')
12
checkdepends=('libarchive')
13
_archive="openSUSE-Tumbleweed-NET-${CARCH}-Snapshot${pkgver}-Media.iso"
14
_iso="${_archive}"
15
_image="opensuse-tumbleweed-net-${pkgver}-${CARCH}.iso"
16
_link="opensuse-tumbleweed-net-${CARCH}.iso"
17
_base_url="https://download.opensuse.org/tumbleweed/iso"
18
_checksum="${_archive}.sha256"
19
source=(
20
"${_archive}::${_base_url}/${_archive}"
21
"${_checksum}::${_base_url}/${_archive}.sha256"
22
"${_checksum}.signature::${_base_url}/${_archive}.sha256.asc"
23
"opensuse-release-key.pubkey::https://download.opensuse.org/tumbleweed/repo/oss/repodata/repomd.xml.key"
24
'DISTRIBUTION-LICENSE'
25
)
26
noextract=("${_archive}")
27
sha256sums=(
28
'73ae96f6a0ed7dc9b92d4b1c920e88afa10ffd5485c088cdcdb70b729e71e556'
29
'SKIP'
30
'SKIP'
31
'SKIP'
32
'SKIP'
33
)
34
b2sums=(
35
'SKIP'
36
'09ef05022a9231b3c54c76544332367bb508e58e37cc9319092ac989c2fdb268137a05aacdc1301dcacc19ad9109bd28bd1c321b1152f0f5575b9d48c1e6accb'
37
'4e4f6248363b3eeaa3c7add035f2d791dc360772e4f9287cd1a8750b184ba6d0c8ba99fdf167ea6a248b9201691d0815dc6872b935d8fdd5685f6ab0ddec7541'
38
'00068f63d84268ff073b3b02071d249243057e34004e86cab13b55837f78eab178dce238bd33a3e5dfffc069fbee9330a9257d9f4de9563180f13349fd1d59e4'
39
'4dccb397a48d320e2cdf0ac31d68426bbff1ff2f65e0d464ea77b4a809eb59be038eb81d4cdc67596dee0f49c63a84d735bd4da13626a8dfed771bc44c0a9423'
40
)
41
validpgpkeys=('AD485664E901B867051AB15F35A2F86E29B700A4')
42
43
44
_verify_pinned_key() {
45
local key_file="${1:?missing signing key}"
46
local expected="${2:?missing signing fingerprint}"
47
local fingerprint
48
49
fingerprint="$(gpg --batch --show-keys --with-colons "${key_file}" |
50
awk -F: '$1 == "fpr" {print $10; exit}')" || return 1
51
[[ "${fingerprint}" == "${expected}" ]] || return 1
52
gpg --batch --yes --dearmor --output "${srcdir}/release-key.gpg" "${key_file}"
53
}
54
55
prepare() {
56
_verify_pinned_key "${srcdir}/opensuse-release-key.pubkey" 'AD485664E901B867051AB15F35A2F86E29B700A4' || return 1
57
gpgv --keyring "${srcdir}/release-key.gpg" \
58
"${srcdir}/${_checksum}.signature" "${srcdir}/${_checksum}" || return 1
59
grep -Fxq "${sha256sums[0]} ${_archive}" "${srcdir}/${_checksum}"
60
}
61
62
63
check() {
64
local iso="${srcdir}/${_iso}"
65
local size
66
local magic
67
local entry
68
local media
69
local products
70
71
size="$(stat -Lc '%s' -- "${iso}")" || return 1
72
(( size > 0 && size % 2048 == 0 )) || return 1
73
magic="$(dd if="${iso}" bs=1 skip=32769 count=5 status=none)" || return 1
74
[[ "${magic}" == 'CD001' ]] || return 1
75
file -L --brief -- "${iso}" | grep -Fq 'ISO 9660' || return 1
76
bsdtar -tf "${iso}" > "${srcdir}/check-iso-list" || return 1
77
for entry in \
78
"boot/${CARCH}/loader/linux" \
79
"boot/${CARCH}/loader/initrd" \
80
"boot/${CARCH}/loader/isolinux.bin" \
81
'EFI/BOOT/bootx64.efi' \
82
'media.1/media' \
83
'media.1/products'; do
84
grep -Fxq "${entry}" "${srcdir}/check-iso-list" || return 1
85
done
86
87
media="$(bsdtar -xOf "${iso}" 'media.1/media')" || return 1
88
grep -Eq "^openSUSE - openSUSE-Tumbleweed-NET-${CARCH}-Build[[:alnum:]._-]+-Media$" <<< "${media}" || return 1
89
products="$(bsdtar -xOf "${iso}" 'media.1/products')" || return 1
90
grep -Fxq "/ openSUSE ${pkgver}-0" <<< "${products}" || return 1
91
bsdtar -xOf "${iso}" > /dev/null || return 1
92
}
93
94
_install_payload() {
95
local root="${1:?missing package root}"
96
local image_dir="${root}/var/lib/libvirt/images"
97
98
install -Dm644 -- "${srcdir}/${_iso}" "${image_dir}/${_image}" || return 1
99
ln -s -- "${_image}" "${image_dir}/${_link}" || return 1
100
install -Dm644 -- "${srcdir}/DISTRIBUTION-LICENSE" \
101
"${root}/usr/share/licenses/${pkgname}/LICENSE"
102
}
103
104
_check_payload() {
105
local root="${1:?missing package root}"
106
local check_owner="${2:-false}"
107
local image_path="${root}/var/lib/libvirt/images/${_image}"
108
local link_path="${root}/var/lib/libvirt/images/${_link}"
109
local license_path="${root}/usr/share/licenses/${pkgname}/LICENSE"
110
local manifest
111
112
[[ -f "${image_path}" && ! -L "${image_path}" ]] || return 1
113
[[ -L "${link_path}" ]] || return 1
114
[[ "$(readlink -- "${link_path}")" == "${_image}" ]] || return 1
115
[[ -f "${license_path}" ]] || return 1
116
[[ "$(stat -c '%a' -- "${image_path}")" == '644' ]] || return 1
117
[[ "$(stat -c '%a' -- "${license_path}")" == '644' ]] || return 1
118
manifest="$(find "${root}" \( -type f -o -type l \) -printf '%P\n' | LC_ALL=C sort)"
119
[[ "${manifest}" == "$(printf '%s\n' \
120
"usr/share/licenses/${pkgname}/LICENSE" \
121
"var/lib/libvirt/images/${_image}" \
122
"var/lib/libvirt/images/${_link}" | LC_ALL=C sort)" ]] || return 1
123
if [[ "${check_owner}" == 'true' ]]; then
124
[[ "$(stat -c '%u:%g' -- "${image_path}")" == '0:0' ]] || return 1
125
[[ "$(stat -c '%u:%g' -- "${license_path}")" == '0:0' ]] || return 1
126
[[ "$(stat -c '%u:%g' -- "${link_path}")" == '0:0' ]] || return 1
127
fi
128
}
129
130
package() {
131
_install_payload "${pkgdir}" || return 1
132
_check_payload "${pkgdir}" true
133
}
134
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-22 13:35:05 | Low | 1 |