]>
git.proxmox.com Git - mirror_qemu.git/blob - tests/lcitool/refresh
3 # Re-generate container recipes
5 # This script uses the "lcitool" available from
7 # https://gitlab.com/libvirt/libvirt-ci
9 # Copyright (c) 2020 Red Hat Inc.
11 # This work is licensed under the terms of the GNU GPL, version 2
12 # or (at your option) any later version. See the COPYING file in
13 # the top-level directory.
18 from pathlib
import Path
20 if len(sys
.argv
) != 1:
21 print("syntax: %s" % sys
.argv
[0], file=sys
.stderr
)
24 self_dir
= Path(__file__
).parent
25 src_dir
= self_dir
.parent
.parent
26 dockerfiles_dir
= Path(src_dir
, "tests", "docker", "dockerfiles")
28 lcitool_path
= Path(self_dir
, "libvirt-ci", "bin", "lcitool")
30 lcitool_cmd
= [lcitool_path
, "--data-dir", self_dir
]
33 def atomic_write(filename
, content
):
34 tmp
= filename
.with_suffix(filename
.suffix
+ ".tmp")
36 with tmp
.open("w") as fp
:
37 print(content
, file=fp
, end
="")
39 except Exception as ex
:
44 def generate(filename
, cmd
, trailer
):
45 print("Generate %s" % filename
)
46 lcitool
= subprocess
.run(cmd
, capture_output
=True)
48 if lcitool
.returncode
!= 0:
49 raise Exception("Failed to generate %s: %s" % (filename
, lcitool
.stderr
))
51 content
= lcitool
.stdout
.decode("utf8")
52 if trailer
is not None:
54 atomic_write(filename
, content
)
56 # Optional user setting, this will always be the last thing added
57 # so maximise the number of layers that are cached
59 "# As a final step configure the user (if env is defined)",
62 "RUN if [ \"${USER}\" ]; then \\",
63 " id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi\n"
66 def generate_dockerfile(host
, target
, cross
=None, trailer
=None):
67 filename
= Path(src_dir
, "tests", "docker", "dockerfiles", host
+ ".docker")
68 cmd
= lcitool_cmd
+ ["dockerfile"]
70 cmd
.extend(["--cross", cross
])
71 cmd
.extend([target
, "qemu"])
73 if trailer
is not None:
74 trailer
+= "\n".join(add_user_mapping
)
76 trailer
= "\n".join(add_user_mapping
)
78 generate(filename
, cmd
, trailer
)
81 def generate_cirrus(target
, trailer
=None):
82 filename
= Path(src_dir
, ".gitlab-ci.d", "cirrus", target
+ ".vars")
83 cmd
= lcitool_cmd
+ ["variables", target
, "qemu"]
84 generate(filename
, cmd
, trailer
)
87 # Netmap still needs to be manually built as it is yet to be packaged
88 # into a distro. We also add cscope and gtags which are used in the CI
91 "# netmap/cscope/global\n",
92 "RUN DEBIAN_FRONTEND=noninteractive eatmydata \\\n",
93 " apt install -y --no-install-recommends \\\n",
96 " linux-headers-amd64\n",
97 "RUN git clone https://github.com/luigirizzo/netmap.git /usr/src/netmap\n",
98 "RUN cd /usr/src/netmap && git checkout v11.3\n",
99 "RUN cd /usr/src/netmap/LINUX && ./configure --no-drivers --no-apps --kernel-dir=$(ls -d /usr/src/linux-headers-*-amd64) && make install\n",
100 "ENV QEMU_CONFIGURE_OPTS --enable-netmap\n"
104 def cross_build(prefix
, targets
):
105 conf
= "ENV QEMU_CONFIGURE_OPTS --cross-prefix=%s\n" % (prefix
)
106 targets
= "ENV DEF_TARGET_LIST %s\n" % (targets
)
107 return "".join([conf
, targets
])
110 # Update all the various build configurations.
111 # Please keep each group sorted alphabetically for easy reading.
116 # Standard native builds
118 generate_dockerfile("alpine", "alpine-316")
119 generate_dockerfile("centos8", "centos-stream-8")
120 generate_dockerfile("debian-amd64", "debian-11",
121 trailer
="".join(debian11_extras
))
122 generate_dockerfile("fedora", "fedora-37")
123 generate_dockerfile("opensuse-leap", "opensuse-leap-153")
124 generate_dockerfile("ubuntu2004", "ubuntu-2004")
125 generate_dockerfile("ubuntu2204", "ubuntu-2204")
128 # Cross compiling builds
130 generate_dockerfile("debian-amd64-cross", "debian-11",
132 trailer
=cross_build("x86_64-linux-gnu-",
135 "i386-softmmu,i386-linux-user"))
137 generate_dockerfile("debian-arm64-cross", "debian-11",
139 trailer
=cross_build("aarch64-linux-gnu-",
140 "aarch64-softmmu,aarch64-linux-user"))
142 generate_dockerfile("debian-armel-cross", "debian-11",
144 trailer
=cross_build("arm-linux-gnueabi-",
145 "arm-softmmu,arm-linux-user,armeb-linux-user"))
147 generate_dockerfile("debian-armhf-cross", "debian-11",
149 trailer
=cross_build("arm-linux-gnueabihf-",
150 "arm-softmmu,arm-linux-user"))
152 generate_dockerfile("debian-mips64el-cross", "debian-11",
154 trailer
=cross_build("mips64el-linux-gnuabi64-",
155 "mips64el-softmmu,mips64el-linux-user"))
157 generate_dockerfile("debian-mipsel-cross", "debian-11",
159 trailer
=cross_build("mipsel-linux-gnu-",
160 "mipsel-softmmu,mipsel-linux-user"))
162 generate_dockerfile("debian-ppc64el-cross", "debian-11",
164 trailer
=cross_build("powerpc64le-linux-gnu-",
165 "ppc64-softmmu,ppc64-linux-user"))
167 generate_dockerfile("debian-s390x-cross", "debian-11",
169 trailer
=cross_build("s390x-linux-gnu-",
170 "s390x-softmmu,s390x-linux-user"))
172 generate_dockerfile("fedora-win32-cross", "fedora-37",
174 trailer
=cross_build("i686-w64-mingw32-",
177 generate_dockerfile("fedora-win64-cross", "fedora-37",
179 trailer
=cross_build("x86_64-w64-mingw32-",
183 # Cirrus packages lists for GitLab
185 generate_cirrus("freebsd-12")
186 generate_cirrus("freebsd-13")
187 generate_cirrus("macos-12")
190 except Exception as ex
:
191 print(str(ex
), file=sys
.stderr
)