From: CameronNemo <CameronNemo@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] xbps-triggers: binfmt: use --import
Date: Sun, 19 Apr 2020 09:26:20 +0200 [thread overview]
Message-ID: <20200419072620.KdIBrRQvJbJV_lQGuP5Sw0xibCidzlmkY_hL3Hb-8hk@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-10395@inbox.vuxu.org>
[-- Attachment #1: Type: text/plain, Size: 503 bytes --]
There is an updated pull request by CameronNemo against master on the void-packages repository
https://github.com/CameronNemo/void-packages binfmt_files
https://github.com/void-linux/void-packages/pull/10395
xbps-triggers: binfmt: use --import
Allow packages to specify format files to be imported by
the binfmt-support package, rather than specifying the
binfmt values in the package templates themselves.
A patch file from https://github.com/void-linux/void-packages/pull/10395.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-binfmt_files-10395.patch --]
[-- Type: text/x-diff, Size: 13765 bytes --]
From 936e89adf21578ad1e7e52b25676885c0d800951 Mon Sep 17 00:00:00 2001
From: Cameron Nemo <cnemo@tutanota.com>
Date: Fri, 19 Apr 2019 20:33:08 -0700
Subject: [PATCH 1/3] xbps-triggers: binfmt: use --import
Allow packages to specify format files to be imported by
the binfmt-support package, rather than specifying the
binfmt values in the package templates themselves.
---
Manual.md | 9 +++++++--
common/environment/setup-subpkg/subpkg.sh | 1 +
.../04-create-xbps-metadata-scripts.sh | 4 ++++
srcpkgs/xbps-triggers/files/binfmts | 18 +++++++++++++++---
srcpkgs/xbps-triggers/template | 2 +-
5 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/Manual.md b/Manual.md
index 92b57b1b2c2..fa2a8a51702 100644
--- a/Manual.md
+++ b/Manual.md
@@ -1626,8 +1626,13 @@ executable binary formats, know as binfmts.
During installation/removal it uses `update-binfmts` from the `binfmt-support` package
to register/remove entries from the arbitrary executable binary formats database.
-To include the trigger use the `binfmts` variable, as the trigger won't do anything unless
-it is defined.
+Include the trigger by specifying the `binfmt_files` variable. This variable
+contains a space separated list of format file, relative to
+`/usr/share/binfmts`. Each format file is passed to `update-binfmts --import`.
+
+The `binfmts` variable is deprecated, but still supported. The variable contains
+a newline separated list of arguments that are passed to
+`update-binfmts --package <pkgname> --install`.
<a id="triggers_dkms"></a>
#### dkms
diff --git a/common/environment/setup-subpkg/subpkg.sh b/common/environment/setup-subpkg/subpkg.sh
index 6bf748fdc3d..fb97c7b5a20 100644
--- a/common/environment/setup-subpkg/subpkg.sh
+++ b/common/environment/setup-subpkg/subpkg.sh
@@ -40,6 +40,7 @@ unset -v make_dirs
# xbps-triggers: binfmts
unset -v binfmts
+unset -v binfmt_files
# xbps-triggers: register-shell
unset -v register_shell
diff --git a/common/hooks/post-install/04-create-xbps-metadata-scripts.sh b/common/hooks/post-install/04-create-xbps-metadata-scripts.sh
index 3b1089cd410..fb49ef93b75 100644
--- a/common/hooks/post-install/04-create-xbps-metadata-scripts.sh
+++ b/common/hooks/post-install/04-create-xbps-metadata-scripts.sh
@@ -123,6 +123,10 @@ _EOF
_add_trigger binfmts
echo "export binfmts=\"${binfmts}\"" >> $tmpf
fi
+ if [ -n "${binfmt_files}" ]; then
+ _add_trigger binfmts
+ echo "export binfmt_files=\"${binfmt_files}\"" >> $tmpf
+ fi
#
# Handle GNU Info files.
#
diff --git a/srcpkgs/xbps-triggers/files/binfmts b/srcpkgs/xbps-triggers/files/binfmts
index 16919833a80..cb9b680fc37 100755
--- a/srcpkgs/xbps-triggers/files/binfmts
+++ b/srcpkgs/xbps-triggers/files/binfmts
@@ -25,19 +25,26 @@ targets)
;;
run)
[ -x /usr/bin/update-binfmts ] || exit 0
- [ -z "${binfmts}" ] && exit 0
+ [ "${binfmts}" ] || [ "${binfmt_files}" ] || exit 0
case "$TARGET" in
post-install)
- echo "$binfmts" | tr '\' '&' 2> /dev/null | while read line; do
+ printf 'Installing binfmts...\n'
+ printf '%s' "$binfmts" | tr '\' '&' 2> /dev/null | while read line; do
line=$(echo $line | tr '&' '\' 2> /dev/null)
set -- ${line}
_bin="$1"; shift; _args="$@"; _bname="$(basename ${_bin})"
update-binfmts --package ${PKGNAME} --install ${_bname} ${_bin} ${_args}
done
+ for binfmt in ${binfmt_files}; do
+ test -e "$(pwd)/usr/share/binfmts/${binfmt}" || continue
+ update-binfmts --importdir "$(pwd)/usr/share/binfmts" \
+ --import "${binfmt}"
+ done
;;
pre-remove)
- echo "$binfmts" | tr '\' '&' 2> /dev/null | while read line; do
+ printf 'Removing binfmts...\n'
+ printf '%s' "$binfmts" | tr '\' '&' 2> /dev/null | while read line; do
line=$(echo $line | tr '&' '\' 2> /dev/null)
set -- ${line}
_bin="$1"; shift; _args="$@"; _bname="$(basename ${_bin})"
@@ -45,6 +52,11 @@ run)
update-binfmts --package ${PKGNAME} --remove ${_bname} ${_bin}
fi
done
+ for binfmt in ${binfmt_files}; do
+ test -e "$(pwd)/usr/share/binfmts/${binfmt}" || continue
+ update-binfmts --importdir "$(pwd)/usr/share/binfmts" \
+ --unimport "${binfmt}"
+ done
;;
*)
exit 1
diff --git a/srcpkgs/xbps-triggers/template b/srcpkgs/xbps-triggers/template
index c80bb30d3f5..2c76f76e3b1 100644
--- a/srcpkgs/xbps-triggers/template
+++ b/srcpkgs/xbps-triggers/template
@@ -1,6 +1,6 @@
# Template file for 'xbps-triggers'
pkgname=xbps-triggers
-version=0.114
+version=0.115
revision=1
archs=noarch
bootstrap=yes
From 16a475ba35e724116e2c728d7a4dede5b8ce4f47 Mon Sep 17 00:00:00 2001
From: Cameron Nemo <cnemo@tutanota.com>
Date: Fri, 19 Apr 2019 20:35:19 -0700
Subject: [PATCH 2/3] qemu-user-static: use binfmt_files
---
srcpkgs/qemu-user-static/template | 94 ++++++++-----------------------
1 file changed, 25 insertions(+), 69 deletions(-)
diff --git a/srcpkgs/qemu-user-static/template b/srcpkgs/qemu-user-static/template
index b8607620523..99942fda0b5 100644
--- a/srcpkgs/qemu-user-static/template
+++ b/srcpkgs/qemu-user-static/template
@@ -1,7 +1,7 @@
# Template file for 'qemu-user-static'
pkgname=qemu-user-static
version=4.2.0
-revision=1
+revision=2
wrksrc="qemu-${version}"
hostmakedepends="pkg-config automake python"
makedepends="dtc-devel libglib-static pixman-devel libuuid-devel"
@@ -12,94 +12,50 @@ homepage="https://www.qemu.org"
distfiles="https://wiki.qemu.org/download/qemu-${version}.tar.bz2"
checksum=3cf4f3f73233a12211a045f07eef467fdc7bf3877568cd0c8a0cf36121da9fbd
-_fmts="aarch64 alpha arm armeb cris i386 m68k microblaze mips mipsel mips64 mips64el ppc ppc64 ppc64abi32 ppc64le s390x sh4 sh4eb sparc sparc32plus sparc64 x86_64"
-
-_aarch64_magic='\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7'
-_aarch64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_alpha_magic='\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90'
-_alpha_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
-_arm_magic='\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00'
-_arm_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
-_armeb_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28'
-_armeb_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_cris_magic='\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x4c\x00'
-_cris_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
-_i386_magic='\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00'
-_i386_mask='\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
-_m68k_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x04'
-_m68k_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_microblaze_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xba\xab'
-_microblaze_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_mips_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08'
-_mips_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_mipsel_magic='\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00'
-_mipsel_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xfe\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
-_mips64_magic='\x7f\x45\x4c\x46\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08'
-_mips64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_mips64el_magic='\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00'
-_mips64el_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xfe\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
-_ppc_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14'
-_ppc_mask='\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_ppc64_magic='\x7f\x45\x4c\x46\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15'
-_ppc64_mask='\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_ppc64abi32_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15'
-_ppc64abi32_mask='\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_s390x_magic='\x7f\x45\x4c\x46\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x16'
-_s390x_mask='\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_sh4_magic='\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a\x00'
-_sh4_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
-_sh4eb_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a'
-_sh4eb_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_sparc_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02'
-_sparc_mask='\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_sparc32plus_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x12'
-_sparc32plus_mask='\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_sparc64_magic='\x7f\x45\x4c\x46\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2b'
-_sparc64_mask='\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
-_x86_64_magic='\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x3e\x00'
-_x86_64_mask='\xff\xff\xff\xff\xff\xfe\xfe\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
-_ppc64le_magic='\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15\x00'
-_ppc64le_mask='\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\x00'
-
-case "$XBPS_TARGET_MACHINE" in
- x86_64*|i386*) _omit="i386|x86_64" ;;
- aarch64*) _omit="aarch64" ;;
- armv*) _omit="arm" ;;
- mips*) _omit="${XBPS_TARGET_MACHINE%-*}" ;;
- *) _omit="${XBPS_TARGET_MACHINE%-*}" ;;
-esac
-
-for _fmt in $_fmts; do
- eval "case $_fmt in $_omit) magic= ;; *) magic=\"\$_${_fmt}_magic\" mask=\"\$_${_fmt}_mask\" ;; esac"
- if [ "$magic" ]; then
- binfmts+="/usr/bin/qemu-$_fmt-static --magic $magic --mask $mask --offset 0 --credential yes
-"
- fi
+# Copied from ${wrksrc}/scripts/qemu-binfmt-conf.sh
+_binfmt_archs="i386 i486 alpha arm armeb sparc32plus ppc ppc64 ppc64le m68k
+ mips mipsel mipsn32 mipsn32el mips64 mips64el sh4 sh4eb s390x aarch64
+ aarch64_be hppa riscv32 riscv64 xtensa xtensaeb microblaze microblazeel or1k
+ x86_64"
+for a in ${_binfmt_archs}; do
+ binfmt_files="${binfmt_files:-}${binfmt_files:+ }qemu-${a}"
done
-
-binfmts="${binfmts%?}"
nopie=yes
post_extract() {
sed -i 's/__u64/unsigned long/' linux-user/host/aarch64/hostdep.h
}
+
do_configure() {
./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/libexec \
--disable-kvm --disable-vnc-png \
--disable-virtfs --disable-fdt --disable-seccomp \
--enable-linux-user --disable-system
}
+
do_build() {
make ${makejobs} LDFLAGS="-static -lrt -luuid"
}
+
do_install() {
make DESTDIR=${DESTDIR} install
+ # Install binfmt configurations
+ vmkdir usr/share/binfmts
+ HOST_ARCH="${XBPS_TARGET_MACHINE%-musl}" ./scripts/qemu-binfmt-conf.sh \
+ --debian --qemu-path /usr/bin --qemu-suffix -static \
+ --exportdir "${DESTDIR}/usr/share/binfmts"
# Remove unneeded stuff.
- rm -rf ${DESTDIR}/etc ${DESTDIR}/usr/share ${DESTDIR}/usr/libexec
+ rm -rf -- "${DESTDIR}/etc" "${DESTDIR}/usr/libexec"
+ for d in doc locale man qemu; do
+ rm -rf -- "${DESTDIR}/usr/share/${d}"
+ done
for f in nbd io img; do
- rm -f ${DESTDIR}/usr/bin/qemu-${f}
+ rm -f -- "${DESTDIR}/usr/bin/qemu-${f}"
done
+}
+
+post_install() {
for f in ${DESTDIR}/usr/bin/*; do
- mv ${f} ${f}-static
+ mv "${f}" "${f}-static"
done
}
From 96f21c86ef01183bf0950b0df5a8969cccbd8e1d Mon Sep 17 00:00:00 2001
From: Cameron Nemo <cnemo@tutanota.com>
Date: Sun, 19 Apr 2020 00:25:06 -0700
Subject: [PATCH 3/3] wine: use binfmt_files
---
srcpkgs/wine/files/binfmts/wine | 3 +++
srcpkgs/wine/template | 6 ++++--
2 files changed, 7 insertions(+), 2 deletions(-)
create mode 100644 srcpkgs/wine/files/binfmts/wine
diff --git a/srcpkgs/wine/files/binfmts/wine b/srcpkgs/wine/files/binfmts/wine
new file mode 100644
index 00000000000..cb52a076334
--- /dev/null
+++ b/srcpkgs/wine/files/binfmts/wine
@@ -0,0 +1,3 @@
+package wine
+interpreter /usr/bin/wine
+magic MZ
diff --git a/srcpkgs/wine/template b/srcpkgs/wine/template
index dd14e702414..07745e664ed 100644
--- a/srcpkgs/wine/template
+++ b/srcpkgs/wine/template
@@ -1,7 +1,7 @@
# Template file for 'wine'
pkgname=wine
version=5.6
-revision=1
+revision=2
build_style=gnu-configure
configure_args="--without-gstreamer"
short_desc="Run Microsoft Windows applications"
@@ -31,9 +31,11 @@ depends="libXi libXinerama libXcomposite libXcursor libOSMesa
desktop-file-utils hicolor-icon-theme liberation-fonts-ttf
gnutls"
-binfmts="/usr/bin/wine --magic MZ"
+binfmt_files="wine"
post_install() {
+ # binfmt configuration
+ vinstall "${FILESDIR}/binfmts/wine" 0644 usr/share/binfmts
# Font aliasing settings for Win32 applications
install -d ${DESTDIR}/etc/fonts/conf.{avail,d}
install -m644 ${FILESDIR}/30-win32-aliases.conf ${DESTDIR}/etc/fonts/conf.avail
next prev parent reply other threads:[~2020-04-19 7:26 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-10395@inbox.vuxu.org>
2020-03-08 0:09 ` CameronNemo
2020-04-19 7:26 ` CameronNemo [this message]
2020-07-10 0:17 ` fosslinux
2020-07-22 13:08 ` [PR REVIEW] " sgn
2020-09-21 0:12 ` [PR PATCH] [Updated] " CameronNemo
2020-09-21 0:13 ` [PR REVIEW] " CameronNemo
2020-09-21 1:06 ` CameronNemo
2020-09-21 1:07 ` CameronNemo
2020-11-01 1:40 ` ericonr
2020-11-01 19:11 ` [PR PATCH] [Updated] " CameronNemo
2020-11-01 19:11 ` CameronNemo
2020-11-02 4:08 ` ericonr
2020-11-02 17:49 ` [PR PATCH] [Updated] " CameronNemo
2021-01-13 18:22 ` [PR REVIEW] " ericonr
2021-02-11 21:39 ` ericonr
2021-04-27 22:44 ` [PR PATCH] [Updated] " CameronNemo
2021-04-27 22:44 ` [PR REVIEW] " CameronNemo
2021-04-27 23:08 ` CameronNemo
2021-04-27 23:13 ` ericonr
2021-05-10 17:21 ` [PR PATCH] [Updated] " CameronNemo
2021-05-10 17:21 ` [PR REVIEW] " CameronNemo
2022-04-15 0:51 ` github-actions
2022-04-29 2:13 ` [PR PATCH] [Closed]: " github-actions
2022-09-30 3:12 ` CameronNemo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200419072620.KdIBrRQvJbJV_lQGuP5Sw0xibCidzlmkY_hL3Hb-8hk@z \
--to=cameronnemo@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).