Skip to content
Snippets Groups Projects
Commit 20afec2a authored by Eric Vidal's avatar Eric Vidal :speech_balloon:
Browse files

first commit, 7.0.0-11

parents
No related branches found
No related tags found
No related merge requests found
Pipeline #1581 passed
Showing
with 764 additions and 0 deletions
trunk/pkg/
trunk/src/
trunk/*.pkg.tar.xz
trunk/*.pkg.tar.xz.sig
version/*/bin/
stages:
- build
- commit
package:
stage: build
script:
- mkdir -p /etc/pkg
- cp ./pkg.cfg /etc/pkg/pkg.cfg
- cp ./pacman.conf.builder /etc/pacman.conf.builder
- pkg-prepare.sh
- pkg-build.sh --chdir=trunk $CI_PROJECT_DIR
artifacts:
name: $CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA
paths:
- "*.pkg.tar.xz"
only:
changes:
- trunk/PKGBUILD
commit:
stage: commit
only:
changes:
- trunk/PKGBUILD
script:
- pkg-commit.sh
#
# pacman.conf used if the options --pacman-conf passed at our-build.sh on the .gitlab.yml file
#
[options]
HoldPkg = pacman glibc
Architecture = auto
IgnorePkg = systemd
IgnorePkg = systemd-libs
NoExtract = usr/lib/libsystemd*.*
Color
CheckSpace
VerbosePkgLists
ParallelDownloads = 5
#XferCommand =
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#[obcore-testing]
#SigLevel = Required
#Server = https://repo.obarun.org/obcore-testing/
[obcore]
SigLevel = Required
Server = https://repo.obarun.org/obcore
#[obextra-testing]
#SigLevel = Required
#Server = https://repo.obarun.org/obextra-testing
[obextra]
SigLevel = Required
Server = https://repo.obarun.org/obextra
#[obcommunity-testing]
#SigLevel = Required
#Server = https://repo.obarun.org/obcommunity-testing
[obcommunity]
SigLevel = Required
Server = https://repo.obarun.org/obcommunity
#[obmultilib-testing]
#SigLevel = Required
#Server = https://repo.obarun.org/obmultilib-testing
[obmultilib]
SigLevel = Required
Server = https://repo.obarun.org/obmultilib
#[observice-testing]
#SigLevel = Required
#Server = https://repo.obarun.org/observice-testing
[observice]
SigLevel = Required
Server = https://repo.obarun.org/observice
#[testing]
#Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
#[community-testing]
#Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist
#[multilib]
#Include = /etc/pacman.d/mirrorlist
# Options passed to makepkg
makepkg_opts=( "--noconfirm" "--nosign" "--syncdeps" "--rmdeps" "--clean" "--cleanbuild" )
MAKEFLAGS="-j3"
KERNEL=="vhost-net", GROUP="kvm", MODE="0660", TAG+="uaccess", OPTIONS+="static_node=vhost-net"
SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", TAG+="systemd" ENV{SYSTEMD_WANTS}="qemu-guest-agent.service"
Copyright (c) 2018-2021 Eric Vidal <eric@obarun.org>
Copyright (c) 2018-2021 Jean-Michel T.Dydak <jean-michel@obarun.org>
All rights reserved.
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
This diff is collapsed.
allow virbr0
From: Michael Tokarev <mjt@tls.msk.ru>
Subject: build most modules statically (hack)
This hack makes the build procedure to build most modules statically,
except block and gui modules which goes into their own packages.
The rest are built into the executables directly in order to make
qemu-system-common package (where all other modules goes) to be
more-or-less version-independent.
There's little reason to build these as modules or to ship them in
separate packages.
diff --git a/meson.build b/meson.build
index e3386196ba..a28f7d10f1 100644
--- a/meson.build
+++ b/meson.build
@@ -1587,13 +1587,19 @@ softmmu_mods = []
foreach d, list : modules
foreach m, module_ss : list
if enable_modules and targetos != 'windows'
- module_ss = module_ss.apply(config_all, strict: false)
- sl = static_library(d + '-' + m, [genh, module_ss.sources()],
- dependencies: [modulecommon, module_ss.dependencies()], pic: true)
+ module_dn = module_ss.apply(config_all, strict: false)
+ sl = static_library(d + '-' + m, [genh, module_dn.sources()],
+ dependencies: [modulecommon, module_dn.dependencies()], pic: true)
if d == 'block'
block_mods += sl
else
- softmmu_mods += sl
+ # we only build 2 non-block modules as modules: it is the gui part
+ if d + '-' + m in [ 'ui-gtk', 'ui-sdl', 'audio-pa' ]
+ softmmu_mods += sl
+ else
+ warning('Compiling module statically: ' + d + '-' + m)
+ softmmu_ss.add_all(module_ss)
+ endif
endif
else
if d == 'block'
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index b27a6552aa..52d178afe7 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -95,7 +95,25 @@
#include <linux/soundcard.h>
#include <linux/kd.h>
#include <linux/mtio.h>
+
+#ifdef HAVE_SYS_MOUNT_FSCONFIG
+/*
+ * glibc >= 2.36 linux/mount.h conflicts with sys/mount.h,
+ * which in turn prevents use of linux/fs.h. So we have to
+ * define the constants ourselves for now.
+ */
+#define FS_IOC_GETFLAGS _IOR('f', 1, long)
+#define FS_IOC_SETFLAGS _IOW('f', 2, long)
+#define FS_IOC_GETVERSION _IOR('v', 1, long)
+#define FS_IOC_SETVERSION _IOW('v', 2, long)
+#define FS_IOC_FIEMAP _IOWR('f', 11, struct fiemap)
+#define FS_IOC32_GETFLAGS _IOR('f', 1, int)
+#define FS_IOC32_SETFLAGS _IOW('f', 2, int)
+#define FS_IOC32_GETVERSION _IOR('v', 1, int)
+#define FS_IOC32_SETVERSION _IOW('v', 2, int)
+#else
#include <linux/fs.h>
+#endif
#include <linux/fd.h>
#if defined(CONFIG_FIEMAP)
#include <linux/fiemap.h>
diff --git a/meson.build b/meson.build
index 294e9a8f32..30a380752c 100644
--- a/meson.build
+++ b/meson.build
@@ -1963,6 +1963,8 @@ config_host_data.set('HAVE_OPTRESET',
cc.has_header_symbol('getopt.h', 'optreset'))
config_host_data.set('HAVE_IPPROTO_MPTCP',
cc.has_header_symbol('netinet/in.h', 'IPPROTO_MPTCP'))
+config_host_data.set('HAVE_SYS_MOUNT_FSCONFIG',
+ cc.has_header_symbol('sys/mount.h', 'FSCONFIG_SET_FLAG'))
# has_member
config_host_data.set('HAVE_SIGEV_NOTIFY_THREAD_ID',
post_install() {
if [[ -d /run/udev ]]; then
local file files=(
/sys/devices/virtual/misc/vhost-net
)
# trigger change event when modules are already loaded
for file in "${files[@]}"; do
if [[ -d $file ]]; then
udevadm trigger --action=change "$file"
fi
done
fi
}
[general]
daemonize = 0
fsfreeze-hook = /etc/qemu/fsfreeze-hook
method = virtio-serial
path = /dev/virtio-ports/org.qemu.guest_agent.0
pidfile = /run/qemu-ga.pid
statedir = /run
verbose = 0
# blacklist =
# logfile =
u qemu - "QEMU user" - -
m qemu kvm
# Arg 1: the new package version
post_install() {
# trigger events on modules files when already loaded
for _f in /sys/devices/virtual/misc/vhost-net; do
[[ -e "$_f" ]] && udevadm trigger "$_f"
done
:
}
KERNEL=="vhost-net", GROUP="kvm", MODE="0660", TAG+="uaccess", OPTIONS+="static_node=vhost-net"
Copyright (c) 2018-2021 Eric Vidal <eric@obarun.org>
Copyright (c) 2018-2021 Jean-Michel T.Dydak <jean-michel@obarun.org>
All rights reserved.
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# Obarun : 66 init/supervisor
# Maintainer : Eric Vidal <eric@obarun.org>
# Maintainer : Jean-Michel T.Dydak <jean-michel@obarun.org>
# Obarun PkgSrc : https://git.obarun.org/pkg/{obcore,obextra,obcommunity,obmultilib,observice}/$NAME
#----------------
# Website : https://..../
#--------------------------------------------------------------
# DESCRIPTION ]
pkgbase=qemu
pkgname=(
qemu
qemu-headless
qemu-arch-extra
qemu-headless-arch-extra
qemu-block-{iscsi,gluster}
qemu-guest-agent
)
pkgver=6.1.0
pkgrel=2
pkgdesc="A generic and open source machine emulator and virtualizer"
url="https://wiki.qemu.org/"
source=(https://download.qemu.org/qemu-$pkgver.tar.xz #{,.sig}
fix_unix_sockets.diff::https://gitlab.com/qemu-project/qemu/-/commit/118d527f2e4baec5fe8060b22a6212468b8e4d3f.diff
65-kvm.rules)
#--------------------
# BUILD PREPARATION ]
prepare() {
mkdir build-{full,headless}
mkdir -p extra-arch-{full,headless}/usr/{bin,share/qemu}
cd ${pkgname}-${pkgver}
patch -p1 < ../fix_unix_sockets.diff # FS#72115
}
#----------------------
# BUILD CONFIGURATION ]
makedepends=(
alsa-lib
brltty
bzip2
cairo
# ceph
curl
cdrtools
dtc
fuse3
gcc-libs
gdk-pixbuf2
glib2
glusterfs
gnutls
gtk3
jack
libaio
libbpf
libcacard
libcap-ng
libepoxy
libffi
libiscsi
libnfs
libpng
libpulse
libsasl
libseccomp
libslirp
libssh
liburing
libusb
libx11
libxkbcommon
lzo
mesa
meson
ncurses
ndctl
numactl
pam
python
python-sphinx
python-sphinx_rtd_theme
sdl2
sdl2_image
seabios
snappy
spice-protocol
spice
# systemd
usbredir
vde2
virglrenderer
vte3
xfsprogs
zlib
zstd
)
#------------------------
# INSTALL CONFIGURATION ]
arch=(x86_64)
_headlessdeps=(seabios gnutls libpng libaio numactl libnfs
lzo snappy curl vde2 libcap-ng spice libcacard usbredir libslirp
libssh zstd liburing ndctl dtc fuse3 libbpf)
depends=(
virglrenderer
sdl2
vte3
libpulse
libjack.so
brltty
"${_headlessdeps[@]}"
)
#----------------
# BUILD CONTROL ]
_path=(
)
_flags=(
)
#--------
# BUILD ]
build() {
_build full \
--audio-drv-list="pa alsa sdl jack"
_build headless \
--audio-drv-list= \
--disable-sdl \
--disable-gtk \
--disable-vte \
--disable-brlapi \
--disable-opengl \
--disable-virglrenderer
}
_build() (
cd build-$1
../${pkgname}-${pkgver}/configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--libexecdir=/usr/lib/qemu \
--smbd=/usr/bin/smbd \
--enable-modules \
--enable-sdl \
--enable-slirp=system \
--enable-xfsctl \
"${@:2}"
ninja
)
package_qemu() {
depends=(
alsa-lib libasound.so
bzip2 libbz2.so
cairo
curl libcurl.so
dtc
fuse3
gcc-libs
gdk-pixbuf2 libgdk_pixbuf-2.0.so
glib2 libgio-2.0.so libglib-2.0.so libgmodule-2.0.so libgobject-2.0.so
gnutls
gtk3 libgdk-3.so libgtk-3.so
jack libjack.so
libaio
libbpf libbpf.so
libcacard
libcap-ng libcap-ng.so
libepoxy
libjpeg libjpeg.so
libnfs
libpng
libpulse libpulse.so
libsasl
libseccomp libseccomp.so
libslirp libslirp.so
libssh libssh.so
libusb libusb-1.0.so
liburing liburing.so
libx11
libxkbcommon libxkbcommon.so
lzo
mesa
ncurses libncursesw.so
ndctl
numactl libnuma.so
pam libpam.so
pixman libpixman-1.so
seabios
sdl2
sdl2_image
snappy
spice libspice-server.so
eudev libeudev
usbredir
virglrenderer
vde2
vte3 libvte-2.91.so
zlib
zstd libzstd.so
)
optdepends=(
'brltty: for braille device support'
'qemu-arch-extra: extra architectures support'
)
provides=(qemu-headless)
conflicts=(qemu-headless)
replaces=(qemu-kvm)
_package full
}
package_qemu-headless() {
pkgdesc="QEMU without GUI"
depends=(
bzip2 libbz2.so
curl libcurl.so
dtc
fuse3
gcc-libs
glib2 libgio-2.0.so libglib-2.0.so libgmodule-2.0.so libgobject-2.0.so
gnutls
libaio
libbpf libbpf.so
libcacard
libcap-ng libcap-ng.so
libjpeg libjpeg.so
libnfs
libpng
libsasl
libseccomp libseccomp.so
libslirp libslirp.so
libssh libssh.so
libusb libusb-1.0.so
liburing liburing.so
libxkbcommon libxkbcommon.so
lzo
ndctl
numactl libnuma.so
ncurses libncursesw.so
pam libpam.so
pixman libpixman-1.so
seabios
snappy
spice libspice-server.so
eudev libeudev
usbredir
vde2
zlib
zstd libzstd.so
)
optdepends=('qemu-headless-arch-extra: extra architectures support')
_package headless
}
_package() {
optdepends+=('samba: SMB/CIFS server support'
'qemu-block-iscsi: iSCSI block support'
#'qemu-block-rbd: RBD block support'
'qemu-block-gluster: glusterfs block support')
install=qemu.install
options=(!strip !emptydirs)
DESTDIR="$pkgdir" ninja -C build-$1 install "${@:2}"
# systemd stuff
install -Dm644 65-kvm.rules "$pkgdir/usr/lib/udev/rules.d/65-kvm.rules"
# remove conflicting /var/run directory
cd "$pkgdir"
rm -r var
cd usr/lib
# bridge_helper needs suid
# https://bugs.archlinux.org/task/32565
chmod u+s qemu/qemu-bridge-helper
# remove split block modules
rm qemu/block-iscsi.so
cd ../bin
# remove extra arch
for _bin in qemu-*; do
[[ -f $_bin ]] || continue
case ${_bin#qemu-} in
# guest agent
ga) rm "$_bin"; continue ;;
# tools
edid|img|io|keymap|nbd|pr-helper|storage-daemon) continue ;;
# core emu
system-${arch}) continue ;;
esac
mv "$_bin" "$srcdir/extra-arch-$1/usr/bin"
done
cd ../share/qemu
for _blob in *; do
[[ -f $_blob ]] || continue
case $_blob in
# provided by seabios package
bios.bin|bios-256k.bin|vgabios-cirrus.bin|vgabios-qxl.bin|\
vgabios-stdvga.bin|vgabios-vmware.bin|vgabios-virtio.bin|vgabios-bochs-display.bin|\
vgabios-ramfb.bin) rm "$_blob"; continue ;;
# provided by edk2-ovmf package
edk2-*) rm "$_blob"; continue ;;
# iPXE ROMs
efi-*|pxe-*) continue ;;
# core blobs
bios-microvm.bin|kvmvapic.bin|linuxboot*|multiboot.bin|sgabios.bin|vgabios*) continue ;;
# Trace events definitions
trace-events*) continue ;;
esac
mv "$_blob" "$srcdir/extra-arch-$1/usr/share/qemu"
done
# provided by edk2-ovmf package
rm -r firmware
cd ..
if [ "$1" = headless ]; then rm -r {applications,icons}; fi
}
package_qemu-arch-extra() {
pkgdesc="QEMU for foreign architectures"
depends=(
dtc
fuse3
gcc-libs
gnutls
libaio
libbpf libbpf.so
glib2 libgio-2.0.so libglib-2.0.so libgobject-2.0.so libgmodule-2.0.so
libjpeg libjpeg.so
libpng
libsasl
libseccomp libseccomp.so
libslirp libslirp.so
liburing liburing.so
lzo
ndctl
numactl libnuma.so
pam libpam.so
pixman libpixman-1.so
snappy
#systemd-libs
libudev.so
qemu
vde2
zlib
zstd
libzstd.so
)
optdepends=(
'edk2-armvirt: for aarch64 UEFI support'
'edk2-ovmf: for ia32 and x64 UEFI support'
)
provides=(qemu-headless-arch-extra)
conflicts=(qemu-headless-arch-extra)
options=(!strip)
mv -v extra-arch-full/usr "$pkgdir"
}
package_qemu-headless-arch-extra() {
pkgdesc="QEMU without GUI, for foreign architectures"
depends=(
dtc
fuse3
gcc-libs
gnutls
libaio
libbpf libbpf.so
glib2 libgio-2.0.so libglib-2.0.so libgobject-2.0.so libgmodule-2.0.so
libjpeg libjpeg.so
libpng
libsasl
libseccomp libseccomp.so
libslirp libslirp.so
liburing liburing.so
lzo
ndctl
numactl libnuma.so
pam libpam.so
pixman libpixman-1.so
snappy
qemu-headless
#systemd-libs
libudev.so
vde2
zlib
zstd libzstd.so
)
optdepends=(
'edk2-armvirt: for aarch64 UEFI support'
'edk2-ovmf: for ia32 and x64 UEFI support'
)
options=(!strip)
mv -v extra-arch-headless/usr "$pkgdir"
}
package_qemu-block-iscsi() {
pkgdesc="QEMU iSCSI block module"
depends=(glibc libiscsi)
install -vDm 755 build-full/block-iscsi.so -t "$pkgdir/usr/lib/qemu/"
}
#package_qemu-block-rbd() {
# pkgdesc="QEMU RBD block module"
# depends=(glibc ceph-libs)
#
# install -vDm 755 build-full/block-rbd.so -t "$pkgdir/usr/lib/qemu/"
#}
package_qemu-block-gluster() {
pkgdesc="QEMU GlusterFS block module"
depends=(glibc glusterfs)
install -vDm 755 build-full/block-gluster.so -t "$pkgdir/usr/lib/qemu/"
}
package_qemu-guest-agent() {
pkgdesc="QEMU Guest Agent"
depends=(gcc-libs glib2 libudev.so liburing)
install -vDm 755 build-full/qga/qemu-ga -t "$pkgdir/usr/bin/"
install -vDm 755 "$srcdir/qemu-$pkgver/scripts/qemu-guest-agent/fsfreeze-hook" -t "$pkgdir/etc/qemu/"
}
#-------------------------
# LICENCE AND VALIDATION ]
license=(GPL2 LGPL2.1)
sha512sums=('3378ae21c75b77ee6a759827f1fcf7b2a50a0fef07e3b0e89117108022a8d8655fa977e4d65596f4f24f7c735c6594d44b0c6f69732ea4465e88a7406b1d5d3c'
'SKIP'
'a87b0da1d49b4d17e9128544c2b0f00f1ac5242adc7fd9e8c9efd24ab6791ed702b2a0866383d31c1bff3259c281c95a60a96453ad998256a8b133cfd7107a59'
'bdf05f99407491e27a03aaf845b7cc8acfa2e0e59968236f10ffc905e5e3d5e8569df496fd71c887da2b5b8d1902494520c7da2d3a8258f7fd93a881dd610c99')
#validpgpkeys=('CEACC9E15534EBABB82D3FA03353C9CEF108B584') # Michael Roth <flukshun@gmail.com>
diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index f2f3676d1f71d1cdd6acb6c4b3b973978ab96aeb..c5043999e9d47116a89511d82b231ada09e3c63a 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -1345,25 +1345,22 @@ socket_sockaddr_to_address_unix(struct sockaddr_storage *sa,
SocketAddress *addr;
struct sockaddr_un *su = (struct sockaddr_un *)sa;
- assert(salen >= sizeof(su->sun_family) + 1 &&
- salen <= sizeof(struct sockaddr_un));
-
addr = g_new0(SocketAddress, 1);
addr->type = SOCKET_ADDRESS_TYPE_UNIX;
+ salen -= offsetof(struct sockaddr_un, sun_path);
#ifdef CONFIG_LINUX
- if (!su->sun_path[0]) {
+ if (salen > 0 && !su->sun_path[0]) {
/* Linux abstract socket */
- addr->u.q_unix.path = g_strndup(su->sun_path + 1,
- salen - sizeof(su->sun_family) - 1);
+ addr->u.q_unix.path = g_strndup(su->sun_path + 1, salen - 1);
addr->u.q_unix.has_abstract = true;
addr->u.q_unix.abstract = true;
addr->u.q_unix.has_tight = true;
- addr->u.q_unix.tight = salen < sizeof(*su);
+ addr->u.q_unix.tight = salen < sizeof(su->sun_path);
return addr;
}
#endif
- addr->u.q_unix.path = g_strndup(su->sun_path, sizeof(su->sun_path));
+ addr->u.q_unix.path = g_strndup(su->sun_path, salen);
return addr;
}
#endif /* WIN32 */
# Arg 1: the new package version
post_install() {
# trigger events on modules files when already loaded
for _f in /sys/devices/virtual/misc/vhost-net; do
[[ -e "$_f" ]] && udevadm trigger "$_f"
done
:
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment