From: CameronNemo <CameronNemo@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] xbps-triggers: binfmt: use --import
Date: Mon, 02 Nov 2020 18:49:17 +0100 [thread overview]
Message-ID: <20201102174917.860jdf4--Rkm070MABNd_pJCBb3Wm6izPt5fOZS4j84@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: 14307 bytes --]
From 17034d64bda85c0e94dd008732acf9e00f383793 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 5b1266ba715..30bec4b1925 100644
--- a/Manual.md
+++ b/Manual.md
@@ -1666,8 +1666,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 0243d240048..0011d7558fb 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 1300c783b7d..d0cd0d620e5 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..b9688097f4f 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\n' "$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\n' "$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 4131b479bef..75010d6bee7 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.117
+version=0.118
revision=1
bootstrap=yes
short_desc="XBPS triggers for Void Linux"
From 00060114571530bbcbbbea472758bab33042e490 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 | 91 +++++--------------
.../qemu/patches/musl-initialize-msghdr.patch | 15 +++
2 files changed, 37 insertions(+), 69 deletions(-)
create mode 100644 srcpkgs/qemu/patches/musl-initialize-msghdr.patch
diff --git a/srcpkgs/qemu-user-static/template b/srcpkgs/qemu-user-static/template
index 236da6cc290..a591378871b 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=5.1.0
-revision=1
+revision=2
wrksrc="qemu-${version}"
hostmakedepends="pkg-config automake python3"
makedepends="dtc-devel libglib-static pixman-devel libuuid-devel"
@@ -12,73 +12,15 @@ homepage="https://www.qemu.org"
distfiles="https://wiki.qemu.org/download/qemu-${version}.tar.bz2"
checksum=8314b6e5fcc7bf9fa3915d504de6586a69cba30ffa27cbe9ba85d2cb9987fb3a
-_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%?}"
-
post_extract() {
sed -i 's/__u64/unsigned long/' linux-user/host/aarch64/hostdep.h
}
@@ -97,12 +39,23 @@ do_build() {
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
}
diff --git a/srcpkgs/qemu/patches/musl-initialize-msghdr.patch b/srcpkgs/qemu/patches/musl-initialize-msghdr.patch
new file mode 100644
index 00000000000..c195f0c0b1f
--- /dev/null
+++ b/srcpkgs/qemu/patches/musl-initialize-msghdr.patch
@@ -0,0 +1,15 @@
+Source: https://github.com/void-linux/void-packages/issues/23557
+
+diff --git linux-user/syscall.c linux-user/syscall.c
+index 945fc25..8d8b68a 100644
+--- linux-user/syscall.c
++++ linux-user/syscall.c
+@@ -3071,7 +3071,7 @@ static abi_long do_sendrecvmsg_locked(int fd, struct target_msghdr *msgp,
+ int flags, int send)
+ {
+ abi_long ret, len;
+- struct msghdr msg;
++ struct msghdr msg = {0};
+ abi_ulong count;
+ struct iovec *vec;
+ abi_ulong target_vec;
From a7b7b6089cb540f40ba60379d2d3a1d071b07d9c 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 | 5 +++--
2 files changed, 6 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 0b5ebe5a3e4..328657d549b 100644
--- a/srcpkgs/wine/template
+++ b/srcpkgs/wine/template
@@ -1,7 +1,7 @@
# Template file for 'wine'
pkgname=wine
version=5.20
-revision=1
+revision=2
build_style=gnu-configure
configure_args="--bindir=/usr/libexec/wine"
short_desc="Run Microsoft Windows applications"
@@ -89,7 +89,7 @@ wine-devel_package() {
wine-common_package() {
short_desc+=" - common files"
- binfmts="/usr/bin/wine --magic MZ"
+ binfmt_files="wine"
pkg_install() {
vmove usr/share
vmove etc/fonts
@@ -97,6 +97,7 @@ wine-common_package() {
do
vmove usr/bin/${file}
done
+ vinstall "${FILESDIR}/binfmts/wine" 0644 usr/share/binfmts
}
}
next prev parent reply other threads:[~2020-11-02 17:49 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 ` [PR PATCH] [Updated] " CameronNemo
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 ` CameronNemo [this message]
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=20201102174917.860jdf4--Rkm070MABNd_pJCBb3Wm6izPt5fOZS4j84@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).