commit:     9a8e4918d692387e41f5e322448aecf09920b0ec
Author:     Arsen Arsenović <arsen <AT> gentoo <DOT> org>
AuthorDate: Sun Mar 26 20:56:58 2023 +0000
Commit:     Arsen Arsenović <arsen <AT> gentoo <DOT> org>
CommitDate: Sun Aug 18 17:43:14 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9a8e4918

dev-scheme/guile: add properly slotted revisions

Bug: https://bugs.gentoo.org/689408
Bug: https://bugs.gentoo.org/640116
Bug: https://bugs.gentoo.org/746914
Bug: https://bugs.gentoo.org/705554
Signed-off-by: Arsen Arsenović <arsen <AT> gentoo.org>

 dev-scheme/guile/guile-2.2.7-r100.ebuild           | 93 ++++++++++++++++++++++
 ...uile-3.0.10.ebuild => guile-3.0.10-r100.ebuild} | 22 +++--
 dev-scheme/guile/guile-3.0.10.ebuild               |  2 +-
 dev-scheme/guile/metadata.xml                      |  9 +++
 profiles/package.mask                              |  7 ++
 5 files changed, 126 insertions(+), 7 deletions(-)

diff --git a/dev-scheme/guile/guile-2.2.7-r100.ebuild 
b/dev-scheme/guile/guile-2.2.7-r100.ebuild
new file mode 100644
index 000000000000..ad6818be8c55
--- /dev/null
+++ b/dev-scheme/guile/guile-2.2.7-r100.ebuild
@@ -0,0 +1,93 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="GNU Ubiquitous Intelligent Language for Extensions"
+HOMEPAGE="https://www.gnu.org/software/guile/";
+SRC_URI="mirror://gnu/guile/${P}.tar.xz"
+
+LICENSE="LGPL-3+"
+SLOT="$(ver_cut 1-2)"  # See (guile)Parallel Installations.
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 
~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+IUSE="debug debug-malloc +deprecated +networking +nls +regex +threads" # 
upstream recommended +networking +nls
+REQUIRED_USE="regex" # workaround for bug 596322
+RESTRICT="strip"
+
+RDEPEND="
+       >=dev-libs/boehm-gc-7.0:=[threads?]
+       dev-libs/gmp:=
+       dev-libs/libffi:=
+       dev-libs/libltdl:=
+       dev-libs/libunistring:0=
+       sys-libs/ncurses:0=
+       sys-libs/readline:0=
+       virtual/libcrypt:=
+       !dev-scheme/guile:12
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+       virtual/pkgconfig
+       dev-build/libtool
+       sys-devel/gettext
+"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-2.2.3-gentoo-sandbox.patch"
+       "${FILESDIR}/${PN}-2.2.7-stack-up.patch"
+)
+
+# guile generates ELF files without use of C or machine code
+# It's a portage's false positive. bug #677600
+QA_PREBUILT='*[.]go'
+
+DOCS=( GUILE-VERSION HACKING README )
+
+src_configure() {
+       # see bug #676468
+       mv prebuilt/32-bit-big-endian{,.broken} || die
+
+       econf \
+               --program-suffix="-${SLOT}" \
+               --disable-error-on-warning \
+               --disable-rpath \
+               --disable-static \
+               --enable-posix \
+               --without-libgmp-prefix \
+               --without-libiconv-prefix \
+               --without-libintl-prefix \
+               --without-libltdl-prefix \
+               --without-libreadline-prefix \
+               --without-libunistring-prefix \
+               $(use_enable debug guile-debug) \
+               $(use_enable debug-malloc) \
+               $(use_enable deprecated) \
+               $(use_enable networking) \
+               $(use_enable nls) \
+               $(use_enable regex) \
+               $(use_with threads)
+}
+
+src_install() {
+       default
+
+       # From Novell
+       # https://bugzilla.novell.com/show_bug.cgi?id=874028#c0
+       dodir /usr/share/gdb/auto-load/$(get_libdir)
+       mv "${ED}"/usr/$(get_libdir)/libguile-*-gdb.scm 
"${ED}"/usr/share/gdb/auto-load/$(get_libdir) || die
+
+       find "${D}" -name '*.la' -delete || die
+
+       # Move the pkg-config files to guile-data.  In future versions, this
+       # should be handled by --with-pkgconfigdir (patch waiting on
+       # upstream).
+       local pcdir=/usr/share/guile-data/"${SLOT}"
+       mkdir -p "${ED}${pcdir}" || die
+       mv "${ED}"/usr/share/aclocal/guile{,-"${SLOT}"}.m4 || die
+       mv "${ED}"/usr/$(get_libdir)/pkgconfig/ \
+          "${ED}/${pcdir}" || die
+
+       newenvd - "50guile${SLOT}" <<-EOF
+       PKG_CONFIG_PATH="${pcdir}/pkgconfig"
+       EOF
+}

diff --git a/dev-scheme/guile/guile-3.0.10.ebuild 
b/dev-scheme/guile/guile-3.0.10-r100.ebuild
similarity index 80%
copy from dev-scheme/guile/guile-3.0.10.ebuild
copy to dev-scheme/guile/guile-3.0.10-r100.ebuild
index 5d10f39559f3..027d50d2cadf 100644
--- a/dev-scheme/guile/guile-3.0.10.ebuild
+++ b/dev-scheme/guile/guile-3.0.10-r100.ebuild
@@ -3,13 +3,12 @@
 
 EAPI=8
 
