Page MenuHomeFreeBSD

D61263.1794081766.diff
No OneTemporary

Authored By
Unknown
Size
5 KB
Referenced Files
None
Subscribers
None

D61263.1794081766.diff

Index: lang/crystal/Makefile
===================================================================
--- lang/crystal/Makefile
+++ lang/crystal/Makefile
@@ -1,8 +1,8 @@
PORTNAME= crystal
DISTVERSION= 1.22.2
+PORTREVISION= 1
CATEGORIES= lang
-MASTER_SITES= https://github.com/dmgk/crystal-bootstrap/releases/download/${_BOOTSTRAP_VERSION}/:bootstrap \
- LOCAL/dmgk/crystal:bootstrap
+MASTER_SITES= LOCAL/dch/crystal:bootstrap
DISTFILES= ${_BOOTSTRAP_NAME}.tar.xz:bootstrap
DIST_SUBDIR= ${PORTNAME}
@@ -16,15 +16,13 @@
ONLY_FOR_ARCHS= aarch64 amd64
ONLY_FOR_ARCHS_REASON= requires prebuilt bootstrap compiler
-BUILD_DEPENDS= ${LOCALBASE}/bin/llvm-config${_BOOTSTRAP_LLVM_VERSION}:devel/llvm${_BOOTSTRAP_LLVM_VERSION} \
- asciidoctor:textproc/rubygem-asciidoctor \
+BUILD_DEPENDS= asciidoctor:textproc/rubygem-asciidoctor \
git:devel/git
LIB_DEPENDS= libevent.so:devel/libevent \
libLLVM-${_LLVM_VERSION}.so:devel/llvm${_LLVM_VERSION} \
libffi.so:devel/libffi \
libgc-threaded.so:devel/boehm-gc-threaded \
libgmp.so:math/gmp \
- libpcre.so:devel/pcre \
libpcre2-8.so:devel/pcre2 \
libyaml.so:textproc/libyaml
RUN_DEPENDS= pkg-config:devel/pkgconf
@@ -35,9 +33,9 @@
GH_ACCOUNT= crystal-lang
USE_GNOME= libxml2
-_BOOTSTRAP_LLVM_VERSION= 14
+_BOOTSTRAP_LLVM_VERSION= 20
_BOOTSTRAP_NAME= crystal-${_BOOTSTRAP_VERSION}-${ARCH}-llvm${_BOOTSTRAP_LLVM_VERSION}
-_BOOTSTRAP_VERSION= 1.5.1
+_BOOTSTRAP_VERSION= 1.22.2
_COMMIT_ID= 84f389ac5424
_LLVM_VERSION?= 20
@@ -69,6 +67,10 @@
IGNORE= not supported on anything but FreeBSD
.endif
+.if ${_LLVM_VERSION} != ${_BOOTSTRAP_LLVM_VERSION}
+BUILD_DEPENDS+= libLLVM-${_BOOTSTRAP_LLVM_VERSION}.so:devel/llvm${_BOOTSTRAP_LLVM_VERSION}
+.endif
+
post-extract:
@${RLN} ${WRKDIR}/.build ${WRKSRC}
@${RLN} x86_64-freebsd ${WRKSRC}/src/lib_c/aarch64-freebsd
@@ -125,4 +127,63 @@
${RM} ${DISTINFO_FILE}.tmp
.endif
+# maintainer flow for a new bootstrap compiler, on each arch in ONLY_FOR_ARCHS
+# set _BOOTSTRAP_VERSION to DISTVERSION & pkg install crystal, it builds the new one
+# make _tarball # build this arch's bootstrap into _DISTDIR
+# make _upload # push every arch found in _DISTDIR to freefall
+# make makesum # once all arches are published
+
+_BOOTSTRAP_WRKDIR= ${WRKDIR}/bootstrap
+_BOOTSTRAP_SRC= ${_BOOTSTRAP_WRKDIR}/${GH_PROJECT}-${DISTVERSION}
+
+_tarball: build-depends
+ @if [ "${_BOOTSTRAP_VERSION}" != "${DISTVERSION}" ]; then \
+ ${ECHO_CMD} "===> set _BOOTSTRAP_VERSION=${DISTVERSION} first"; \
+ exit 1; \
+ fi
+ @if [ -f ${_DISTDIR}/${_BOOTSTRAP_NAME}.tar.xz ]; then \
+ ${ECHO_CMD} "===> ${_BOOTSTRAP_NAME}.tar.xz already exists;"; \
+ ${ECHO_CMD} "===> a published bootstrap must not be rebuilt"; \
+ exit 1; \
+ fi
+ @if [ ! -x ${LOCALBASE}/bin/crystal ]; then \
+ ${ECHO_CMD} "===> pkg install crystal first, it compiles the bootstrap"; \
+ exit 1; \
+ fi
+ cd ${.CURDIR} && \
+ ${MAKE} fetch DISTFILES=${DISTNAME}${EXTRACT_SUFX}
+ ${RM} -r ${_BOOTSTRAP_WRKDIR}
+ ${MKDIR} ${_BOOTSTRAP_WRKDIR}
+ ${TAR} -xf ${_DISTDIR}/${DISTNAME}${EXTRACT_SUFX} -C ${_BOOTSTRAP_WRKDIR}
+.for d in aarch64-freebsd aarch64-portbld-freebsd aarch64-unknown-freebsd
+ ${RLN} x86_64-freebsd ${_BOOTSTRAP_SRC}/src/lib_c/${d}
+.endfor
+# a minimal compiler: no docs (libxml2), no interpreter, pcre2 only
+ (cd ${_BOOTSTRAP_SRC} && \
+ ${SETENV} -u USE_PCRE1 PATH=${LOCALBASE}/bin:${PATH} \
+ ${MAKE_CMD} CRYSTAL_CACHE_DIR=${_BOOTSTRAP_WRKDIR}/cache \
+ FLAGS="--progress --threads ${MAKE_JOBS_NUMBER} --release --no-debug" \
+ LLVM_CONFIG=${LOCALBASE}/bin/llvm-config${_BOOTSTRAP_LLVM_VERSION} \
+ crystal)
+ @ldd ${_BOOTSTRAP_SRC}/.build/crystal > ${_BOOTSTRAP_WRKDIR}/ldd.txt
+ @${GREP} -q 'libLLVM.*\.so\.${_BOOTSTRAP_LLVM_VERSION}\.' ${_BOOTSTRAP_WRKDIR}/ldd.txt || \
+ { ${ECHO_CMD} "===> not linked to LLVM ${_BOOTSTRAP_LLVM_VERSION}"; exit 1; }
+ @${GREP} -q 'libpcre2-8\.so' ${_BOOTSTRAP_WRKDIR}/ldd.txt || \
+ { ${ECHO_CMD} "===> not linked to pcre2"; exit 1; }
+ @! ${GREP} -q 'libpcre\.so' ${_BOOTSTRAP_WRKDIR}/ldd.txt || \
+ { ${ECHO_CMD} "===> linked to pcre1"; exit 1; }
+ ${_BOOTSTRAP_SRC}/.build/crystal --version
+ ${CHMOD} -R u=rwX,go=rX ${_BOOTSTRAP_SRC}/.build
+ ${TAR} -cJf ${_DISTDIR}/${_BOOTSTRAP_NAME}.tar.xz -C ${_BOOTSTRAP_SRC} \
+ --uid 0 --gid 0 --uname root --gname wheel ./.build
+ ${CHMOD} 644 ${_DISTDIR}/${_BOOTSTRAP_NAME}.tar.xz
+ @${ECHO_MSG} "===> ${_BOOTSTRAP_NAME}.tar.xz built; run \"make _upload\" to publish"
+
+# copy the other arch's tarball into _DISTDIR first to upload both at once
+_upload:
+ (cd ${_DISTDIR} && \
+ rsync -Phriv --times --chmod=F644 \
+ $$(${LS} ${ONLY_FOR_ARCHS:@a@crystal-${_BOOTSTRAP_VERSION}-${a}-llvm${_BOOTSTRAP_LLVM_VERSION}.tar.xz@} 2>/dev/null) \
+ freefall.freebsd.org:public_distfiles/${PORTNAME}/)
+
.include <bsd.port.mk>
Index: lang/crystal/distinfo
===================================================================
--- lang/crystal/distinfo
+++ lang/crystal/distinfo
@@ -1,7 +1,5 @@
-TIMESTAMP = 1793881940
-SHA256 (crystal/crystal-1.5.1-aarch64-llvm14.tar.xz) = 62617bf7a6d38d5a980672559b680818bf35803252f69bb6ecfb33377c3b2a88
-SIZE (crystal/crystal-1.5.1-aarch64-llvm14.tar.xz) = 2085460
+TIMESTAMP = 1793957222
+SHA256 (crystal/crystal-1.22.2-amd64-llvm20.tar.xz) = 745e3c18ea9c6a8bb3d60bd5c99e9284933a84849f6b0e11c7782f1b31e697f5
+SIZE (crystal/crystal-1.22.2-amd64-llvm20.tar.xz) = 3189140
SHA256 (crystal/crystal-lang-crystal-1.22.2_GH0.tar.gz) = fd07dfa5e798b43cdf351494365e039c07fee15326d175c10490ae12e5f69edc
SIZE (crystal/crystal-lang-crystal-1.22.2_GH0.tar.gz) = 4369406
-SHA256 (crystal/crystal-1.5.1-amd64-llvm14.tar.xz) = abd7cd2a798b9184d6cbb600fde29a55e196a03974c164ceac1713be264fb7ac
-SIZE (crystal/crystal-1.5.1-amd64-llvm14.tar.xz) = 2608988

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 7, 8:02 PM (7 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41548505
Default Alt Text
D61263.1794081766.diff (5 KB)

Event Timeline