repo/gentoo:master commit in: dev-scheme/racket/

Maciej Barć <[email protected]>
Newsgroups gmane.linux.gentoo.cvs
Message-ID <1786657950.644a288dc03b82fb3ef903dcd8404dde9a54b9ef.xgqt@gentoo>
commit:     644a288dc03b82fb3ef903dcd8404dde9a54b9ef
Author:     Maciej Barć <xgqt <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 13 20:43:43 2026 +0000
Commit:     Maciej Barć <xgqt <AT> gentoo <DOT> org>
CommitDate: Thu Aug 13 21:52:30 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=644a288d

dev-scheme/racket: bump to 9.3

Signed-off-by: Maciej Barć <xgqt <AT> gentoo.org>

 dev-scheme/racket/Manifest          |   2 +
 dev-scheme/racket/racket-9.3.ebuild | 207 ++++++++++++++++++++++++++++++++++++
 2 files changed, 209 insertions(+)

diff --git a/dev-scheme/racket/Manifest b/dev-scheme/racket/Manifest
index f263063a415e..0ed24c2d613b 100644
--- a/dev-scheme/racket/Manifest
+++ b/dev-scheme/racket/Manifest
@@ -1,4 +1,6 @@
 DIST racket-8.16-src-builtpkgs.tgz 157879458 BLAKE2B a357c311d3a2ebf80e59ba53de74bca43fe0d6862fb02dbb20ff920cfe8608209cf0c37dd6692b83ee41cfb4f9ffce41aad6d5cb84e7f93d67a86e4f390a8fbf SHA512 dea12ce93312f9ff9b4da2071a7e4b386b2364d8512efe09c092750d72d89deedb432f14e7c03d1328b2d0555715773d095dfdd6cf5ee04e0cf558dc4e6a0fa4
 DIST racket-9.2-src-builtpkgs.tgz 163124367 BLAKE2B 3edb03782184856add67bddb5620743db8a93f0991aa4f3a02a271858558d094e26d3492828defe0ded0e778ee2a72e2cef10cf2b1b4112dddb5160378bebb08 SHA512 4765f6b69aad2ded29012fcc8c2ac05a4c7f1a04320119436b2101d39646f2f8facac3f502cc68d48643cd3f78bfca359725a76d3875fc1d80812f1069229a04
+DIST racket-9.3-src-builtpkgs.tgz 163304097 BLAKE2B 10e189e1cf11a445d6ae9f9bf9015f05929c51495d952e55ebfde6ae0023914fe5d153536b0ff6c28067e25f0d3bc7e448285da54412940238c570c050589365 SHA512 9a65f8ac36f48830ca1057921f7c00c19dd031961d8cd75e147cb6303d717c65cbea53e30d5e195243963db66d9b2d3f46f6428a138f450b173d3c86ccc1d0a2
 DIST racket-minimal-8.16-src-builtpkgs.tgz 23517703 BLAKE2B 623c7d879e9d7300fe14926bc2302e635ea03a33b2f9125d0abec7c96eeae46836d9191677fef9843273a6cf3298eff8bf93a6a6519ef1a62eaa14ef1cdf6ebd SHA512 c3852cda6ad2edbb53a9a14841f4d2f2b6eaea54f12805e01758bc38e277406c9f2eb831a1a6d8f76782541031a25d70d4157a6eb9e14847d40ea34b46dc2cb8
 DIST racket-minimal-9.2-src-builtpkgs.tgz 24142926 BLAKE2B 53a055f0024e9c9765c7474642ad353e0a3d32e9784b48f8a375cf6bb09a218f5b3e112ebd389385f2c60d7431bc788782f552d115595ac29ae1a3b79306c50b SHA512 d38b9e665db19f69173e2cf5403a7d87f8003eaf86581fafa9ed977293a16ffb7e6955f589ea21deb56a11f79f90b4f9a189be434364e2be35a7fb6d215bc358
