commit: d7552dce2ba8d05735933570a064d725ca784030 Author: Alfred Wingate <parona <AT> protonmail <DOT> com> AuthorDate: Thu Feb 27 15:52:30 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sun May 18 15:22:01 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d7552dce
gnustep-base/gnustep-make: add 2.9.3 libobjc2 installs libobjc.so.4.6 with a symlink to libobjc.so. As such libobjc2.so.4 wont work as the objc-lib flag and leads to hard to understand problems such as https://github.com/gnustep/libobjc2/issues/16 Signed-off-by: Alfred Wingate <parona <AT> protonmail.com> Part-of: https://github.com/gentoo/gentoo/pull/42071 Signed-off-by: Sam James <sam <AT> gentoo.org> gnustep-base/gnustep-make/Manifest | 1 + .../gnustep-make/gnustep-make-2.9.3.ebuild | 140 +++++++++++++++++++++ 2 files changed, 141 insertions(+) diff --git a/gnustep-base/gnustep-make/Manifest b/gnustep-base/gnustep-make/Manifest index 632e6e123992..762f135b526f 100644 --- a/gnustep-base/gnustep-make/Manifest +++ b/gnustep-base/gnustep-make/Manifest @@ -1,3 +1,4 @@ DIST gnustep-make-2.9.0.tar.gz 611406 BLAKE2B 73bae19b5d3d3c1e069d22ce7087308166f632277d870fa5ab125d5bc004a1518a1edb6822c61e00b98fc13a1b3354440024bd13d98662002c15298745c4e935 SHA512 ff185affe32d4efc2009d72a3862bc3bffebce05ea5a7fdfbf4372774e57b6654863e317ce648c248716dd3e97a4320d697a313e7eefd04f5723186be6cbf1e3 DIST gnustep-make-2.9.1.tar.gz 621081 BLAKE2B 1523cdb2b38ebd32c9a6b52edd07302e425aaf5f9820d152c4a4c18b7a34dbcfd1615208f8a8588ea32db354c5955a7e76af50948c88e685bce48077fdc6d646 SHA512 ab36cea1e79ba1248ee7510f2a4d5f5fe5aa0ee7044d51a3b4f65ebaeed08134b3b3ea8a9e34cdb4fa90ac43143d96cf868ae766d2fdc4341419575eb1637f28 DIST gnustep-make-2.9.2.tar.gz 611483 BLAKE2B 6fe7a133832b8ceabca9b0a5aaf45323ebbc9139b843b0c307f44f56e794a98c3293ac31513f4c9236ddae27aec5e6935126f9804f52e37b24a3e1ce1e118d32 SHA512 f807a9cdf29f0fc7bbe92e1c9895f8675cc564fb0e6eecba2431ccde315a8a78491e6ef84d86a279c8af02843b2e2a4f436624824733a53de02e2656b092394a +DIST gnustep-make-2.9.3.tar.gz 613252 BLAKE2B e3bf6f2e029cce2a15ad07871952dfd5246104c78a780040d623e1a31be117606f8c428edac39684e45386fc3053f34f83d6dfe2d99b9308ca7d6606710f7c7b SHA512 5fd1991f4e6707e698fb37b152dd3bec377391de4757919a4f194542f2a032a1ad484b63eb693115fab6753b5e726813c272540b78359163c332637194701ab2 diff --git a/gnustep-base/gnustep-make/gnustep-make-2.9.3.ebuild b/gnustep-base/gnustep-make/gnustep-make-2.9.3.ebuild new file mode 100644 index 000000000000..5cd0346b9dcf --- /dev/null +++ b/gnustep-base/gnustep-make/gnustep-make-2.9.3.ebuild @@ -0,0 +1,140 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +inherit flag-o-matic gnustep-base prefix toolchain-funcs + +DESCRIPTION="GNUstep Makefile Package" +HOMEPAGE="https://gnustep.github.io" +SRC_URI="ftp://ftp.gnustep.org/pub/gnustep/core/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux" +IUSE="libobjc2 native-exceptions" + +DEPEND="${GNUSTEP_CORE_DEPEND} + >=dev-build/make-3.75 + libobjc2? ( gnustep-base/libobjc2 + llvm-core/clang:* ) + !libobjc2? ( !!gnustep-base/libobjc2 + || ( + sys-devel/gcc:*[objc] + llvm-core/clang:* + ) )" +RDEPEND="${DEPEND}" + +PATCHES=( "${FILESDIR}"/${PN}-2.9.0-no_compress_man_pages.patch ) + +pkg_setup() { + # Determine libobjc.so to use + if use libobjc2; then + libobjc_version=libobjc.so + else + # Find version in active gcc + for ver in {2..5}; + do + if $(tc-getCC) -Werror -Wl,-l:libobjc.so.${ver} -x objective-c \ + - <<<$'int main() {}' -o /dev/null 2> /dev/null; + then + libobjc_version=libobjc.so.${ver} + fi + done + fi + + # Stop if we could not get libobjc.so + if [[ -z ${libobjc_version} ]]; then + eerror "${P} requires a working Objective-C runtime and a compiler with" + eerror "Objective-C support. Your current settings lack these requirements" + if ! use libobjc2; + then + eerror "Please switch your active compiler to gcc with USE=objc, or clang" + fi + die "Could not find Objective-C runtime" + fi + + # For existing installations, determine if we will use another libobjc.so + if has_version gnustep-base/gnustep-make; then + local current_libobjc="$(awk -F: '/^OBJC_LIB_FLAG/ {print $2}' "${EPREFIX}"/usr/share/GNUstep/Makefiles/config.make)" + # Old installations did not set this explicitely + : ${current_libobjc:=libobjc.so.2} + + if [[ ${current_libobjc} != ${libobjc_version} ]]; then + ewarn "Warning: changed libobjc.so version!!" + ewarn "The libobjc.so version used for gnustep-make has changed" + ewarn "(either by the libojbc2 use-flag or a GCC upgrade)" + ewarn "You must rebuild all gnustep packages installed." + ewarn "" + ewarn "To do so, please emerge gnustep-base/gnustep-updater and run:" + ewarn "# gnustep-updater -l" + fi + fi +} + +src_prepare() { + # Multilib-strict + sed -e "s#/@libdir@#/$(get_libdir)#" -i FilesystemLayouts/fhs-system || die "sed failed" + cp "${FILESDIR}"/gnustep-5.{csh,sh} "${T}"/ + eprefixify "${T}"/gnustep-5.{csh,sh} + + default +} + +src_configure() { + if use libobjc2 && tc-is-gcc; then + einfo "Forcing clang" + export CC="${CHOST}-clang" + export CXX="${CHOST}-clang++" + + # Strip unsupported flags for clang + # bug #949599 + strip-unsupported-flags + fi + + econf \ + INSTALL="${EPREFIX}"/usr/bin/install \ + --with-layout=fhs-system \ + --with-config-file="${EPREFIX}"/etc/GNUstep/GNUstep.conf \ + --with-objc-lib-flag=-l:${libobjc_version} \ + $(use_enable native-exceptions native-objc-exceptions) +} + +src_compile() { + emake + if use doc ; then + emake -C Documentation + fi +} + +src_install() { + # Get GNUSTEP_* variables + . ./GNUstep.conf + + local make_eval + use debug || make_eval="${make_eval} debug=no" + make_eval="${make_eval} verbose=yes" + + emake ${make_eval} DESTDIR="${D}" install + + # Copy the documentation + if use doc ; then + emake -C Documentation ${make_eval} DESTDIR="${D}" GNUSTEP_INSTALLATION_DOMAIN=SYSTEM install + fi + + dodoc FAQ README RELEASENOTES + + exeinto /etc/profile.d + doexe "${T}"/gnustep-?.sh + doexe "${T}"/gnustep-?.csh +} + +pkg_postinst() { + # Warn about new layout if old GNUstep directory is still here + if [ -e /usr/GNUstep/System ]; then + ewarn "Old layout directory detected (/usr/GNUstep/System)" + ewarn "Gentoo has switched to FHS layout for GNUstep packages" + ewarn "You must first update the configuration files from this package," + ewarn "then remerge all packages still installed with the old layout" + ewarn "You can use gnustep-base/gnustep-updater for this task" + fi +}
