From 10954586c34ff2f36282e86f250f110bc9e2dfbd Mon Sep 17 00:00:00 2001 From: Maciej Barć Date: Mon, 14 Feb 2022 16:47:12 +0100 Subject: dev-scheme/racket: patch ncurses for expeditor support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Package-Manager: Portage-3.0.30, Repoman-3.0.3 Signed-off-by: Maciej Barć --- dev-scheme/racket/files/racket-8.4-ncurses.patch | 154 ++++++++++++++++++++ dev-scheme/racket/metadata.xml | 3 + dev-scheme/racket/racket-8.4-r1.ebuild | 171 +++++++++++++++++++++++ dev-scheme/racket/racket-8.4.ebuild | 162 --------------------- 4 files changed, 328 insertions(+), 162 deletions(-) create mode 100644 dev-scheme/racket/files/racket-8.4-ncurses.patch create mode 100644 dev-scheme/racket/racket-8.4-r1.ebuild delete mode 100644 dev-scheme/racket/racket-8.4.ebuild (limited to 'dev-scheme/racket') diff --git a/dev-scheme/racket/files/racket-8.4-ncurses.patch b/dev-scheme/racket/files/racket-8.4-ncurses.patch new file mode 100644 index 000000000000..4bf429d82daa --- /dev/null +++ b/dev-scheme/racket/files/racket-8.4-ncurses.patch @@ -0,0 +1,154 @@ +From 683388b0fcc8d0cc386e0ab749bcbba7cea18c8f Mon Sep 17 00:00:00 2001 +From: Matthew Flatt +Date: Mon, 14 Feb 2022 06:26:25 -0700 +Subject: [PATCH] configure: try -ltinfo as curses linking flag + +--- + ac/curses.m4 | 21 +++++++++++++++++++-- + bc/configure | 34 +++++++++++++++++++++++++++++++++- + cs/c/configure | 34 +++++++++++++++++++++++++++++++++- + 3 files changed, 85 insertions(+), 4 deletions(-) + +diff --git a/ac/curses.m4 b/ac/curses.m4 +index 25b0f1f99a3..d713c990949 100644 +--- a/ac/curses.m4 ++++ b/ac/curses.m4 +@@ -22,7 +22,7 @@ if test "${skip_curses_check}" = "no" ; then + if test "${enable_curses}" = "no" ; then + if test "${enable_portable}" = "yes" ; then + if test "${curses_portable_link}" != "" ; then +- # Try adding portabel link flags ++ # Try adding portable link flags + ORIG_LIBS="$LIBS" + ORIG_CPPFLAGS="$CPPFLAGS" + ORIG_PREFLAGS="$PREFLAGS" +@@ -62,7 +62,24 @@ if test "${skip_curses_check}" = "no" ; then + LIBS="$ORIG_LIBS" + curses_lib_flag="" + fi +- fi ++ fi ++ if test "${enable_curses}" = "no" ; then ++ # Try adding -lncurses -ltinfo ++ ORIG_LIBS="$LIBS" ++ curses_lib_flag=" -lncurses -ltinfo" ++ LIBS="$LIBS $curses_lib_flag" ++ AC_TRY_LINK( ++ [#include ] ++ [#include ], ++[ int errret; ] ++[ setupterm("", 0, &errret);] ++ return 0; ++ , enable_curses=yes, enable_curses=no) ++ if test "${enable_curses}" = "no" ; then ++ LIBS="$ORIG_LIBS" ++ curses_lib_flag="" ++ fi ++ fi + fi + fi + fi +diff --git a/bc/configure b/bc/configure +index 543fab87411..132d2dedd6c 100755 +--- a/bc/configure ++++ b/bc/configure +@@ -5991,7 +5991,7 @@ rm -f core conftest.err conftest.$ac_objext \ + if test "${enable_curses}" = "no" ; then + if test "${enable_portable}" = "yes" ; then + if test "${curses_portable_link}" != "" ; then +- # Try adding portabel link flags ++ # Try adding portable link flags + ORIG_LIBS="$LIBS" + ORIG_CPPFLAGS="$CPPFLAGS" + ORIG_PREFLAGS="$PREFLAGS" +@@ -6055,6 +6055,38 @@ if ac_fn_c_try_link "$LINENO"; then : + else + enable_curses=no + fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ if test "${enable_curses}" = "no" ; then ++ LIBS="$ORIG_LIBS" ++ curses_lib_flag="" ++ fi ++ fi ++ if test "${enable_curses}" = "no" ; then ++ # Try adding -lncurses -ltinfo ++ ORIG_LIBS="$LIBS" ++ curses_lib_flag=" -lncurses -ltinfo" ++ LIBS="$LIBS $curses_lib_flag" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ #include ++int ++main () ++{ ++ int errret; ++ setupterm("", 0, &errret); ++ return 0; ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ enable_curses=yes ++else ++ enable_curses=no ++fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "${enable_curses}" = "no" ; then +diff --git a/cs/c/configure b/cs/c/configure +index db2132b7f4d..2ec78292f56 100755 +--- a/cs/c/configure ++++ b/cs/c/configure +@@ -5635,7 +5635,7 @@ rm -f core conftest.err conftest.$ac_objext \ + if test "${enable_curses}" = "no" ; then + if test "${enable_portable}" = "yes" ; then + if test "${curses_portable_link}" != "" ; then +- # Try adding portabel link flags ++ # Try adding portable link flags + ORIG_LIBS="$LIBS" + ORIG_CPPFLAGS="$CPPFLAGS" + ORIG_PREFLAGS="$PREFLAGS" +@@ -5699,6 +5699,38 @@ if ac_fn_c_try_link "$LINENO"; then : + else + enable_curses=no + fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ if test "${enable_curses}" = "no" ; then ++ LIBS="$ORIG_LIBS" ++ curses_lib_flag="" ++ fi ++ fi ++ if test "${enable_curses}" = "no" ; then ++ # Try adding -lncurses -ltinfo ++ ORIG_LIBS="$LIBS" ++ curses_lib_flag=" -lncurses -ltinfo" ++ LIBS="$LIBS $curses_lib_flag" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ #include ++int ++main () ++{ ++ int errret; ++ setupterm("", 0, &errret); ++ return 0; ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ enable_curses=yes ++else ++ enable_curses=no ++fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "${enable_curses}" = "no" ; then diff --git a/dev-scheme/racket/metadata.xml b/dev-scheme/racket/metadata.xml index e33886b2c545..8a10d666d3ee 100644 --- a/dev-scheme/racket/metadata.xml +++ b/dev-scheme/racket/metadata.xml @@ -26,6 +26,9 @@ Whether you're just starting out, want to know more about programming language a Enable racket/future library for fine-grained hardware parallelism + + Add ncurses support for expeditor (REPL expression editor) + Enable racket/place library for share-nothing parallelism and message-passing communication. Compared to futures, places are heavyweight, but they have a simpler performance model. diff --git a/dev-scheme/racket/racket-8.4-r1.ebuild b/dev-scheme/racket/racket-8.4-r1.ebuild new file mode 100644 index 000000000000..1dae6d9cdb89 --- /dev/null +++ b/dev-scheme/racket/racket-8.4-r1.ebuild @@ -0,0 +1,171 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop optfeature readme.gentoo-r1 + +DESCRIPTION="General purpose, multi-paradigm Lisp-Scheme programming language" +HOMEPAGE="https://racket-lang.org/" +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 +jit minimal ncurses +places +threads" +# See bug #809785 re chez/threads +REQUIRED_USE="chez? ( futures places ) futures? ( jit threads ) places? ( threads )" + +DEPEND=" + !dev-tex/slatex + dev-db/sqlite:3 + dev-libs/libffi:= + ncurses? ( sys-libs/ncurses:= ) +" +RDEPEND="${DEPEND}" + +# Backports that will be probably available in next release (8.5) +PATCHES=( + # Pick correct ncurses library + # https://github.com/racket/racket/commit/683388b0fcc8d0cc386e0ab749bcbba7cea18c8f + "${FILESDIR}"/${P}-ncurses.patch +) + +# "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 + + default + + # Remove bundled libffi + rm -r ./bc/foreign/libffi || die "failed to remove bundled libffi" +} + +src_configure() { + # 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 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 ncurses curses) + ) + # Some options are togglable only for the BC version (are forced in CS) + ! use chez && myconf+=( + --enable-float + --enable-foreign + --enable-gracket + --enable-libffi + $(use_enable futures) + $(use_enable jit) + $(use_enable places) + $(use_enable threads pthread) + ) + econf "${myconf[@]}" +} + +src_install() { + default + + # Install Racket boot files + use chez && emake -C "${S}"/cs/c DESTDIR="${ED}" unix-install-boot-files + + # raco needs decompressed files for packages doc installation bug 662424 + use doc && docompress -x /usr/share/doc/${PF} + + # 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 package + # database files 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 +} + +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 outsiders=( $(raco pkg show -i | grep 'link' | sed 's|link.*||g') ) + 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 +} + +pkg_config() { + einfo "Swapping package database backup files" + + for rktd in "${PKGDB[@]}" ; do + mv "${EROOT}"/${rktd} "${EROOT}"/${rktd}.pkg_config + mv "${EROOT}"/${rktd}.bak "${EROOT}"/${rktd} + mv "${EROOT}"/${rktd}.pkg_config "${EROOT}"/${rktd}.bak + done +} diff --git a/dev-scheme/racket/racket-8.4.ebuild b/dev-scheme/racket/racket-8.4.ebuild deleted file mode 100644 index ba7263a23ea8..000000000000 --- a/dev-scheme/racket/racket-8.4.ebuild +++ /dev/null @@ -1,162 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit desktop optfeature readme.gentoo-r1 - -DESCRIPTION="General purpose, multi-paradigm Lisp-Scheme programming language" -HOMEPAGE="https://racket-lang.org/" -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 +jit minimal +places +threads" -# See bug #809785 re chez/threads -REQUIRED_USE="chez? ( futures places ) futures? ( jit threads ) places? ( threads )" - -DEPEND=" - !dev-tex/slatex - dev-db/sqlite:3 - dev-libs/libffi:= -" -RDEPEND="${DEPEND}" - -# "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 - - default - - # Remove bundled libffi - rm -r ./bc/foreign/libffi || die "failed to remove bundled libffi" -} - -src_configure() { - # 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 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) - ) - # Some options are togglable only for the BC version (are forced in CS) - ! use chez && myconf+=( - --enable-float - --enable-foreign - --enable-gracket - --enable-libffi - $(use_enable futures) - $(use_enable jit) - $(use_enable places) - $(use_enable threads pthread) - ) - econf "${myconf[@]}" -} - -src_install() { - default - - # Install Racket boot files - use chez && emake -C "${S}"/cs/c DESTDIR="${ED}" unix-install-boot-files - - # raco needs decompressed files for packages doc installation bug 662424 - use doc && docompress -x /usr/share/doc/${PF} - - # 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 package - # database files 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 -} - -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 outsiders=( $(raco pkg show -i | grep 'link' | sed 's|link.*||g') ) - 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 -} - -pkg_config() { - einfo "Swapping package database backup files" - - for rktd in "${PKGDB[@]}" ; do - mv "${EROOT}"/${rktd} "${EROOT}"/${rktd}.pkg_config - mv "${EROOT}"/${rktd}.bak "${EROOT}"/${rktd} - mv "${EROOT}"/${rktd}.pkg_config "${EROOT}"/${rktd}.bak - done -} -- cgit v1.2.3-65-gdbad