summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIonen Wolkens <ionen@gentoo.org>2022-11-15 22:30:33 -0500
committerIonen Wolkens <ionen@gentoo.org>2022-11-16 10:01:04 -0500
commit1954598a4b9fee10c063f6be17d07b47e7e93e4b (patch)
tree1ea4b73b411b0a9794cccd48abef71fbb8a651af /app-eselect
parentdev-python/mkdocs_pymdownx_material_extras: add 2.3 (diff)
downloadgentoo-1954598a4b9fee10c063f6be17d07b47e7e93e4b.tar.gz
gentoo-1954598a4b9fee10c063f6be17d07b47e7e93e4b.tar.bz2
gentoo-1954598a4b9fee10c063f6be17d07b47e7e93e4b.zip
app-eselect/eselect-wine: add 2.0.0, unkeyworded for testing
Complete rewrite but for notable bits: - removes register/deregister, can auto-update without this - no longer touch files in /usr at runtime wrt bug #632576, in this case it was particularly invasive doing *many* modifications to /usr/bin and /usr/share/man - handle /usr/lib/wine fwiw wrt bug #657748 (installed by the ebuild), albeit winebuild can find the right path nowadays - fix prefix wrt bug #717470 - give feedback when switching wrt bug #874612 - tries harder to not unexpectedly switch variant/version, and no longer need ebuild checks wrt bug #881035 - no longer hardcodes variants and so can support any random ones, i.e. an overlay can do wine-tkg or wine-myfunnyfork - --all, --vanilla, etc.. options were removed, but can still perform similar actions (see `help`) - `list` can now show selections for all variants at once - `unset` removed, not seeing a motivation (esp if not polluting /usr) - half+ the original size, and switches variant noticeably faster Still experimental and subject to changes, so unkeyworded for now. See README.rst for more notes, or the tarball's impl.rst for details. ebuild itself needs some nonsense largely caused by being difficult to get rid of the old eselect plus portage limitations. Bug: https://bugs.gentoo.org/632576 Bug: https://bugs.gentoo.org/657748 Bug: https://bugs.gentoo.org/717470 Bug: https://bugs.gentoo.org/874612 Bug: https://bugs.gentoo.org/881035 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
Diffstat (limited to 'app-eselect')
-rw-r--r--app-eselect/eselect-wine/Manifest1
-rw-r--r--app-eselect/eselect-wine/eselect-wine-2.0.0.ebuild88
2 files changed, 89 insertions, 0 deletions
diff --git a/app-eselect/eselect-wine/Manifest b/app-eselect/eselect-wine/Manifest
index f72d6e365f3d..36b4463cb6fa 100644
--- a/app-eselect/eselect-wine/Manifest
+++ b/app-eselect/eselect-wine/Manifest
@@ -1 +1,2 @@
DIST eselect-wine-1.2.2.tar.gz 4712 BLAKE2B 6ce92654cf2a5197c18bc84f8db52a11f198f81f0a8116f1986e74a1795ad475d22ff5a7cb9e9e31ce8ca813059b33cfbc52763110238cb378b15bebeb4b4271 SHA512 39f4d91461f72aeb07292dc7479c5cb7fc080b843bac57dec85c43d8751227e6953d32d52d4a14387d398b73120a32b79370d686c823f230dfd1d8b32ac8113a
+DIST eselect-wine-2.0.0.tar.xz 7440 BLAKE2B f889465985566c3cdb9035ec1eca79c506a39f6c3f05f7b20e3a2af70ab3202a6efdc2dc28468ee5b484aa037ebf034bf7ae881a5694459f37702291e8c14850 SHA512 7d5bf0d8abb0634adcbdcd1201eb8c69745e419dc484319e6af9446439b9595b00c6d1bb813390179e5e65843ec3a45079dd38ef7d92c1c97f86fd0aca095607
diff --git a/app-eselect/eselect-wine/eselect-wine-2.0.0.ebuild b/app-eselect/eselect-wine/eselect-wine-2.0.0.ebuild
new file mode 100644
index 000000000000..50b4a4c56409
--- /dev/null
+++ b/app-eselect/eselect-wine/eselect-wine-2.0.0.ebuild
@@ -0,0 +1,88 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Manage active Wine slots and variants"
+HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Wine"
+SRC_URI="https://dev.gentoo.org/~ionen/distfiles/${P}.tar.xz"
+#SRC_URI="https://gitweb.gentoo.org/proj/eselect-wine.git/snapshot/${P}.tar.bz2" # not up yet
+
+LICENSE="GPL-2+"
+SLOT="0"
+# rewrite that really needs testing so it doesn't break any bottles
+#KEYWORDS="~amd64 ~x86"
+
+RDEPEND="app-admin/eselect"
+
+pkg_pretend() {
+ # not-owned {bin,include}/wine is removed by pkg_preinst's unset, but
+ # portage currently checks collisions and errors out /before/ pkg_preinst
+ has_version '<app-eselect/eselect-wine-2' &&
+ has collision-protect ${FEATURES} &&
+ eerror "!Warning! may need to disable FEATURES=collision-protect to merge ${P}"
+}
+
+src_install() {
+ insinto /usr/share/eselect/modules
+ doins wine.eselect
+
+ keepdir /etc/eselect/wine
+
+ newenvd - 60${PN} <<-EOF
+ PATH="${EPREFIX}/etc/eselect/wine/bin"
+ MANPATH="${EPREFIX}/etc/eselect/wine/share/man"
+ XDG_DATA_DIRS="${EPREFIX}/etc/eselect/wine/share"
+ EOF
+
+ # links for building, e.g. wineasio (bug #657748)
+ dosym -r /etc/eselect/wine/wine /usr/lib/wine
+ dosym -r /etc/eselect/wine/include /usr/include/wine
+
+ # not required, but useful for e.g. binfmt that's not looking in PATH
+ # (not doing this for everything as it gets troublesome to track)
+ dosym -r /etc/eselect/wine/bin/wine /usr/bin/wine
+
+ einstalldocs
+}
+
+pkg_preinst() {
+ if has_version '<app-eselect/eselect-wine-2'; then
+ # keep copy of still-set 'active' to auto-select same slots
+ [[ ! -e ${EROOT}/etc/eselect/wine/active ]] ||
+ cp "${EROOT}"/etc/eselect/wine/{active,eselect-wine-migration} || die
+
+ # managed differently, need cleanup
+ eselect wine unset --all || die
+ rm -f "${EROOT}"/etc/eselect/wine/{active,installed,links/{any,vanilla,staging,proton,wine}} || die
+ rmdir "${EROOT}"/etc/eselect/wine/links 2>/dev/null
+
+ # some rare man dirs were created by old eselect, cleanup if now empty
+ rmdir "${EROOT}"/usr/share/man/{de,fr,pl}.UTF-8{/man1,} 2>/dev/null
+ fi
+
+ # lacking QA_BROKEN_SYMLINK, and rather avoid live /usr changes wrt
+ # bug #632576, nor create "owned" placeholders that will be clobbered
+ [[ -e ${EROOT}/etc/eselect/wine/bin/wine ]] ||
+ eqawarn "QA Note: broken symlinks QA is normal on first merge, targets created after"
+}
+
+pkg_postinst() {
+ eselect wine update --if-unset || die
+
+ rm -f "${EROOT}"/etc/eselect/wine/eselect-wine-migration || die # see preinst
+
+ if [[ ! ${REPLACING_VERSIONS##* } ]] ||
+ ver_test ${REPLACING_VERSIONS##* } -lt 2; then
+ elog
+ if [[ ${REPLACING_VERSIONS} ]]; then
+ elog "Note: if seen bin/wine or include/wine collision messages, it is harmless"
+ elog "${PN} changed a bit, suggest reviewing 'eselect wine help' (and list)."
+ fi
+ elog "Please run '. ${EROOT}/etc/profile' to update PATH in current shells."
+ fi
+}
+
+pkg_prerm() {
+ [[ ${REPLACED_BY_VERSION} ]] || eselect wine update --reset # no die
+}