Skip to content

Instantly share code, notes, and snippets.

@Alessandro-Barbieri
Created May 25, 2021 15:41
Show Gist options
  • Save Alessandro-Barbieri/17b8cd951a800fed883e6bca4b6862a4 to your computer and use it in GitHub Desktop.
Save Alessandro-Barbieri/17b8cd951a800fed883e6bca4b6862a4 to your computer and use it in GitHub Desktop.
DIST plan9port-88a87fadae6629932d9c160f53ad5d79775f8f94.tar.gz 23413373 BLAKE2B 6145dd77c9e4b33ebc6d68f42ed69e320e8bfcaae474a16afb3a62e30c13a39117d7013f3cc075eb48c95a5600c4fdb457e45f65f7b25ad2acc7b19dc9cf8e64 SHA512 f008969274e790238b58ebd0d0dcfaa730557daf974797f8c4014c36ac39995b330db9c6d658655358fdb2be64905b83c35e2287b7cd66b2d3249e1da1a3e119
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>blueness@gentoo.org</email>
<name>Anthony G. Basile</name>
</maintainer>
<longdescription>
Plan9Port is a set of Plan 9 utilities ported to the POSIX
environment - also know as Plan 9 from User Space.
</longdescription>
<upstream>
<remote-id type="github">9fans/plan9port</remote-id>
</upstream>
<use>
<flag name="freefonts">Don't install BigelowHolmes fonts</flag>
</use>
</pkgmetadata>
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit multiprocessing toolchain-funcs readme.gentoo-r1
MY_HASH="88a87fadae6629932d9c160f53ad5d79775f8f94"
MY_P="${PN}-${MY_HASH}"
DESCRIPTION="Port of many Plan 9 programs and libraries"
HOMEPAGE="https://9fans.github.io/plan9port/
https://github.com/9fans/plan9port"
SRC_URI="https://github.com/9fans/${PN}/archive/${MY_HASH}.tar.gz -> ${MY_P}.tar.gz"
S="${WORKDIR}/${MY_P}"
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"
)
PLAN9="/opt/plan9"
EPLAN9="${EPREFIX}${PLAN9}"
QA_MULTILIB_PATHS="${PLAN9}/.*/.*"
DOC_CONTENTS="Plan 9 from User Space has been successfully installed into
${PLAN9}. Your PLAN9 and 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 ${PLAN9}/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:
${PLAN9}/bin or the 9 command (eg: 9 troff)
Please report any bugs to bugs.gentoo.org, NOT Plan9Port."
DISABLE_AUTOFORMATTING="yes"
src_prepare() {
default
if use freefonts; then
pushd font || die
rm -rf big5 fixed jis luc{,m,sans} misc naga10 pelm shinonome || die
popd || die
rm -rf postscript/luxi || die
fi
case "${CHOST}" in
*apple*)
sed -i 's/--noexecstack/-noexecstack/' src/mkhdr ||
die "Failed to sed AFLAGS" ;;
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,${EPLAN9},g" $(grep -lr /usr/local/plan9) ||
die "sed failed"
}
src_configure() {
local -a myconf=(
CC9="$(tc-getCC)"
CC9FLAGS="'${CFLAGS} ${LDFLAGS}'"
)
if use X; then
myconf+=( WSYSTYPE=x11 )
elif use aqua; then
local 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
einfo "Compiling Plan 9 from User Space can take a very long time"
einfo "depending on the speed of your computer. Please be patient!"
NPROC="$(makeopts_jobs)" ./INSTALL -b ||
die "Please report bugs to bugs.gentoo.org, NOT Plan9Port."
}
src_install() {
readme.gentoo_create_doc
# do* plays with the executable bit, and we should not modify them
dodir "${PLAN9}"
cp -a * "${ED}${PLAN9}" || die "cp failed"
# build the environment variables and install them in env.d
newenvd - 60plan9 <<-EOF
PLAN9="${EPLAN9}"
PATH="${EPLAN9}/bin"
ROOTPATH="${EPLAN9}/bin"
MANPATH="${EPLAN9}/man"
EOF
}
pkg_postinst() {
readme.gentoo_print_elog
}
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
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=
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment