@@ -7,263 +7,11 @@ import:
77 add : /out
88 to : /{{ $.ImageName }}
99 before : setup
10-
1110---
12- {{- $gitRepoName := $.ImageName }}
13- {{- $version := get $.Firmware $gitRepoName }}
14- {{- $gitRepoUrl := "libvirt/libvirt.git" }}
15-
16- image : {{ .ModuleNamePrefix }}{{ .PackagePath }}/{{ .ImageName }}-src-artifact
17- final : false
18- fromImage : builder/src
19- git :
20- - add : {{ .ModuleDir }}/images/packages/{{ .ImageName }}
21- to : /
22- includePaths :
23- - patches
24- excludePaths :
25- - patches/README.md
26- stageDependencies :
27- install :
28- - ' **/*'
29- secrets :
30- - id : SOURCE_REPO
31- value : {{ $.SOURCE_REPO_GIT }}
32- shell :
33- install :
34- - |
35- git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch {{ $version }} /src/{{ $gitRepoName }}-{{ $version }}
36-
37- cd /src/{{ $gitRepoName }}-{{ $version }}
38-
39- if [[ "$(cat /run/secrets/SOURCE_REPO)" =~ "github.com" ]] ; then
40- echo "Checkout submodules"
41- git submodule update --init --recursive --depth=1
42- else
43- echo "Checkout submodules with URL rewrite"
44- git \
45- -c url."$(cat /run/secrets/SOURCE_REPO)/".insteadOf=https://github.com/ \
46- -c url."$(cat /run/secrets/SOURCE_REPO)/".insteadOf=https://gitlab.com/ \
47- submodule update --init --recursive --depth=1
48- fi
49-
50- for p in /patches/*.patch ; do
51- echo -n "Apply ${p} ... "
52- git apply --ignore-space-change --ignore-whitespace ${p} && echo OK || (echo FAIL ; exit 1)
53- done
54-
55- ---
56- {{- $name := print $.ImageName "-dependencies" -}}
57- {{- define "$name" -}}
58- altPackages :
59- - binutils
60- - gcc-c++
61- - git gettext
62- - bash-completion
63- - clang ccache
64- - make cmake
65- - meson ninja-build
66- - iproute iptables iptables-nft iptables-ipv6
67- - openvswitch ebtables
68- - pkgconfig
69- - polkit kmod
70- - parted
71- - qemu-img open-iscsi
72- - xml-utils xsltproc
73- - polkit
74- - python3 python3-devel
75- - python3-module-pytest python3-module-docutils
76- - python3-tools python3-module-pip
77- - python3-module-black
78- - mdevctl tshark
79- - dmsetup pm-utils
80- - tree
81- altLibraries :
82- - libpciaccess-devel
83- - libyajl-devel sanlock-devel
84- - libpcap-devel
85- - libparted-devel
86- - libdevmapper-devel
87- - ceph-devel
88- - libiscsi-devel libglusterfs-devel
89- - systemtap-sdt-devel
90- - wireshark-devel
91- - libclocale
92- - libyajl-devel
93- packages :
94- - dmidecode lvm2 libattr libbsd libmd util-linux
95- - libgcrypt libfuse3 libaudit libnbd libcap-ng
96- - openssl libcurl e2fsprogs libxcrypt numactl
97- - zlib p11-kit
98- - libssh libssh2 libjson-c5 keyutils
99- - krb5 xz
100- - readline
101- - selinux
102- - cyrus-sasl2
103- - libtasn1 libtirpc
104- - glib2 acl libunistring libxml2
105- - gnutls
106- - systemd libnl3 libslirp
107- - glibc
108- {{- end -}}
109-
110- {{ $builderDependencies := include "$name" . | fromYaml }}
11111image : {{ .ModuleNamePrefix }}{{ .PackagePath }}/{{ .ImageName }}-builder
11212final : false
113- fromImage : {{ eq $.SVACE_ENABLED "false" | ternary "builder/alt" "builder/golang-alt-svace-1.24" }}
114- import :
115- - image : {{ .ModuleNamePrefix }}{{ .PackagePath }}/{{ .ImageName }}-src-artifact
116- add : /src/{{ $gitRepoName }}-{{ $version }}
117- to : /{{ $gitRepoName }}-{{ $version }}
118- before : install
119- {{- include "importPackageImages" (list . $builderDependencies.packages "install") -}}
13+ fromImage : builder/distroless
12014shell :
121- beforeInstall :
122- {{- include "alt packages proxy" . | nindent 2 }}
123- - |
124- apt-get install -y \
125- {{ $builderDependencies.altPackages | join " " }} \
126- {{ $builderDependencies.altLibraries | join " " }}
127-
128- {{- include "alt packages clean" . | nindent 2 }}
129- - |
130- rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
131- rpm -qa | sort > /packages.txt
132- mkdir -p /usr/libexec/ccache-wrappers
133- ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc
134- ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang
135- ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
136-
13715 install :
138- - |
139- # Install packages
140- PKGS="{{ $builderDependencies.packages | join " " }}"
141- for pkg in $PKGS; do
142- cp -a /$pkg/. /
143- rm -rf /$pkg
144- done
145-
146- export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
147- export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
148- export CCACHE_BASEDIR="$(pwd)"
149- export PATH="$CCACHE_WRAPPERSDIR:$PATH"
150- export MAKE="/usr/bin/make"
151- export NINJA="/usr/bin/ninja"
152- export PYTHON="/usr/bin/python3"
153-
154- cd /{{ $gitRepoName }}-{{ $version }}
155-
156- CFLAGS="-Wframe-larger-than=262144" meson setup build \
157- -Dinit_script=systemd \
158- -Dsystem=true \
159- -Dremote_default_mode=direct \
160- -Dpciaccess=enabled \
161- -Dsasl=enabled \
162- -Dpolkit=enabled \
163- -Dlibssh=enabled \
164- -Dlibssh2=enabled \
165- -Dnumactl=enabled \
166- -Dcapng=enabled \
167- -Dudev=enabled \
168- -Ddriver_network=enabled \
169- -Ddriver_interface=enabled \
170- -Ddriver_libvirtd=enabled \
171- -Ddriver_qemu=enabled \
172- -Ddriver_remote=enabled \
173- -Dselinux=enabled \
174- -Dselinux_mount=enabled \
175- -Ddriver_esx=disabled -Dcurl=disabled \
176- -Dfirewalld=disabled \
177- -Dfirewalld_zone=disabled \
178- -Ddocs=disabled \
179- -Ddriver_ch=disabled \
180- -Ddriver_lxc=disabled -Dlogin_shell=disabled \
181- -Ddriver_openvz=disabled \
182- -Ddriver_test=disabled \
183- -Ddriver_vbox=disabled \
184- -Ddriver_vmware=disabled \
185- -Ddriver_hyperv=disabled -Dopenwsman=disabled \
186- -Ddriver_vz=disabled \
187- -Ddriver_bhyve=disabled \
188- -Dvbox_xpcomc_dir=disabled \
189- -Dwireshark_dissector=disabled \
190- -Dwireshark_plugindir=disabled \
191- -Dstorage_gluster=disabled -Dglusterfs=disabled \
192- -Dstorage_fs=disabled \
193- -Dstorage_lvm=disabled \
194- -Dstorage_zfs=disabled \
195- -Dstorage_vstorage=disabled \
196- -Dstorage_rbd=disabled \
197- -Dstorage_mpath=disabled \
198- -Dstorage_iscsi=disabled \
199- -Dstorage_iscsi_direct=disabled -Dlibiscsi=disabled \
200- -Dlibiscsi=disabled
201-
202-
203- {{- $_ := set $ "ProjectName" (list $.ImageName "libvirt" | join "/") }}
204- {{- include "image-build.build" (set $ "BuildCommand" `ninja -C build -j$(nproc)`) | nindent 6 }}
205-
206- setup :
207- - |
208- OUTDIR=/out
209- cd /{{ $gitRepoName }}-{{ $version }}
210- DESTDIR=$OUTDIR ninja -C build install
211-
212- rm -rf $OUTDIR/var
213- rm -rf $OUTDIR/usr/share/systemtap/tapset/libvirt_probes.stp
214- rm -rf $OUTDIR/usr/share/systemtap/tapset/libvirt_qemu_probes.stp
215- rm -rf $OUTDIR/usr/lib64/libvirt/lock-driver/sanlock.so
216- find $OUTDIR/usr/lib64/libvirt/storage-backend/ -type f -not -name 'libvirt_storage_backend_fs.so' -delete
217- rm -rf $OUTDIR/usr/lib64/libvirt/storage-file/libvirt_storage_file_gluster.so
218- rm -rf $OUTDIR/usr/lib64/libvirt/connection-driver/libvirt_driver_lxc.so
219- rm -rf $OUTDIR/usr/lib64/libvirt/connection-driver/libvirt_driver_ch.so
220- rm -rf $OUTDIR/usr/lib64/libvirt/connection-driver/libvirt_driver_vbox.so
221- rm -rf $OUTDIR/usr/sbin/virtlxcd
222- rm -rf $OUTDIR/usr/sbin/virtchd
223- rm -rf $OUTDIR/usr/sbin/virtvboxd
224- rm -rf $OUTDIR/usr/libexec/libvirt_sanlock_helper
225- rm -rf $OUTDIR/usr/libexec/libvirt_parthelper
226- rm -rf $OUTDIR/usr/libexec/libvirt_lxc
227- rm -rf $OUTDIR/usr/share/augeas/lenses/tests/
228- rm -rf $OUTDIR/usr/bin/virt-login-shell
229- rm -rf $OUTDIR/usr/libexec/virt-login-shell-helper
230- rm -rf $OUTDIR/usr/bin/virsh
231- rm -rf $OUTDIR/usr/bin/virt-admin
232- rm -rf $OUTDIR/usr/lib64/wireshark/plugins/4.4/epan/libvirt.so
233- rm -rf $OUTDIR/usr/share/libvirt/cpu_map/arm_*
234- rm -rf $OUTDIR/usr/share/libvirt/cpu_map/ppc64_*
235- rm -rf $OUTDIR/usr/share/libvirt/schemas/
236- rm -rf $OUTDIR/etc/logrotate.d/
237- rm -rf $OUTDIR/usr/lib/firewalld/
238- rm -rf $OUTDIR/etc/libvirt/nwfilter/
239- rm -rf $OUTDIR/usr/lib/sysusers.d/libvirt-qemu.sysusers.conf
240- rm -rf $OUTDIR/usr/lib/sysctl.d/postcopy-migration.sysctl
241- rm -rf $OUTDIR/usr/share/libvirt/test-screenshot.png
242- rm -rf $OUTDIR/etc/libvirt/libvirt-admin.conf
243- rm -rf $OUTDIR/etc/libvirt/qemu-lockd.conf
244- rm -rf $OUTDIR/etc/libvirt/qemu-sanlock.conf
245- rm -rf $OUTDIR/etc/libvirt/virtlockd.conf
246- rm -rf $OUTDIR/etc/libvirt/lxc.conf
247- rm -rf $OUTDIR/etc/libvirt/qemu.conf
248- rm -rf $OUTDIR/usr/share/augeas/
249- rm -rf $OUTDIR/etc/libvirt/virtnetworkd.conf
250- rm -rf $OUTDIR/etc/libvirt/virtsecretd.conf
251- rm -rf $OUTDIR/etc/libvirt/virtstoraged.conf
252- rm -rf $OUTDIR/etc/libvirt/virtlxcd.conf
253- rm -rf $OUTDIR/etc/libvirt/virtchd.conf
254- rm -rf $OUTDIR/etc/libvirt/virtqemud.conf
255- rm -rf $OUTDIR/etc/libvirt/virtvboxd.conf
256- rm -rf $OUTDIR/usr/sbin/virt-sanlock-cleanup
257- rm -rf $OUTDIR/usr/lib/systemd/
258- rm -rf $OUTDIR/usr/bin/virt-qemu-qmp-proxy
259- rm -rf $OUTDIR/usr/share/bash-completion/
260- rm -rf $OUTDIR/etc/ssh/
261- rm -rf $OUTDIR/usr/share/doc
262- rm -rf $OUTDIR/usr/local/share/locale/
263-
264- find $OUTDIR -type f -executable | while read -r execfile; do
265- if strip "$execfile"; then
266- echo "Stripped: $execfile"
267- fi
268- done
269- tree -hp $OUTDIR
16+ - pm --version
17+ - pm install -1 {{ .ImageName }} {{ .ImageName }}-devel -d /out
0 commit comments