-MAJOR="3.0"
 DESCRIPTION="GNU Ubiquitous Intelligent Language for Extensions"
 HOMEPAGE="https://www.gnu.org/software/guile/";
 SRC_URI="mirror://gnu/guile/${P}.tar.xz"
 
 LICENSE="LGPL-3+"
-SLOT="12/3.0-1" # libguile-2.2.so.1 => 2.2-1
+SLOT="$(ver_cut 1-2)"  # See (guile)Parallel Installations.
 KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 
~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos 
~x64-macos"
 
 IUSE="debug debug-malloc +deprecated +jit +networking +nls +regex +threads" # 
upstream recommended +networking +nls
@@ -25,6 +24,7 @@ RDEPEND="
        sys-libs/ncurses:=
        sys-libs/readline:=
        virtual/libcrypt:=
+       !dev-scheme/guile:12
 "
 DEPEND="${RDEPEND}"
 BDEPEND="
@@ -41,11 +41,19 @@ DOCS=( ABOUT-NLS AUTHORS ChangeLog GUILE-VERSION HACKING 
NEWS README THANKS )
 
 PATCHES=( "${FILESDIR}"/${PN}-2.2.3-gentoo-sandbox.patch )
 
+# Where to install data files.
+GUILE_DATA="${PREFIX}/usr/share/guile-data/${SLOT}"
+GUILE_PCDIR="/usr/share/guile-data/${SLOT}/pkgconfig"
+
 src_configure() {
        # see bug #676468
        mv prebuilt/32-bit-big-endian{,.broken} || die
 
        local -a myconf=(
+               --program-suffix="-${SLOT}"
+               --infodir="${GUILE_DATA}/info"
+               --with-pkgconfigdir="${GUILE_PCDIR}"
+
                --disable-error-on-warning
                --disable-rpath
                --disable-lto
@@ -64,7 +72,7 @@ src_configure() {
                $(use_enable regex)
                $(use_with threads)
        )
-       econf ${myconf[@]}
+       econf "${myconf[@]}"
 }
 
 src_install() {
@@ -74,8 +82,10 @@ src_install() {
        dodir /usr/share/gdb/auto-load/$(get_libdir)
        mv "${ED}"/usr/$(get_libdir)/libguile-*-gdb.scm 
"${ED}"/usr/share/gdb/auto-load/$(get_libdir) || die
 
-       # necessary for registering slib, see bug #206896
-       keepdir /usr/share/guile/site
-
+       mv "${ED}"/usr/share/aclocal/guile{,-"${SLOT}"}.m4 || die
        find "${ED}" -name '*.la' -delete || die
+
+       newenvd - "50guile${SLOT}" <<-EOF
+       PKG_CONFIG_PATH="${GUILE_PCDIR}"
+       EOF
 }

diff --git a/dev-scheme/guile/guile-3.0.10.ebuild 
b/dev-scheme/guile/guile-3.0.10.ebuild
index 5d10f39559f3..25b528640471 100644
--- a/dev-scheme/guile/guile-3.0.10.ebuild
+++ b/dev-scheme/guile/guile-3.0.10.ebuild
@@ -64,7 +64,7 @@ src_configure() {
                $(use_enable regex)
                $(use_with threads)
        )
-       econf ${myconf[@]}
+       econf "${myconf[@]}"
 }
 
 src_install() {

diff --git a/dev-scheme/guile/metadata.xml b/dev-scheme/guile/metadata.xml
index 0ec99201052d..fc7f82d4b3b9 100644
--- a/dev-scheme/guile/metadata.xml
+++ b/dev-scheme/guile/metadata.xml
@@ -20,4 +20,13 @@ Guile is a library designed to help programmers create 
flexible applications. Us
     <doc>https://www.gnu.org/software/guile/manual/html_node/index.html</doc>
     <remote-id type="savannah">guile</remote-id>
   </upstream>
+  <slots>
+    <!-- See (guile)Parallel Installations.  -->
+    <slot name="3.0">
+      Guile effective version 3.0.
+    </slot>
+    <slot name="2.2">
+      Guile effective version 2.2.
+    </slot>
+  </slots>
 </pkgmetadata>

diff --git a/profiles/package.mask b/profiles/package.mask
index 3232315d3ede..3af559d8e0d7 100644
--- a/profiles/package.mask
+++ b/profiles/package.mask
@@ -33,6 +33,13 @@
 
 #--- END OF EXAMPLES ---
 
+# Arsen Arsenović <[email protected]> (2024-08-02)
+# Guile rework masks.  Mask all packages or package versions that are
+# being bumped as part of the Guile reslotting process.
+# Masked until the whole Guile ecosystem is updated.
+dev-scheme/guile:2.2
+dev-scheme/guile:3.0
+
 # Eli Schwartz <[email protected]> (2024-08-15)
 # Abandoned upstream since 2011, unmaintained in gentoo since 2017. Tons of
 # patches, breaks again with GCC 14. Severe QA issues, automagic dependencies,

Reply via email to