diff --git a/dev-util/plan9port/Manifest b/dev-util/plan9port/Manifest new file mode 100644 index 0000000..f62a6b4 --- /dev/null +++ b/dev-util/plan9port/Manifest @@ -0,0 +1,2 @@ +DIST plan9port-2021.03.21.tar.gz 23413373 BLAKE2B 6145dd77c9e4b33ebc6d68f42ed69e320e8bfcaae474a16afb3a62e30c13a39117d7013f3cc075eb48c95a5600c4fdb457e45f65f7b25ad2acc7b19dc9cf8e64 SHA512 f008969274e790238b58ebd0d0dcfaa730557daf974797f8c4014c36ac39995b330db9c6d658655358fdb2be64905b83c35e2287b7cd66b2d3249e1da1a3e119 +DIST plan9port-2021.10.05.tar.gz 23410060 BLAKE2B dc1923064254a337551657222648e7ac0f84b0a65b33b74333efbe8a2eb1521fa468306ef24207f27ebe4260ab4ab0dd56e7f3b6e291c6c0c0781780c1df8a7a SHA512 5e61c953e9acb3fcce51a77417d8b9123352fa7eddddf09ca20803be2938a7173303bceb0cbd8625eba3afd952953b407a3315bd96f3751ecb3298d78dcc97b4 diff --git a/dev-util/plan9port/files/plan9port-builderr.patch b/dev-util/plan9port/files/plan9port-builderr.patch new file mode 100644 index 0000000..b1f3d12 --- /dev/null +++ b/dev-util/plan9port/files/plan9port-builderr.patch @@ -0,0 +1,29 @@ +Prevent mk from ignoring errors + +By default, the plan9port INSTALL script doesn't report build error, +which can result in a mostly broken build begin installed. +--- a/INSTALL ++++ b/INSTALL +@@ -65,7 +65,6 @@ + ;; + esac + +-( + if [ `uname` = SunOS ]; then + # On Solaris x86, uname -p cannot be trusted. + echo "* Running on Solaris: checking architecture..." +@@ -159,7 +158,7 @@ + echo "* Warning: not all binaries built successfully." + fi + echo "* Installing everything in $PLAN9/bin..." +- mk -k install || exit 1 ++ mk install || exit 1 + if [ ! -x $PLAN9/bin/cleanname -o ! -x $PLAN9/bin/acme -o ! -x $PLAN9/bin/sam ]; then + echo " " + echo "* Warning: not all binaries built successfully." +@@ -211,5 +210,4 @@ + echo " PLAN9=$PLAN9 export PLAN9" + echo ' PATH=$PATH:$PLAN9/bin export PATH' + fi +-) 2>&1 | tee install.log | $awk -f $PLAN9/dist/isum.awk -v 'copy='install.sum + diff --git a/dev-util/plan9port/files/plan9port-cflags.patch b/dev-util/plan9port/files/plan9port-cflags.patch new file mode 100644 index 0000000..74bd605 --- /dev/null +++ b/dev-util/plan9port/files/plan9port-cflags.patch @@ -0,0 +1,16 @@ +Prevent resetting CFLAGS and LDFLAGS + +This allows the plan9port build to inherit cflags from the environment. + +(This patch must be applied after plan9port-noexecstack.patch) +--- a/src/mkhdr ++++ b/src/mkhdr +@@ -11,8 +11,6 @@ + LD=9l + AS=9a + AR=9ar +-CFLAGS= +-LDFLAGS= + AFLAGS=--noexecstack + CLEANFILES= + NUKEFILES= diff --git a/dev-util/plan9port/files/plan9port-noexecstack.patch b/dev-util/plan9port/files/plan9port-noexecstack.patch new file mode 100644 index 0000000..20aecce --- /dev/null +++ b/dev-util/plan9port/files/plan9port-noexecstack.patch @@ -0,0 +1,19 @@ +Remove unneeded executable stack + +Assembly routines in libthread and libmp use an executable stack by +default. This is not needed and can be removed using --noexecstack. + +Patch by Andy Spencer + + http://code.swtch.com/plan9port/issue/76/ +--- a/src/mkhdr ++++ b/src/mkhdr +@@ -13,7 +13,7 @@ + AR=9ar + CFLAGS= + LDFLAGS= +-AFLAGS= ++AFLAGS=--noexecstack + CLEANFILES= + NUKEFILES= + YACC=9 yacc diff --git a/dev-util/plan9port/metadata.xml b/dev-util/plan9port/metadata.xml new file mode 100644 index 0000000..5a17ca8 --- /dev/null +++ b/dev-util/plan9port/metadata.xml @@ -0,0 +1,20 @@ + + + + + + xgqt@protonmail.com + Maciej Barć + + + Plan9Port is a set of Plan 9 utilities ported to the POSIX + environment - also know as Plan 9 from User Space. + + + https://github.com/9fans/plan9port + 9fans/plan9port + + + Don't install BigelowHolmes fonts + + diff --git a/dev-util/plan9port/plan9port-2021.03.21.ebuild b/dev-util/plan9port/plan9port-2021.03.21.ebuild new file mode 100644 index 0000000..08557a3 --- /dev/null +++ b/dev-util/plan9port/plan9port-2021.03.21.ebuild @@ -0,0 +1,158 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +GIT_HASH="88a87fadae6629932d9c160f53ad5d79775f8f94" + +inherit multiprocessing toolchain-funcs readme.gentoo-r1 flag-o-matic + +DESCRIPTION="Port of many Plan 9 programs and libraries" +HOMEPAGE="https://9fans.github.io/plan9port/" + +if [[ "${PV}" == *9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/9fans/${PN}.git" +else + SRC_URI="https://github.com/9fans/${PN}/archive/${GIT_HASH}.tar.gz -> ${P}.tar.gz" + S="${WORKDIR}/${PN}-${GIT_HASH}" +fi + +LICENSE="MIT RSA Apache-2.0 public-domain BitstreamVera BZIP2 + !freefonts? ( BigelowHolmes )" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +IUSE="X aqua -freefonts truetype" +REQUIRED_USE="?? ( X aqua )" + +DEPEND=" + X? ( x11-apps/xauth ) + truetype? ( + media-libs/freetype + media-libs/fontconfig + ) +" +RDEPEND="${DEPEND}" + +PATCHES=( + "${FILESDIR}/${PN}-noexecstack.patch" + "${FILESDIR}/${PN}-cflags.patch" + "${FILESDIR}/${PN}-builderr.patch" +) + +DIR9="/opt/plan9/" +EDIR9="${EPREFIX}/${DIR9}" + +DOC_CONTENTS="Plan 9 from User Space has been successfully installed into +${DIR9}. Your PATH environment variables have also been +appropriately set, please use env-update and source +/etc/profile to bring that into immediate effect. + +Please note that ${DIR9}/bin has been appended to the +*end* or your PATH to prevent conflicts. To use the Plan9 +versions of common UNIX tools, use the absolute path: +${DIR9}/bin or the 9 command (eg: 9 troff) + +Please report any bugs to bugs.gentoo.org, NOT Plan9Port." +DISABLE_AUTOFORMATTING="yes" + +QA_MULTILIB_PATHS="${DIR9}/.*/.*" + +src_prepare() { + default + + if use freefonts; then + pushd font >/dev/null || die + rm -r big5 fixed jis luc{,m,sans} misc naga10 pelm shinonome || die + popd >/dev/null || die + rm -r postscript/font/luxi || die + fi + + case "${CHOST}" in + *apple* ) + sed -i 's/--noexecstack/-noexecstack/' src/mkhdr || + die "Failed to sed AFLAGS" + ;; + * ) + rm -rf mac || die + ;; + esac + + # Don't hardcode /bin and /usr/bin in PATH + sed -i '/PATH/s,/bin:/usr/bin:,,' INSTALL || die "sed on \"INSTALL\" failed" + + # Don't hardcode /usr/{,local/}include and prefix /usr/include/* + sed -Ei \ + -e 's,-I/usr(|/local)/include ,,g' \ + -e "s,-I/usr(|/local)/include,-I${EPREFIX}/usr\1/include,g" \ + src/cmd/fontsrv/freetyperules.sh INSTALL $(find . -name "makefile") || + die "sed failed" + + # Fix paths, done in place of ./INSTALL -c + einfo "Fixing hard-coded /usr/local/plan9 paths" + sed -i "s,/usr/local/plan9,${EDIR9},g" $(grep -lr "/usr/local/plan9") || + die "sed failed" +} + +src_configure() { + tc-export CC + filter-flags -fno-common + append-cflags -fcommon + + local -a myconf=( + CC9="$(tc-getCC)" + CC9FLAGS="'${CFLAGS} ${LDFLAGS}'" + ) + + if use X; then + myconf+=( WSYSTYPE="x11" ) + elif use aqua; then + local wsystype + wsystype="$( + awk '{if ($1 > 10.5) print "osx-cocoa"; else print "osx"}' \ + <<< "${MACOSX_DEPLOYMENT_TARGET}" + )" + myconf+=( WSYSTYPE="${wsystype}" ) + else + myconf+=( WSYSTYPE="nowsys" ) + fi + + if use truetype; then + myconf+=( FONTSRV="fontsrv" ) + else + myconf+=( FONTSRV= ) + fi + + printf '%s\n' "${myconf[@]}" >> LOCAL.config || + die "cannot create configuration" +} + +src_compile() { + # The INSTALL script builds mk then [re]builds everything using that + NPROC="$(makeopts_jobs)" ./INSTALL -b || die +} + +src_install() { + einstalldocs + readme.gentoo_create_doc + + # Clean up compiled code & source + rm -rf src || die + + # do* plays with the executable bit, and we should not modify them + dodir "${DIR9}" + cp -a ./* "${ED}/${DIR9}/" || die + + # Build the environment variables and install them in env.d + newenvd - 60plan9 <<-EOF + PLAN9="${EDIR9}" + PATH="${EDIR9}/bin" + ROOTPATH="${EDIR9}/bin" + MANPATH="${EDIR9}/man" + EOF +} + +pkg_postinst() { + readme.gentoo_print_elog +} diff --git a/dev-util/plan9port/plan9port-2021.10.05.ebuild b/dev-util/plan9port/plan9port-2021.10.05.ebuild new file mode 100644 index 0000000..3c64950 --- /dev/null +++ b/dev-util/plan9port/plan9port-2021.10.05.ebuild @@ -0,0 +1,158 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +GIT_HASH="e683bdfa76a5c2c54422a6bd2934b133d77ba610" + +inherit multiprocessing toolchain-funcs readme.gentoo-r1 flag-o-matic + +DESCRIPTION="Port of many Plan 9 programs and libraries" +HOMEPAGE="https://9fans.github.io/plan9port/" + +if [[ "${PV}" == *9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/9fans/${PN}.git" +else + SRC_URI="https://github.com/9fans/${PN}/archive/${GIT_HASH}.tar.gz -> ${P}.tar.gz" + S="${WORKDIR}/${PN}-${GIT_HASH}" +fi + +LICENSE="MIT RSA Apache-2.0 public-domain BitstreamVera BZIP2 + !freefonts? ( BigelowHolmes )" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +IUSE="X aqua -freefonts truetype" +REQUIRED_USE="?? ( X aqua )" + +DEPEND=" + X? ( x11-apps/xauth ) + truetype? ( + media-libs/freetype + media-libs/fontconfig + ) +" +RDEPEND="${DEPEND}" + +PATCHES=( + "${FILESDIR}/${PN}-noexecstack.patch" + "${FILESDIR}/${PN}-cflags.patch" + "${FILESDIR}/${PN}-builderr.patch" +) + +DIR9="/opt/plan9/" +EDIR9="${EPREFIX}/${DIR9}" + +DOC_CONTENTS="Plan 9 from User Space has been successfully installed into +${DIR9}. Your PATH environment variables have also been +appropriately set, please use env-update and source +/etc/profile to bring that into immediate effect. + +Please note that ${DIR9}/bin has been appended to the +*end* or your PATH to prevent conflicts. To use the Plan9 +versions of common UNIX tools, use the absolute path: +${DIR9}/bin or the 9 command (eg: 9 troff) + +Please report any bugs to bugs.gentoo.org, NOT Plan9Port." +DISABLE_AUTOFORMATTING="yes" + +QA_MULTILIB_PATHS="${DIR9}/.*/.*" + +src_prepare() { + default + + if use freefonts; then + pushd font >/dev/null || die + rm -r big5 fixed jis luc{,m,sans} misc naga10 pelm shinonome || die + popd >/dev/null || die + rm -r postscript/font/luxi || die + fi + + case "${CHOST}" in + *apple* ) + sed -i 's/--noexecstack/-noexecstack/' src/mkhdr || + die "Failed to sed AFLAGS" + ;; + * ) + rm -rf mac || die + ;; + esac + + # Don't hardcode /bin and /usr/bin in PATH + sed -i '/PATH/s,/bin:/usr/bin:,,' INSTALL || die "sed on \"INSTALL\" failed" + + # Don't hardcode /usr/{,local/}include and prefix /usr/include/* + sed -Ei \ + -e 's,-I/usr(|/local)/include ,,g' \ + -e "s,-I/usr(|/local)/include,-I${EPREFIX}/usr\1/include,g" \ + src/cmd/fontsrv/freetyperules.sh INSTALL $(find . -name "makefile") || + die "sed failed" + + # Fix paths, done in place of ./INSTALL -c + einfo "Fixing hard-coded /usr/local/plan9 paths" + sed -i "s,/usr/local/plan9,${EDIR9},g" $(grep -lr "/usr/local/plan9") || + die "sed failed" +} + +src_configure() { + tc-export CC + filter-flags -fno-common + append-cflags -fcommon + + local -a myconf=( + CC9="$(tc-getCC)" + CC9FLAGS="'${CFLAGS} ${LDFLAGS}'" + ) + + if use X; then + myconf+=( WSYSTYPE="x11" ) + elif use aqua; then + local wsystype + wsystype="$( + awk '{if ($1 > 10.5) print "osx-cocoa"; else print "osx"}' \ + <<< "${MACOSX_DEPLOYMENT_TARGET}" + )" + myconf+=( WSYSTYPE="${wsystype}" ) + else + myconf+=( WSYSTYPE="nowsys" ) + fi + + if use truetype; then + myconf+=( FONTSRV="fontsrv" ) + else + myconf+=( FONTSRV= ) + fi + + printf '%s\n' "${myconf[@]}" >> LOCAL.config || + die "cannot create configuration" +} + +src_compile() { + # The INSTALL script builds mk then [re]builds everything using that + NPROC="$(makeopts_jobs)" ./INSTALL -b || die +} + +src_install() { + einstalldocs + readme.gentoo_create_doc + + # Clean up compiled code & source + rm -rf src || die + + # do* plays with the executable bit, and we should not modify them + dodir "${DIR9}" + cp -a ./* "${ED}/${DIR9}/" || die + + # Build the environment variables and install them in env.d + newenvd - 60plan9 <<-EOF + PLAN9="${EDIR9}" + PATH="${EDIR9}/bin" + ROOTPATH="${EDIR9}/bin" + MANPATH="${EDIR9}/man" + EOF +} + +pkg_postinst() { + readme.gentoo_print_elog +}