On Mon, 23 Dec 2024 at 12:15:15 +0000, Stuart Henderson wrote: > here's a diff to use the relatively new DIST_TUPLE mechanism to > tidy up fetch/extract. ok? > > (I was looking at the port to see if it could be updated to use > llvm 18; chromium browsers will soon switch to llvm 19, and this > will be the only thing left using 17 - which takes about 3.5h to > build - but hitting a "can't reopen enum and add more constants > to it" error when trying to generate a new bootstrap on OpenBSD).
Here's an update to 1.14.0 that incorporates those changes, uses a bootstrap built against llvm 18, and switches the port to use it. diff --git lang/crystal/Makefile lang/crystal/Makefile index 6d978c85add..e06f9ecc8de 100644 --- lang/crystal/Makefile +++ lang/crystal/Makefile @@ -3,9 +3,14 @@ ONLY_FOR_ARCHS= amd64 USE_NOBTCFI = Yes -V = 1.13.2 +V = 1.14.0 V_SHARDS = 0.18.0 V_MOLINILLO = 0.2.0 + +DIST_TUPLE = github crystal-lang crystal ${V} . \ + github crystal-lang shards v${V_SHARDS} shards-${V_SHARDS} \ + github crystal-lang crystal-molinillo v${V_MOLINILLO} shards-${V_SHARDS}/lib/molinillo + COMMENT = statically typed object oriented language DISTNAME = crystal-${V} CATEGORIES = lang @@ -30,20 +35,15 @@ WANTLIB += yaml-0 # The result will be built at .build/crystal.o # -SITES = https://github.com/crystal-lang/crystal/archive/ -SITES.a = https://jcs.org/distfiles/ -SITES.b = https://github.com/crystal-lang/shards/archive/ -SITES.c = https://github.com/crystal-lang/crystal-molinillo/archive/ -DISTFILES = crystal-${V}{${V}}.tar.gz -DISTFILES.a = crystal-${V}-OpenBSD7.6.tar.gz -DISTFILES.b = shards-${V}{v${V_SHARDS}}.tar.gz -DISTFILES.c = crystal-molinillo-${V}{v${V_MOLINILLO}}.tar.gz +SITES = https://jcs.org/distfiles/ +DISTFILES = crystal-${V}-OpenBSD7.6.tar.gz # Build requires llvm-config from ports, not from base. When changing # MODCLANG_VERSION, keep paths in patches/ in sync here and in bootstrap # environment. MODULES = lang/clang -MODCLANG_VERSION = 17 +MODCLANG_VERSION = 18 +MODCLANG_RUNDEP= yes COMPILER = ports-clang LLVM_CONFIG = llvm-config-${MODCLANG_VERSION} @@ -51,19 +51,14 @@ LIB_DEPENDS = converters/libiconv \ devel/boehm-gc \ devel/libevent2 \ devel/pcre2 \ - devel/libyaml + devel/libyaml \ + ${MODCLANG_LIB_DEPENDS} USE_GMAKE = Yes ALL_TARGET = crystal release=1 TEST_TARGET = smoke_test SUBST_VARS = MODCLANG_VERSION -post-extract: - mv ${WRKDIR}/shards-${V_SHARDS} ${WRKSRC}/ - mkdir ${WRKSRC}/shards-${V_SHARDS}/lib - mv ${WRKDIR}/crystal-molinillo-${V_MOLINILLO} \ - ${WRKSRC}/shards-${V_SHARDS}/lib/molinillo - do-build: mkdir -p ${WRKSRC}/.build # Link the compiler from the pre-built bootstrap object diff --git lang/crystal/distinfo lang/crystal/distinfo index 1eb9dc1fa64..70fdef09dba 100644 --- lang/crystal/distinfo +++ lang/crystal/distinfo @@ -1,8 +1,8 @@ -SHA256 (crystal-1.13.2-OpenBSD7.6.tar.gz) = qzmlylaK5m20xfa/2+QaZxAt+avm37Ua71fQ5thcWVQ= -SHA256 (crystal-1.13.2.tar.gz) = xTczbBD/DZzTZz4ZUWVmfkeL6S4KjMZmS97FuWB0XEs= -SHA256 (crystal-molinillo-1.13.2.tar.gz) = 4jHPJBGmoRoVOJg8f7UrGeZQrMMzi9PN9v2xPWRjhho= -SHA256 (shards-1.13.2.tar.gz) = Rqgwr9kpKAc112XlnYwnrJupLt3elkeufT/IWt3DjMU= -SIZE (crystal-1.13.2-OpenBSD7.6.tar.gz) = 10272541 -SIZE (crystal-1.13.2.tar.gz) = 3687101 -SIZE (crystal-molinillo-1.13.2.tar.gz) = 23959 -SIZE (shards-1.13.2.tar.gz) = 79910 +SHA256 (crystal-1.14.0-OpenBSD7.6.tar.gz) = GyfucZVCOozdMwxPD20hOoXbff28vpyXnVNVAJ/gD9g= +SHA256 (crystal-lang-crystal-1.14.0.tar.gz) = hcdNhlSg4RHi6uxt44RwvJy2divFt5ndNpPRjM5LyAc= +SHA256 (crystal-lang-crystal-molinillo-v0.2.0.tar.gz) = 4jHPJBGmoRoVOJg8f7UrGeZQrMMzi9PN9v2xPWRjhho= +SHA256 (crystal-lang-shards-v0.18.0.tar.gz) = Rqgwr9kpKAc112XlnYwnrJupLt3elkeufT/IWt3DjMU= +SIZE (crystal-1.14.0-OpenBSD7.6.tar.gz) = 10325242 +SIZE (crystal-lang-crystal-1.14.0.tar.gz) = 3726474 +SIZE (crystal-lang-crystal-molinillo-v0.2.0.tar.gz) = 23959 +SIZE (crystal-lang-shards-v0.18.0.tar.gz) = 79910 diff --git lang/crystal/patches/patch-bin_crystal lang/crystal/patches/patch-bin_crystal index 3151a401a21..a808db68878 100644 --- lang/crystal/patches/patch-bin_crystal +++ lang/crystal/patches/patch-bin_crystal @@ -11,8 +11,8 @@ Index: bin/crystal if [ -x "$CRYSTAL_DIR/crystal" ]; then __warning_msg "Using compiled compiler at ${CRYSTAL_DIR#"$PWD/"}/crystal" -+ export LD_LIBRARY_PATH=/usr/local/llvm17/lib -+ export LLVM_CONFIG=/usr/local/llvm17/bin/llvm-config ++ export LD_LIBRARY_PATH=/usr/local/llvm18/lib ++ export LLVM_CONFIG=/usr/local/llvm18/bin/llvm-config exec "$CRYSTAL_DIR/crystal" "$@" elif !($PARENT_CRYSTAL_EXISTS); then __error_msg 'You need to have a crystal executable in your path! or set CRYSTAL env variable' diff --git lang/crystal/patches/patch-src_compiler_crystal_compiler_cr lang/crystal/patches/patch-src_compiler_crystal_compiler_cr index e57fc4fd555..f185e02e758 100644 --- lang/crystal/patches/patch-src_compiler_crystal_compiler_cr +++ lang/crystal/patches/patch-src_compiler_crystal_compiler_cr @@ -3,13 +3,13 @@ Index: src/compiler/crystal/compiler.cr --- src/compiler/crystal/compiler.cr.orig +++ src/compiler/crystal/compiler.cr -@@ -463,6 +463,11 @@ module Crystal +@@ -495,6 +495,11 @@ module Crystal else link_flags = @link_flags || "" link_flags += " -rdynamic" + + if program.has_flag? "openbsd" -+ link_flags += " -L/usr/local/lib -L/usr/local/llvm17/lib -Wl,-z,nobtcfi" ++ link_flags += " -L/usr/local/lib -L/usr/local/llvm18/lib -Wl,-z,nobtcfi" + end + {DEFAULT_LINKER, %(#{DEFAULT_LINKER} "${@}" -o #{Process.quote_posix(output_filename)} #{link_flags} #{program.lib_flags}), object_names} diff --git lang/crystal/pkg/PLIST lang/crystal/pkg/PLIST index 8f385936ba4..cb60617d3f2 100644 --- lang/crystal/pkg/PLIST +++ lang/crystal/pkg/PLIST @@ -24,7 +24,12 @@ lib/crystal/big/yaml.cr lib/crystal/bit_array.cr lib/crystal/bool.cr lib/crystal/box.cr +lib/crystal/channel/ lib/crystal/channel.cr +lib/crystal/channel/select/ +lib/crystal/channel/select.cr +lib/crystal/channel/select/select_action.cr +lib/crystal/channel/select/timeout_action.cr lib/crystal/char/ lib/crystal/char.cr lib/crystal/char/reader.cr @@ -367,6 +372,7 @@ lib/crystal/crystal/syntax_highlighter/colorize.cr lib/crystal/crystal/syntax_highlighter/html.cr lib/crystal/crystal/system/ lib/crystal/crystal/system.cr +lib/crystal/crystal/system/addrinfo.cr lib/crystal/crystal/system/dir.cr lib/crystal/crystal/system/env.cr lib/crystal/crystal/system/event_loop/ @@ -393,6 +399,7 @@ lib/crystal/crystal/system/thread_mutex.cr lib/crystal/crystal/system/time.cr lib/crystal/crystal/system/unix/ lib/crystal/crystal/system/unix.cr +lib/crystal/crystal/system/unix/addrinfo.cr lib/crystal/crystal/system/unix/arc4random.cr lib/crystal/crystal/system/unix/dir.cr lib/crystal/crystal/system/unix/env.cr @@ -422,6 +429,7 @@ lib/crystal/crystal/system/unix/urandom.cr lib/crystal/crystal/system/unix/user.cr lib/crystal/crystal/system/user.cr lib/crystal/crystal/system/wasi/ +lib/crystal/crystal/system/wasi/addrinfo.cr lib/crystal/crystal/system/wasi/cpucount.cr lib/crystal/crystal/system/wasi/dir.cr lib/crystal/crystal/system/wasi/event_loop.cr @@ -443,6 +451,8 @@ lib/crystal/crystal/system/wasi/thread_mutex.cr lib/crystal/crystal/system/wasi/user.cr lib/crystal/crystal/system/wasi/wasi.cr lib/crystal/crystal/system/win32/ +lib/crystal/crystal/system/win32/addrinfo.cr +lib/crystal/crystal/system/win32/addrinfo_win7.cr lib/crystal/crystal/system/win32/cpucount.cr lib/crystal/crystal/system/win32/crypto.cr lib/crystal/crystal/system/win32/dir.cr @@ -452,6 +462,7 @@ lib/crystal/crystal/system/win32/fiber.cr lib/crystal/crystal/system/win32/file.cr lib/crystal/crystal/system/win32/file_descriptor.cr lib/crystal/crystal/system/win32/file_info.cr +lib/crystal/crystal/system/win32/group.cr lib/crystal/crystal/system/win32/hostname.cr lib/crystal/crystal/system/win32/iocp.cr lib/crystal/crystal/system/win32/library_archive.cr @@ -465,6 +476,7 @@ lib/crystal/crystal/system/win32/thread.cr lib/crystal/crystal/system/win32/thread_condition_variable.cr lib/crystal/crystal/system/win32/thread_mutex.cr lib/crystal/crystal/system/win32/time.cr +lib/crystal/crystal/system/win32/user.cr lib/crystal/crystal/system/win32/visual_studio.cr lib/crystal/crystal/system/win32/windows_registry.cr lib/crystal/crystal/system/win32/windows_sdk.cr @@ -804,6 +816,7 @@ lib/crystal/lib_c/aarch64-linux-musl/c/sys/wait.cr lib/crystal/lib_c/aarch64-linux-musl/c/termios.cr lib/crystal/lib_c/aarch64-linux-musl/c/time.cr lib/crystal/lib_c/aarch64-linux-musl/c/unistd.cr +lib/crystal/lib_c/aarch64-windows-msvc lib/crystal/lib_c/amd64-unknown-openbsd lib/crystal/lib_c/arm-linux-gnueabihf/ lib/crystal/lib_c/arm-linux-gnueabihf/c/ @@ -1310,6 +1323,7 @@ lib/crystal/lib_c/x86_64-windows-msvc/c/ioapiset.cr lib/crystal/lib_c/x86_64-windows-msvc/c/jobapi2.cr lib/crystal/lib_c/x86_64-windows-msvc/c/knownfolders.cr lib/crystal/lib_c/x86_64-windows-msvc/c/libloaderapi.cr +lib/crystal/lib_c/x86_64-windows-msvc/c/lm.cr lib/crystal/lib_c/x86_64-windows-msvc/c/malloc.cr lib/crystal/lib_c/x86_64-windows-msvc/c/memoryapi.cr lib/crystal/lib_c/x86_64-windows-msvc/c/minwinbase.cr @@ -1322,7 +1336,9 @@ lib/crystal/lib_c/x86_64-windows-msvc/c/processenv.cr lib/crystal/lib_c/x86_64-windows-msvc/c/processthreadsapi.cr lib/crystal/lib_c/x86_64-windows-msvc/c/profileapi.cr lib/crystal/lib_c/x86_64-windows-msvc/c/regapix.cr +lib/crystal/lib_c/x86_64-windows-msvc/c/sddl.cr lib/crystal/lib_c/x86_64-windows-msvc/c/sdkddkver.cr +lib/crystal/lib_c/x86_64-windows-msvc/c/security.cr lib/crystal/lib_c/x86_64-windows-msvc/c/shlobj_core.cr lib/crystal/lib_c/x86_64-windows-msvc/c/signal.cr lib/crystal/lib_c/x86_64-windows-msvc/c/stdarg.cr @@ -1340,6 +1356,7 @@ lib/crystal/lib_c/x86_64-windows-msvc/c/sys/utime.cr lib/crystal/lib_c/x86_64-windows-msvc/c/sysinfoapi.cr lib/crystal/lib_c/x86_64-windows-msvc/c/timezoneapi.cr lib/crystal/lib_c/x86_64-windows-msvc/c/tlhelp32.cr +lib/crystal/lib_c/x86_64-windows-msvc/c/userenv.cr lib/crystal/lib_c/x86_64-windows-msvc/c/win_def.cr lib/crystal/lib_c/x86_64-windows-msvc/c/winbase.cr lib/crystal/lib_c/x86_64-windows-msvc/c/wincrypt.cr @@ -1389,6 +1406,7 @@ lib/crystal/llvm/jit_compiler.cr lib/crystal/llvm/lib_llvm/ lib/crystal/llvm/lib_llvm.cr lib/crystal/llvm/lib_llvm/analysis.cr +lib/crystal/llvm/lib_llvm/bit_reader.cr lib/crystal/llvm/lib_llvm/bit_writer.cr lib/crystal/llvm/lib_llvm/core.cr lib/crystal/llvm/lib_llvm/debug_info.cr @@ -1396,6 +1414,8 @@ lib/crystal/llvm/lib_llvm/error.cr lib/crystal/llvm/lib_llvm/execution_engine.cr lib/crystal/llvm/lib_llvm/initialization.cr lib/crystal/llvm/lib_llvm/ir_reader.cr +lib/crystal/llvm/lib_llvm/lljit.cr +lib/crystal/llvm/lib_llvm/orc.cr lib/crystal/llvm/lib_llvm/target.cr lib/crystal/llvm/lib_llvm/target_machine.cr lib/crystal/llvm/lib_llvm/transforms/ @@ -1407,6 +1427,12 @@ lib/crystal/llvm/memory_buffer.cr lib/crystal/llvm/module.cr lib/crystal/llvm/module_pass_manager.cr lib/crystal/llvm/operand_bundle_def.cr +lib/crystal/llvm/orc/ +lib/crystal/llvm/orc/jit_dylib.cr +lib/crystal/llvm/orc/lljit.cr +lib/crystal/llvm/orc/lljit_builder.cr +lib/crystal/llvm/orc/thread_safe_context.cr +lib/crystal/llvm/orc/thread_safe_module.cr lib/crystal/llvm/parameter_collection.cr lib/crystal/llvm/pass_builder_options.cr lib/crystal/llvm/pass_manager_builder.cr @@ -1619,7 +1645,11 @@ lib/crystal/uri/ lib/crystal/uri.cr lib/crystal/uri/encoding.cr lib/crystal/uri/json.cr +lib/crystal/uri/params/ lib/crystal/uri/params.cr +lib/crystal/uri/params/from_www_form.cr +lib/crystal/uri/params/serializable.cr +lib/crystal/uri/params/to_www_form.cr lib/crystal/uri/punycode.cr lib/crystal/uri/uri_parser.cr lib/crystal/uri/yaml.cr