libvirt-iso-opensuse-tumbleweed-bin

LOW
maintainer RubenKelevra 0 votes scanned 2026-10-22 13:35:05.775257
View on AUR
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'
4pkgname='libvirt-iso-opensuse-tumbleweed-bin'
5pkgver=20261017
6pkgrel=1
7pkgdesc='Official openSUSE Tumbleweed network installation ISO for libvirt'
8arch=('x86_64')
9url='https://get.opensuse.org/tumbleweed/'
10license=('LicenseRef-Various')
11makedepends=('gnupg')
12checkdepends=('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"
19source=(
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)
26noextract=("${_archive}")
27sha256sums=(
28 '73ae96f6a0ed7dc9b92d4b1c920e88afa10ffd5485c088cdcdb70b729e71e556'
29 'SKIP'
30 'SKIP'
31 'SKIP'
32 'SKIP'
33)
34b2sums=(
35 'SKIP'
36 '09ef05022a9231b3c54c76544332367bb508e58e37cc9319092ac989c2fdb268137a05aacdc1301dcacc19ad9109bd28bd1c321b1152f0f5575b9d48c1e6accb'
37 '4e4f6248363b3eeaa3c7add035f2d791dc360772e4f9287cd1a8750b184ba6d0c8ba99fdf167ea6a248b9201691d0815dc6872b935d8fdd5685f6ab0ddec7541'
38 '00068f63d84268ff073b3b02071d249243057e34004e86cab13b55837f78eab178dce238bd33a3e5dfffc069fbee9330a9257d9f4de9563180f13349fd1d59e4'
39 '4dccb397a48d320e2cdf0ac31d68426bbff1ff2f65e0d464ea77b4a809eb59be038eb81d4cdc67596dee0f49c63a84d735bd4da13626a8dfed771bc44c0a9423'
40)
41validpgpkeys=('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
55prepare() {
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
63check() {
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
130package() {
131 _install_payload "${pkgdir}" || return 1
132 _check_payload "${pkgdir}" true
133}
134

Scan history

Scanned at (UTC)SeverityRules
2026-10-22 13:35:05 Low 1

Report a package

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

0 / 4000
Your suggestion