+DIST racket-minimal-9.3-src-builtpkgs.tgz 24210147 BLAKE2B 9651386411843fd8cdd9862efa3262a8dd1020d3bcb594415e6e300f1109deadd6a1ffba75f5b5069fa329655e8a899c85681ba712f07f34967241c94ef84ead SHA512 9caa1b946edf205205de03519bf7aab0084ee7f9c42e4b8ccbb9e1aea3dea2bf8574ac66e474a71e3ce0863d96cd2cc791292ae247c0362cfe8d7f85669743bc

diff --git a/dev-scheme/racket/racket-9.3.ebuild b/dev-scheme/racket/racket-9.3.ebuild
new file mode 100644
index 000000000000..f0d1f8b3f8b9
--- /dev/null
+++ b/dev-scheme/racket/racket-9.3.ebuild
@@ -0,0 +1,207 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit check-reqs desktop dot-a optfeature toolchain-funcs readme.gentoo-r1
+
+DESCRIPTION="General purpose, multi-paradigm Lisp-Scheme programming language"
+HOMEPAGE="https://racket-lang.org/
+	https://github.com/racket/racket/"
+
+SRC_URI="
+	minimal? ( https://download.racket-lang.org/installers/${PV}/${PN}-minimal-${PV}-src-builtpkgs.tgz )
+	!minimal? ( https://download.racket-lang.org/installers/${PV}/${P}-src-builtpkgs.tgz )
+"
+S="${WORKDIR}/${P}/src"
+
+# See https://blog.racket-lang.org/2019/11/completing-racket-s-relicensing-effort.html
+LICENSE="|| ( MIT Apache-2.0 ) chez? ( Apache-2.0 ) !chez? ( LGPL-3 )"
+
+# Bytecode generated by Racket is not compatible between versions.
+# The bytecode version should be denoted by SLOT, in most cases
+# PV == SLOT but this has to be checked carefully and in cases
+# where we use _p, _pre, etc it will have to be set manually.
+SLOT="0/${PV}"
+
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86"
+IUSE="+chez +doc +futures iconv +jit minimal ncurses +places +threads"
+
+# * "chez" - see bug #809785 re chez/threads
+# * "iconv" - required for "doc"
+REQUIRED_USE="
+	chez? ( futures places ) futures? ( jit threads ) places? ( threads )
+	doc? ( iconv )
+"
+
+RDEPEND="
+	dev-db/sqlite:3
+	dev-libs/libffi:=
+	ncurses? (
+		sys-libs/ncurses:=
+	)
+"
+DEPEND="
+	${RDEPEND}
+"
+BDEPEND="
+	doc? (
+		>=media-libs/libjpeg-turbo-3.0.3
+		dev-libs/glib:2
+		media-libs/fontconfig
+		x11-libs/cairo
+		x11-libs/pango
+	)
+"
+
+CHECKREQS_DISK_BUILD="1700M"
+
+# "mred" and "mzscheme" are binaries generated by Racket, not CC
+QA_FLAGS_IGNORED="usr/bin/mred usr/bin/mzscheme"
+
+DOC_CONTENTS="If you wish to use sys-libs/readline instead of dev-libs/libedit
+for readline-like features in the Racket's REPL you can install
+the package 'readline-gpl' using raco, Racket's package manager
+https://pkgs.racket-lang.org/package/readline-gpl"
+
+# Package database files (for pkg_preinst & pkg_config)
+PKGDB=(
+	/usr/share/racket/info-cache.rktd
+	/usr/share/racket/links.rktd
+	/usr/share/racket/pkgs/pkgs.rktd
+)
+
+src_prepare() {
+	# Prepare the environment.
+	unset PLTADDONDIR PLTCOLLECTS PLTCONFIGDIR PLTUSERHOME
+	# Remove bundled libffi.
+	rm -r "${S}/bc/foreign/libffi" || die "failed to remove bundled libffi"
+
+	default
+}
+
+src_configure() {
+	# Compilation of Zuo does not respect the autoconf configuration.
+	tc-export CC
+
+	lto-guarantee-fat
+
+	einfo "Configuring Zuo in ${S}/zuo"
+	pushd "${S}/zuo" >/dev/null || die
+	econf
+	popd >/dev/null || die
+
+	einfo "Configuring Racket in ${S}"
+	# Libtool:
+	#   According to vapier, we should use the bundled libtool
+	#   such that we don't preclude cross-compile.
+	#   Thus don't use --enable-lt=/usr/bin/libtool
+	# Backend:
+	#   --enable-bc builds Racket w/o chez backend
+	# C Libraries:
+	#   --enable-libs & --disable-shared is the way to build
+	#   .a files that are needed to embed Racket into programs
+	#   https://docs.racket-lang.org/inside/cs-embedding.html
+	local -a myconf=(
+		--disable-shared
+		--disable-strip
+		--docdir="${EPREFIX}/usr/share/doc/${PF}"
+		--enable-libs
+		$(usex chez "--enable-cs --enable-csonly" "--enable-bc --enable-bconly")
+		$(use_enable doc docs)
+		$(use_enable iconv)
+		$(use_enable ncurses curses)
+	)
+	# Some options are togglable only for the BC version (are forced in CS)
+	if ! use chez ; then
+		myconf+=(
+			--enable-float
+			--enable-foreign
+			--enable-gracket
+			--enable-libffi
+			$(use_enable futures)
+			$(use_enable jit)
+			$(use_enable places)
+			$(use_enable threads pthread)
+		)
+	fi
+	econf "${myconf[@]}"
+}
+
+src_compile() {
+	# Compile Racket.
+	CC_FOR_BUILD="$(tc-getCC)" default
+
+	# Recompile Zuo with optimizations.
+	emake -C zuo
+}
+
+src_install() {
+	# Install Racket.
+	default
+
+	# Install Zuo.
+	emake -C zuo DESTDIR="${ED}" install
+
+	strip-lto-bytecode
+
+	# raco needs decompressed files for packages doc installation, bug #662424
+	if use doc ; then
+		docompress -x "/usr/share/doc/${PF}"
+	fi
+
+	# Create missing desktop files and icon.
+	if ! use minimal ; then
+		newicon "${ED}/usr/share/racket/drracket-exe-icon.png" racket.png
+
+		make_desktop_entry "gracket" "GRacket" "racket" "Development;Education;"
+		make_desktop_entry "plt-games" "PLT Games" "racket" "Education;Game;"
+	fi
+
+	readme.gentoo_create_doc
+}
+
+pkg_preinst() {
+	# If we are merging the same SLOT check if the package database files
+	# (see "PKGDB" var) exist and do not overwrite them.
+	if has_version "${CATEGORY}/${PN}:${SLOT}" ; then
+		echo "We are installing the same SLOT: ${SLOT}"
+
+		local rktd=""
+		for rktd in "${PKGDB[@]}" ; do
+			if [[ -f "${EROOT}/${rktd}" ]] && [[ -f "${ED}/${rktd}" ]] ; then
+				einfo "Keeping old file: ${rktd}"
+
+				mv "${ED}/${rktd}" "${ED}/${rktd}.bak" \
+					|| die "failed to create a backup of ${rktd}"
+
+				cp "${EROOT}/${rktd}" "${ED}/${rktd}" \
+					|| die "failed to create a copy of ${rktd}"
+			fi
+		done
+	fi
+}
+
+get_outsiders() {
+	racket -l raco -- pkg show -i | grep 'link' | sed 's|link.*||g'
+}
+
+pkg_postinst() {
+	# If we have any pkgs not included in Racket main distribution (outsiders),
+	# then we have to re-setup them or during installation other pkgs will want
+	# to recompile parts of "outsider" pkgs they depend upon (and fail).
+	local -a outsiders=( $(get_outsiders) )
+
+	if [[ -n "${outsiders[@]}" ]] ; then
+		ebegin "Running \"raco setup\" for outsider packages"
+		echo "Outsiders: ${outsiders[@]}"
+
+		raco setup --all-users --force --no-docs --no-user --pkgs "${outsiders[@]}"
+		eend 0  # do not fail
+	fi
+
+	optfeature "readline editing features in REPL" dev-libs/libedit
+	optfeature "generating PDF files using Scribble" dev-texlive/texlive-fontsextra
+
+	readme.gentoo_print_elog
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.