summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
authorpho <pho@pkgsrc.org>2021-04-30 03:05:30 +0000
committerpho <pho@pkgsrc.org>2021-04-30 03:05:30 +0000
commit2d2fd85c763d079c776338c9a4f31f815ac3ae21 (patch)
tree082fa0ec3a4ccf51e5ad4cdbec8ce5beed071894 /lang
parentdcb3cd151fd8ea01bce3227cdf49c25a91c4e068 (diff)
downloadpkgsrc-2d2fd85c763d079c776338c9a4f31f815ac3ae21.tar.gz
Add a bootkit for SunOS/x86_64
Also fixed a bug in the previous commit which would produce non-installable bootkits.
Diffstat (limited to 'lang')
-rw-r--r--lang/ghc90/Makefile10
-rw-r--r--lang/ghc90/bootstrap.mk46
-rw-r--r--lang/ghc90/distinfo9
-rw-r--r--lang/ghc90/files/bootstrap.build.mk4
-rw-r--r--lang/ghc90/patches/patch-ghc.mk8
-rw-r--r--lang/ghc90/patches/patch-rts_posix_GetTime.c28
6 files changed, 78 insertions, 27 deletions
diff --git a/lang/ghc90/Makefile b/lang/ghc90/Makefile
index c333c265170..c368f5b5a59 100644
--- a/lang/ghc90/Makefile
+++ b/lang/ghc90/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.10 2021/04/29 07:02:42 pho Exp $
+# $NetBSD: Makefile,v 1.11 2021/04/30 03:05:30 pho Exp $
# -----------------------------------------------------------------------------
# Package metadata
#
@@ -27,7 +27,7 @@ BROKEN_EXCEPT_ON_PLATFORM+= Darwin-*-x86_64
BROKEN_EXCEPT_ON_PLATFORM+= FreeBSD-*-i386
BROKEN_EXCEPT_ON_PLATFORM+= FreeBSD-*-x86_64
BROKEN_EXCEPT_ON_PLATFORM+= NetBSD-*-x86_64
-#BROKEN_EXCEPT_ON_PLATFORM+= SunOS-*-x86_64 # Not available yet
+BROKEN_EXCEPT_ON_PLATFORM+= SunOS-*-x86_64
# -----------------------------------------------------------------------------
@@ -215,6 +215,12 @@ ALL_ENV+= LD_LIBRARY_PATH=${PREFIX}/emul/netbsd/usr/lib:${WRKDIR}/lib
# libterminfo.so.1. See ./bootstrap.mk
.endif
+# On Solaris-based platforms our bootkit tends to depend on
+# pkgsrc-installed shlibs.
+.if ${OPSYS} == "SunOS"
+ALL_ENV+= LD_LIBRARY_PATH=${PREFIX}/lib
+.endif
+
.include "../../converters/libiconv/buildlink3.mk"
.include "../../devel/libffi/buildlink3.mk"
.include "../../devel/gmp/buildlink3.mk"
diff --git a/lang/ghc90/bootstrap.mk b/lang/ghc90/bootstrap.mk
index f040a91b497..d111fa6f99b 100644
--- a/lang/ghc90/bootstrap.mk
+++ b/lang/ghc90/bootstrap.mk
@@ -1,4 +1,4 @@
-# $NetBSD: bootstrap.mk,v 1.8 2021/04/29 07:02:42 pho Exp $
+# $NetBSD: bootstrap.mk,v 1.9 2021/04/30 03:05:30 pho Exp $
# -----------------------------------------------------------------------------
# Select a bindist of bootstrapping compiler on a per-platform basis.
#
@@ -46,21 +46,18 @@ DISTFILES:= ${DISTFILES} ${BOOT_ARCHIVE} # Available in LOCAL_PORTS
# this bootkit.
DISTFILES+= netbsd-9.0-amd64-libterminfo.tar.gz
EXTRACT_ONLY+= netbsd-9.0-amd64-libterminfo.tar.gz
+SITES.netbsd-9.0-amd64-libterminfo.tar.gz?= ${MASTER_SITE_LOCAL}
. endif
.endif
-#.if !empty(MACHINE_PLATFORM:MSunOS-*-i386) || make(distinfo) || make (makesum) || make(mdi)
-#BOOT_VERSION:= 8.4.4
-#BOOT_ARCHIVE:= ghc-${BOOT_VERSION}-boot-i386-unknown-solaris2.tar.xz
-#DISTFILES:= ${DISTFILES} ${BOOT_ARCHIVE} # Available in LOCAL_PORTS
-#.endif
-
-#.if !empty(MACHINE_PLATFORM:MSunOS-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
-#BOOT_VERSION:= 8.4.4
-#BOOT_ARCHIVE:= ghc-${BOOT_VERSION}-boot-x86_64-unknown-solaris2.tar.xz
+.if !empty(MACHINE_PLATFORM:MSunOS-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
+# Built on OmniOS r151036-a13510b579 + gcc10. Hope it works on other
+# Solaris-based platforms as well.
+BOOT_VERSION:= 9.0.1
+BOOT_ARCHIVE:= ghc-${BOOT_VERSION}-boot-x86_64-unknown-solaris2.tar.xz
#SITES.${BOOT_ARCHIVE}= https://us-east.manta.joyent.com/pkgsrc/public/pkg-bootstraps/
-#DISTFILES:= ${DISTFILES} ${BOOT_ARCHIVE}
-#.endif
+DISTFILES:= ${DISTFILES} ${BOOT_ARCHIVE} # Available in LOCAL_PORTS
+.endif
.if empty(BOOT_ARCHIVE)
BOOT_ARCHIVE:= ghc-${BOOT_VERSION}-boot-unknown.tar.xz
@@ -70,13 +67,28 @@ PKG_FAIL_REASON+= "internal error: unsupported platform"
# For package developers, please do not upload any bootkits unsafely
# built. That is, machines shared with someone or on a cloud hosting
# service should be avoided for building bootkits.
-.for i in ${DISTFILES:M*-boot-*} netbsd-9.0-amd64-libterminfo.tar.gz
+.for i in ${DISTFILES:M*-boot-*}
SITES.${i}?= ${MASTER_SITE_LOCAL}
.endfor
-# current bootstrap binary kit for SmartOS is built with ncurses5
-.if !empty(MACHINE_PLATFORM:MSunOS-*) && ${OS_VARIANT:U} == "SmartOS"
-BUILD_DEPENDS+= ncurses>=5.0:../../devel/ncurses
+# Current bootstrap binary kit for SunOS is built with GNU libiconv
+# and ncurses6.
+.if !empty(MACHINE_PLATFORM:MSunOS-*)
+BUILD_DEPENDS+= libiconv>=1.9.1:../../converters/libiconv
+BUILD_DEPENDS+= ncurses>=6.0:../../devel/ncurses
+.endif
+
+# On OmniOS, if one tries to create a hard link with the default ln(1)
+# whose target is itself a symbolic link, it creates a hard link to
+# the symbolic link without first resolving it. ${WRKSRC}/configure.ac
+# doesn't work as expected in this case. Maybe we should do this in
+# ../../mk/platform/SunOS.mk but I'm not sure if it's really safe to
+# do.
+.if ${OPSYS} == "SunOS" && ${OS_VARIANT:U} == "OmniOS"
+TOOLS_PLATFORM.ln= /usr/xpg4/bin/ln
+# Also cpp is missing from /usr/bin. Why? This leads
+# ${WRKSRC}/libffi/configure to fail.
+TOOLS_PLATFORM.cpp= /usr/lib/cpp
.endif
@@ -86,7 +98,7 @@ BUILD_DEPENDS+= ncurses>=5.0:../../devel/ncurses
# Install a bootstrapping compiler directly into TOOLS_DIR so that
# ./configure can find it.
#
-USE_TOOLS+= gmake xzcat xz gtar
+USE_TOOLS+= gmake xzcat xz gtar cpp
pre-configure:
${RUN}${TEST} -f ${DISTDIR}/${DIST_SUBDIR}/${BOOT_ARCHIVE} || \
diff --git a/lang/ghc90/distinfo b/lang/ghc90/distinfo
index 34c3b23bfd2..2be01c958a2 100644
--- a/lang/ghc90/distinfo
+++ b/lang/ghc90/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.7 2021/04/29 07:02:42 pho Exp $
+$NetBSD: distinfo,v 1.8 2021/04/30 03:05:30 pho Exp $
SHA1 (ghc-8.10.4-boot-x86_64-unknown-netbsd.tar.xz) = 3ff01d768393b3866e7a7543f9f55646aaffce7a
RMD160 (ghc-8.10.4-boot-x86_64-unknown-netbsd.tar.xz) = 39bf10b13054a6316c8477609fb98abe4277fa6c
@@ -16,6 +16,10 @@ SHA1 (ghc-9.0.1-boot-x86_64-unknown-freebsd.tar.xz) = ce024f52886ea3c5af0c51aebf
RMD160 (ghc-9.0.1-boot-x86_64-unknown-freebsd.tar.xz) = f284af547d6a2e6f31ae78d429d2e093b7e6f2da
SHA512 (ghc-9.0.1-boot-x86_64-unknown-freebsd.tar.xz) = 01b196eca0a23b64687cb795601ca02a409ea0a1b2db48f5b9ab90a95a1db05a254ac92db43726f15382f4cc9e54052685959467a2925fb67ebe5f68570c1eca
Size (ghc-9.0.1-boot-x86_64-unknown-freebsd.tar.xz) = 49644112 bytes
+SHA1 (ghc-9.0.1-boot-x86_64-unknown-solaris2.tar.xz) = 19fa8860969d332baced6ea281616cdc5ec32d67
+RMD160 (ghc-9.0.1-boot-x86_64-unknown-solaris2.tar.xz) = deb39ae711a2cfa5cec9419e993d2be05e054770
+SHA512 (ghc-9.0.1-boot-x86_64-unknown-solaris2.tar.xz) = 92694ef783274f42800d899af4dd558087e3c2ce13e175558a23f5187c944333a2872cee1df9b14683903a0542954a8483c7413343aacaa2b1676d10a6d27a6d
+Size (ghc-9.0.1-boot-x86_64-unknown-solaris2.tar.xz) = 59903112 bytes
SHA1 (ghc-9.0.1-src.tar.xz) = adaec1c05cd03d6af02716d59ab5f597434b700b
RMD160 (ghc-9.0.1-src.tar.xz) = 2bed45072ccb838418ae0405f5cfe64a237315e3
SHA512 (ghc-9.0.1-src.tar.xz) = bee7950a5118be8d8cefe0db5070139a5a93ca21c5bc6f8bf453429831f0c44f5e0fb5ee569865d6b8b92749044ee4123be06920928ac7a1ec9cffa9404a3e53
@@ -26,7 +30,7 @@ SHA512 (netbsd-9.0-amd64-libterminfo.tar.gz) = 79288d44b84df8848afc2cdfee628cc4f
Size (netbsd-9.0-amd64-libterminfo.tar.gz) = 27744 bytes
SHA1 (patch-aclocal.m4) = 66d27cc50de048beeebee31302107501d5802388
SHA1 (patch-configure.ac) = 0905a0e5358d8c3f3f8366b597a59dd824f294d8
-SHA1 (patch-ghc.mk) = 9bfa82ee29c2786e7bae800279823bee72e4fab1
+SHA1 (patch-ghc.mk) = fdcbc5b0c48b616eb96868e49681536d773eaddd
SHA1 (patch-libraries_Cabal_Cabal_Distribution_Simple_GHC.hs) = a4c82b1282c0580a7945be8c3b9d38bc760db99f
SHA1 (patch-libraries_base_GHC_Event_KQueue.hsc) = 8ee5da667a241a05fde3c580d3dc9bdc05aa5f00
SHA1 (patch-libraries_base_System_CPUTime_Posix_Times.hsc) = 2bfb779d534d12073287274ce5e90b99e457a860
@@ -41,6 +45,7 @@ SHA1 (patch-libraries_unix_System_Posix_Signals.hsc) = 49215dce493a6bbc440f91a39
SHA1 (patch-libraries_unix_include_execvpe.h) = 67dd9720a71a6a55bbe2b50e61621ca60187ef00
SHA1 (patch-rts_ProfHeap.c) = 38b0623effbe46e04b98fb221591b4ec329a1b37
SHA1 (patch-rts_ghc.mk) = 6e3daf71fb7e656131aa2aeeb0346c651520216a
+SHA1 (patch-rts_posix_GetTime.c) = a0e94043a270697f3754c8e97461fbee36ca78ed
SHA1 (patch-rts_posix_OSThreads.c) = d5873aad8836067b5f29b37250666e37db67a4be
SHA1 (patch-rules_build-package-way.mk) = ec73df0bbc85e962f76a9068683879a1a1ba1815
SHA1 (patch-rules_distdir-way-opts.mk) = a058c6428faf02ef94aab3336d2d2874f2726f4e
diff --git a/lang/ghc90/files/bootstrap.build.mk b/lang/ghc90/files/bootstrap.build.mk
index 6a27b1aa60c..9b91d6be358 100644
--- a/lang/ghc90/files/bootstrap.build.mk
+++ b/lang/ghc90/files/bootstrap.build.mk
@@ -18,9 +18,9 @@ GhcRTSWays =
# but we don't need it anyway.
GhcWithInterpreter = NO
-# We don't want in-place GMP to be statically linked as it increases
+# We don't want in-tree GMP to be statically linked as it increases
# the bindist size. Dynamic linkage is even worse.
-INTEGER_LIBRARY = integer-simple
+BIGNUM_BACKEND = native
# We'd like to distinguish bootstrapping bindists from normal ones.
BIN_DIST_NAME = ghc-$(ProjectVersion)-boot
diff --git a/lang/ghc90/patches/patch-ghc.mk b/lang/ghc90/patches/patch-ghc.mk
index 2b76484281f..681486b1b75 100644
--- a/lang/ghc90/patches/patch-ghc.mk
+++ b/lang/ghc90/patches/patch-ghc.mk
@@ -1,16 +1,16 @@
-$NetBSD: patch-ghc.mk,v 1.1 2021/04/29 07:02:42 pho Exp $
+$NetBSD: patch-ghc.mk,v 1.2 2021/04/30 03:05:31 pho Exp $
Use the wrapper scripts for ghc as we can't use the ones from the DESTDIR
as the libraries are not in the right place yet.
---- ghc.mk.orig 2020-07-08 16:43:03.000000000 +0000
+--- ghc.mk.orig 2021-01-25 16:30:28.000000000 +0000
+++ ghc.mk
-@@ -959,7 +959,7 @@ endif
+@@ -938,7 +938,7 @@ endif
INSTALLED_PACKAGE_CONF=$(DESTDIR)$(topdir)/package.conf.d
-ifeq "$(BINDIST) $(CrossCompiling)" "NO YES"
-+ifeq "UseWrappers" "UseWrappers"
++ifeq "$(BINDIST)" "NO"
# when installing ghc-stage2 we can't run target's
# 'ghc-pkg' and 'ghc-stage2' but those are needed for registration.
INSTALLED_GHC_REAL=$(TOP)/inplace/bin/ghc-stage1
diff --git a/lang/ghc90/patches/patch-rts_posix_GetTime.c b/lang/ghc90/patches/patch-rts_posix_GetTime.c
new file mode 100644
index 00000000000..be25732b4f6
--- /dev/null
+++ b/lang/ghc90/patches/patch-rts_posix_GetTime.c
@@ -0,0 +1,28 @@
+$NetBSD: patch-rts_posix_GetTime.c,v 1.1 2021/04/30 03:05:31 pho Exp $
+
+OmniOS defines CLOCK_THREAD_CPUTIME_ID but it isn't actually usable:
+clock_gettime(2) always returns EINVAL. Use Solaris-specific
+gethrvtime(3) instead.
+
+--- rts/posix/GetTime.c.orig 2021-04-29 21:06:04.382045075 +0000
++++ rts/posix/GetTime.c
+@@ -32,6 +32,10 @@
+ #include <mach/mach_port.h>
+ #endif
+
++#if defined(solaris2_HOST_OS)
++#include <sys/time.h>
++#endif
++
+ #if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_GETRUSAGE)
+ // we'll implement getProcessCPUTime() and getProcessElapsedTime()
+ // separately, using getrusage() and gettimeofday() respectively
+@@ -81,6 +85,8 @@ Time getCurrentThreadCPUTime(void)
+ sysErrorBelch("getThreadCPUTime");
+ stg_exit(EXIT_FAILURE);
+ }
++#elif defined(solaris2_HOST_OS)
++ return NSToTime(gethrvtime());
+ #elif defined(HAVE_CLOCK_GETTIME) && \
+ defined(CLOCK_PROCESS_CPUTIME_ID) && \
+ defined(HAVE_SYSCONF)