pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/lang/rust176
Module Name: pkgsrc
Committed By: wiz
Date: Sun Jul 7 10:41:22 UTC 2024
Added Files:
pkgsrc/lang/rust176: DESCR Makefile distinfo options.mk
pkgsrc/lang/rust176/files: gcc-wrap
pkgsrc/lang/rust176/patches:
patch-compiler_rustc__codegen__ssa_src_back_linker.rs
patch-compiler_rustc__llvm_build.rs
patch-compiler_rustc__target_src_spec_base_netbsd.rs
patch-compiler_rustc__target_src_spec_mod.rs
patch-compiler_rustc__target_src_spec_targets_i586__unknown__netbsd.rs
patch-compiler_rustc__target_src_spec_targets_mips64el__unknown__netbsd.rs
patch-library_backtrace_src_symbolize_gimli.rs
patch-library_backtrace_src_symbolize_gimli_elf.rs
patch-library_std_src_sys_unix_mod.rs
patch-library_std_src_sys_unix_thread.rs
patch-library_std_src_sys_unix_thread__parking_netbsd.rs
patch-src_bootstrap_bootstrap.py
patch-src_bootstrap_src_core_build__steps_compile.rs
patch-src_bootstrap_src_core_builder.rs
patch-src_bootstrap_src_lib.rs
patch-src_llvm-project_llvm_CMakeLists.txt
patch-src_llvm-project_llvm_cmake_modules_AddLLVM.cmake
patch-src_llvm-project_llvm_include_llvm-c_DataTypes.h
patch-src_llvm-project_llvm_include_llvm_Analysis_ConstantFolding.h
patch-src_llvm-project_llvm_lib_Support_BLAKE3_blake3__impl.h
patch-src_llvm-project_llvm_utils_FileCheck_FileCheck.cpp
patch-src_tools_cargo_src_cargo_core_profiles.rs
patch-src_tools_cargo_tests_testsuite_build.rs
patch-src_tools_rust-installer_install-template.sh
patch-vendor_aho-corasick_src_packed_teddy_builder.rs
patch-vendor_aho-corasick_src_packed_vector.rs
patch-vendor_backtrace_src_symbolize_gimli.rs
patch-vendor_backtrace_src_symbolize_gimli_elf.rs
patch-vendor_cc-1.0.73_src_lib.rs patch-vendor_cc_src_lib.rs
patch-vendor_crossbeam-epoch_no__atomic.rs
patch-vendor_crossbeam-utils-0.8.14-no__atomic.rs
patch-vendor_crossbeam-utils_no__atomic.rs
patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike+netbsd_mips.rs
patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_mod.rs
patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_riscv64.rs
patch-vendor_libc-0.2.148_src_unix_solarish_mod.rs
patch-vendor_libc_src_unix_solarish_mod.rs
patch-vendor_lzma-sys_config.h
patch-vendor_nix-0.26.2_src_sys_signal.rs
patch-vendor_openssl-src_openssl_Configurations_10-main.conf
patch-vendor_openssl-src_src_lib.rs
patch-vendor_openssl-sys_build_find__normal.rs
patch-vendor_openssl-sys_build_main.rs
patch-vendor_rustc-ap-rustc__target_src_spec_aarch64__be__unknown__netbsd.rs
patch-vendor_stacker_src_lib.rs
patch-vendor_target-lexicon_src_targets.rs
patch-vendor_valuable_no__atomic.rs
Log Message:
lang/rust176: import rust-1.76.0nb3
Rust is a systems programming language focused on three goals: safety,
speed, and concurrency. It maintains these goals without having a
garbage collector, making it a useful language for a number of use cases
other languages aren't good at: embedding in other languages, programs
with specific space and time requirements, and writing low-level code,
like device drivers and operating systems.
It improves on current languages targeting this space by having a number
of compile-time safety checks that produce no runtime overhead, while
eliminating all data races. Rust also aims to achieve "zero-cost
abstractions" even though some of these abstractions feel like those of
a high-level language. Even then, Rust still allows precise control
like a low-level language would.
This is the old 1.76 version of rust for those platforms where the current
version does not work.
To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 pkgsrc/lang/rust176/DESCR pkgsrc/lang/rust176/Makefile \
pkgsrc/lang/rust176/distinfo pkgsrc/lang/rust176/options.mk
cvs rdiff -u -r0 -r1.1 pkgsrc/lang/rust176/files/gcc-wrap
cvs rdiff -u -r0 -r1.1 \
pkgsrc/lang/rust176/patches/patch-compiler_rustc__codegen__ssa_src_back_linker.rs \
pkgsrc/lang/rust176/patches/patch-compiler_rustc__llvm_build.rs \
pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_base_netbsd.rs \
pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_mod.rs \
pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_targets_i586__unknown__netbsd.rs \
pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_targets_mips64el__unknown__netbsd.rs \
pkgsrc/lang/rust176/patches/patch-library_backtrace_src_symbolize_gimli.rs \
pkgsrc/lang/rust176/patches/patch-library_backtrace_src_symbolize_gimli_elf.rs \
pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_mod.rs \
pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_thread.rs \
pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_thread__parking_netbsd.rs \
pkgsrc/lang/rust176/patches/patch-src_bootstrap_bootstrap.py \
pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_core_build__steps_compile.rs \
pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_core_builder.rs \
pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_lib.rs \
pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_CMakeLists.txt \
pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_cmake_modules_AddLLVM.cmake \
pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_include_llvm-c_DataTypes.h \
pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_include_llvm_Analysis_ConstantFolding.h \
pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_lib_Support_BLAKE3_blake3__impl.h \
pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_utils_FileCheck_FileCheck.cpp \
pkgsrc/lang/rust176/patches/patch-src_tools_cargo_src_cargo_core_profiles.rs \
pkgsrc/lang/rust176/patches/patch-src_tools_cargo_tests_testsuite_build.rs \
pkgsrc/lang/rust176/patches/patch-src_tools_rust-installer_install-template.sh \
pkgsrc/lang/rust176/patches/patch-vendor_aho-corasick_src_packed_teddy_builder.rs \
pkgsrc/lang/rust176/patches/patch-vendor_aho-corasick_src_packed_vector.rs \
pkgsrc/lang/rust176/patches/patch-vendor_backtrace_src_symbolize_gimli.rs \
pkgsrc/lang/rust176/patches/patch-vendor_backtrace_src_symbolize_gimli_elf.rs \
pkgsrc/lang/rust176/patches/patch-vendor_cc-1.0.73_src_lib.rs \
pkgsrc/lang/rust176/patches/patch-vendor_cc_src_lib.rs \
pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-epoch_no__atomic.rs \
pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-utils-0.8.14-no__atomic.rs \
pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-utils_no__atomic.rs \
pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike+netbsd_mips.rs \
pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_mod.rs \
pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_riscv64.rs \
pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_solarish_mod.rs \
pkgsrc/lang/rust176/patches/patch-vendor_libc_src_unix_solarish_mod.rs \
pkgsrc/lang/rust176/patches/patch-vendor_lzma-sys_config.h \
pkgsrc/lang/rust176/patches/patch-vendor_nix-0.26.2_src_sys_signal.rs \
pkgsrc/lang/rust176/patches/patch-vendor_openssl-src_openssl_Configurations_10-main.conf \
pkgsrc/lang/rust176/patches/patch-vendor_openssl-src_src_lib.rs \
pkgsrc/lang/rust176/patches/patch-vendor_openssl-sys_build_find__normal.rs \
pkgsrc/lang/rust176/patches/patch-vendor_openssl-sys_build_main.rs \
pkgsrc/lang/rust176/patches/patch-vendor_rustc-ap-rustc__target_src_spec_aarch64__be__unknown__netbsd.rs \
pkgsrc/lang/rust176/patches/patch-vendor_stacker_src_lib.rs \
pkgsrc/lang/rust176/patches/patch-vendor_target-lexicon_src_targets.rs \
pkgsrc/lang/rust176/patches/patch-vendor_valuable_no__atomic.rs
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Added files:
Index: pkgsrc/lang/rust176/DESCR
diff -u /dev/null pkgsrc/lang/rust176/DESCR:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/DESCR Sun Jul 7 10:41:20 2024
@@ -0,0 +1,16 @@
+Rust is a systems programming language focused on three goals: safety,
+speed, and concurrency. It maintains these goals without having a
+garbage collector, making it a useful language for a number of use cases
+other languages aren't good at: embedding in other languages, programs
+with specific space and time requirements, and writing low-level code,
+like device drivers and operating systems.
+
+It improves on current languages targeting this space by having a number
+of compile-time safety checks that produce no runtime overhead, while
+eliminating all data races. Rust also aims to achieve "zero-cost
+abstractions" even though some of these abstractions feel like those of
+a high-level language. Even then, Rust still allows precise control
+like a low-level language would.
+
+This is the old 1.76 version of rust for those platforms where the current
+version does not work.
Index: pkgsrc/lang/rust176/Makefile
diff -u /dev/null pkgsrc/lang/rust176/Makefile:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/Makefile Sun Jul 7 10:41:20 2024
@@ -0,0 +1,698 @@
+# $NetBSD: Makefile,v 1.1 2024/07/07 10:41:20 wiz Exp $
+
+DISTNAME= rustc-1.76.0-src
+PKGNAME= ${DISTNAME:S/rustc/rust/:S/-src//}
+PKGREVISION= 3
+CATEGORIES= lang
+MASTER_SITES= https://static.rust-lang.org/dist/
+
+MAINTAINER= pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE= https://www.rust-lang.org/
+COMMENT= Safe, concurrent, practical language
+LICENSE= mit OR apache-2.0
+
+CONFLICTS+= rust-bin-[0-9]*
+
+# LLVM uses -std=c++17
+USE_CXX_FEATURES+= c++17
+USE_GCC_RUNTIME= yes
+USE_LANGUAGES= c c++
+USE_LIBTOOL= yes
+USE_TOOLS+= bash grep gmake perl:build pkg-config
+
+# The NetBSD bootstraps are built for NetBSD 8 (because rust doesn't
+# build on 7). Mark earlier versions as broken.
+BROKEN_ON_PLATFORM+= NetBSD-[1-7].*-*
+# Bootstrap is built for NetBSD 9.x on these platforms:
+BROKEN_ON_PLATFORM+= NetBSD-8.*-*arm*
+BROKEN_ON_PLATFORM+= NetBSD-8.*-aarch64
+BROKEN_ON_PLATFORM+= NetBSD-8.*-sparc64
+BROKEN_ON_PLATFORM+= NetBSD-8.*-powerpc
+BROKEN_ON_PLATFORM+= NetBSD-8.*-i386
+
+HAS_CONFIGURE= yes
+PYTHON_FOR_BUILD_ONLY= yes
+CONFIG_SHELL= ${PYTHONBIN}
+CONFIGURE_SCRIPT= src/bootstrap/configure.py
+CONFIGURE_ARGS+= --prefix=${PREFIX}
+CONFIGURE_ARGS+= --mandir=${PREFIX}/${PKGMANDIR}
+CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR}
+CONFIGURE_ARGS+= --python=${PYTHONBIN}
+CONFIGURE_ARGS+= --release-channel=stable
+CONFIGURE_ARGS+= --local-rust-root=${RUST_BOOTSTRAP_PATH}
+CONFIGURE_ARGS+= --enable-extended # Build and install cargo too.
+CONFIGURE_ARGS+= --enable-rpath
+CONFIGURE_ARGS+= --disable-codegen-tests
+CONFIGURE_ARGS+= --disable-compiler-docs
+CONFIGURE_ARGS+= --disable-llvm-static-stdcpp
+CONFIGURE_ARGS+= --disable-ninja
+CONFIGURE_ARGS+= --dist-compression-formats=xz
+
+# Include (optional) settings to cross-build rust
+.include "../../lang/rust/cross.mk"
+
+# optional from do-cross.mk
+CONFIGURE_ARGS+= ${ADD_CONFIGURE_ARGS}
+
+# Getting RPATH with $ORIGIN into bootstrap may be troublesome, so
+# uncommenting the LD_LIBRARY_PATH setting may be required to run
+# the bootstrap
+PKGSRC_MAKE_ENV+= LD_LIBRARY_PATH=${RUST_BOOTSTRAP_PATH:Q}/lib
+
+# This should allow us to perform "offline" builds (so cargo doesn't fetch
+# dependencies during the build stage) but this isn't hooked up yet.
+CONFIGURE_ARGS+= --enable-vendor
+
+# cargo defaults to using the number of available CPUs
+MAKE_ENV+= CARGO_BUILD_JOBS=${_MAKE_JOBS_N}
+
+# Rust builds some bundled components with strict version requirements, ensure
+# that any conflicting packages pulled in via dependencies are not buildlinked.
+BUILDLINK_FILES_CMD.libssh2= ${TRUE}
+BUILDLINK_FILES_CMD.xz= ${TRUE}
+MAKE_ENV+= LZMA_API_STATIC=1
+
+# MacOS X 10.7 is the oldest supported version. See
+# ${WRKSRC}/src/bootstrap/lib.rs
+MAKE_ENV.Darwin+= MACOSX_DEPLOYMENT_TARGET="10.7"
+
+CFLAGS.SunOS+= -D_POSIX_PTHREAD_SEMANTICS
+MAKE_ENV.SunOS+= AR=gar
+
+# Debugging of crate resolution
+# Annoyingly, this makes the powerpc build succeed...
+#MAKE_ENV+= RUSTC_LOG=rustc_metadata
+
+UNLIMIT_RESOURCES+= cputime stacksize datasize virtualsize
+
+TEST_TARGET= check
+
+# bin/* lib/*, but names vary
+CHECK_RELRO_SUPPORTED= no
+CHECK_SSP_SUPPORTED= no
+
+.include "../../mk/bsd.prefs.mk"
+
+# Allow overriding MAKE_JOBS_SAFE
+# some may chose to mostly build faster,
+# and deal with any failures due to deadlocks
+.if !empty(rust.MAKE_JOBS_SAFE)
+. if ${rust.MAKE_JOBS_SAFE:tl} == "yes"
+MAKE_JOBS_SAFE= yes
+. endif
+.endif
+
+.if !empty(rust.BUILD_TARGET)
+BUILD_TARGET= ${rust.BUILD_TARGET}
+.endif
+
+.if !empty(TARGET)
+# Use "dist" build target for cross compile of bootstrap
+BUILD_TARGET?= dist
+.else
+BUILD_TARGET?= build
+.endif
+
+.if ${MACHINE_PLATFORM:MNetBSD-*-powerpc} || \
+ ${MACHINE_PLATFORM:MNetBSD-*-earmv[67]hf} || \
+ ${MACHINE_PLATFORM:MNetBSD-*-mipsel} || \
+ !empty(TARGET:Marmv[67]-unknown-netbsd-eabihf) || \
+ !empty(TARGET:Mmipsel-unknown-netbsd)
+# Bootstrapping on NetBSD/powerpc requires no debug-info from rustc
+# (both for amd64->powerpc built and powerpc->powerpc built bootstrap bits)
+# Also try to downsize the armv[67] build.
+CONFIGURE_ARGS+= --disable-debug
+CONFIGURE_ARGS+= --disable-debug-assertions
+CONFIGURE_ARGS+= --disable-llvm-release-debuginfo
+CONFIGURE_ARGS+= --debuginfo-level=0
+CONFIGURE_ARGS+= --debuginfo-level-rustc=0
+CONFIGURE_ARGS+= --debuginfo-level-std=0
+CONFIGURE_ARGS+= --debuginfo-level-tools=0
+CONFIGURE_ARGS+= --debuginfo-level-tests=0
+.endif
+
+# Only build the ARM target on/for this host, due to resource constraints
+.if ${MACHINE_PLATFORM:MNetBSD-*-earmv[67]hf}
+CONFIGURE_ARGS+= --set llvm.targets="ARM"
+.endif
+# When cross-building for ARM on X86, X86 needs to go along due
+# to 2-stage build process
+.if !empty(TARGET:Marmv[67]-unknown-netbsd-eabihf)
+CONFIGURE_ARGS+= --set llvm.targets="ARM;X86"
+.endif
+# Same for mips:
+.if ${MACHINE_PLATFORM:MNetBSD-*-mipsel}
+CONFIGURE_ARGS+= --set llvm.targets="Mips"
+.endif
+.if !empty(TARGET:Mmipsel-unknown-netbsd)
+CONFIGURE_ARGS+= --set llvm.targets="Mips;X86"
+.endif
+
+CHECK_INTERPRETER_SKIP+= lib/rustlib/src/rust/library/backtrace/ci/*.sh
+CHECK_INTERPRETER_SKIP+= lib/rustlib/src/rust/library/core/src/unicode/printable.py
+CHECK_INTERPRETER_SKIP+= lib/rustlib/src/rust/library/stdarch/ci/*.sh
+
+CHECK_PORTABILITY_SKIP+= src/ci/docker/host-x86_64/x86_64-gnu-tools/checktools.sh
+CHECK_PORTABILITY_SKIP+= tests/run-make/dump-ice-to-disk/check.sh
+
+.if ${OPSYS} == "NetBSD"
+# This block contains information about known trouble on NetBSD and workarounds.
+
+# Parallel builds failed on NetBSD due to dynamic linker locking bugs.
+# \todo Explain if the build is believed to be sound if not parallel,
+# or if a non-parallel build is merely more likely to work.
+#
+# See toolchain/54192 at
+# http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=54192
+# which was fixed in -current on 2020-04-19:
+# http://mail-index.netbsd.org/source-changes/2020/04/16/msg116256.html
+# http://mail-index.netbsd.org/source-changes/2020/04/19/msg116337.html
+# These were pulled up to netbsd-9 on 2020-05-13:
+# http://releng.netbsd.org/cgi-bin/req-9.cgi?show=907
+# This has not been pulled up to netbsd-8
+# \todo Explain if it's not applicable, shouldn't be pulled up, should be
+# but hasn't, is too hard, etc.
+#
+# On pkgbuild for 2020Q1 9.0_RELEASE amd64, rust did not build despite
+# MAKE_JOBS_SAFE=no, but setting MAKE_JOBS=1 resulted in success. (No
+# PR is open for this.) \todo Understand and fix.
+#
+# If we aren't on 9-current, and are on 8.x or 9.x, avoid parallel.
+# Release 9.x and 9.1 or later is OK.
+. if ${OPSYS} == "NetBSD" && 090999 < ${OPSYS_VERSION} && ${OPSYS_VERSION} < 090900
+MAKE_JOBS_SAFE?= no
+. endif
+
+# Open PRs
+#
+# Broken package with PREFIX not /usr/pkg:
+# http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=54453
+#
+
+.endif
+
+#
+# Under NetBSD, do not use DT_RUNPATH
+#
+BUILDLINK_TRANSFORM.NetBSD+= rm:-Wl,--enable-new-dtags
+
+#
+# Somewhere in the LLVM build "-arch x86_64" is passed on macOS/arm64 which
+# breaks linking, see https://github.com/rust-lang/rust/issues/81790. Until
+# this can be located (proving difficult!) we just force it.
+#
+.if ${MACHINE_PLATFORM:MDarwin-*-aarch64}
+BUILDLINK_TRANSFORM+= opt:x86_64:arm64
+.endif
+
+#
+# Rust unfortunately requires itself to build. On platforms which aren't
+# supported by upstream (where they offer binary bootstraps), or where we do
+# not trust random binaries from the Internet, we need to build and provide our
+# own bootstrap. See the stage0-bootstrap below for more details.
+#
+DISTFILES:= ${DEFAULT_DISTFILES}
+
+.if ${MACHINE_PLATFORM:MDarwin-*-aarch64} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH:= aarch64-apple-darwin
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+.endif
+.if ${MACHINE_PLATFORM:MDarwin-*-x86_64} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH:= x86_64-apple-darwin
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+.endif
+.if ${MACHINE_PLATFORM:MLinux-*-aarch64} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH:= aarch64-unknown-linux-gnu
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+.endif
+.if ${MACHINE_PLATFORM:MLinux-*-earmv6hf} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH:= arm-unknown-linux-gnueabihf
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+.endif
+.if ${MACHINE_PLATFORM:MLinux-*-earmv7hf} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH:= armv7-unknown-linux-gnueabihf
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+.endif
+.if ${MACHINE_PLATFORM:MLinux-*-i386} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH:= i686-unknown-linux-gnu
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+.endif
+.if ${MACHINE_PLATFORM:MLinux-*-x86_64} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH:= x86_64-unknown-linux-gnu
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+.endif
+#
+# The SunOS target defaults to illumos as that's what the current bootstraps
+# are built on. If you wish to target Oracle Solaris you'll need to create an
+# x86_64-sun-solaris bootstrap and comment out the overrides.
+#
+.if ${MACHINE_PLATFORM:MSunOS-*-x86_64} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH:= x86_64-unknown-illumos
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+SITES.${RUST_STAGE0}= https://us-central.manta.mnx.io/pkgsrc/public/pkg-bootstraps/
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0}
+RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}
+# Override default "x86_64-sun-solaris" selection
+CONFIGURE_ARGS+= --set=target.${RUST_ARCH}.llvm-config=${LLVM_CONFIG_PATH}
+CONFIGURE_ARGS+= --build=${RUST_ARCH}
+CONFIGURE_ARGS+= --host=${RUST_ARCH}
+CONFIGURE_ARGS+= --target=${RUST_ARCH}
+.endif
+.if ${MACHINE_PLATFORM:MFreeBSD-*-x86_64} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH:= x86_64-unknown-freebsd
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+.endif
+.if ${MACHINE_PLATFORM:MNetBSD-*-i386} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH= i586-unknown-netbsd
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+# Setting this changes it for every distfile, which doesn't match what is
+# currently in distinfo.
+#DIST_SUBDIR= ${PKGNAME}
+# For atomic ops
+CFLAGS+= -march=i586
+CONFIGURE_ARGS+= --build=${RUST_ARCH}
+pre-build: pre-build-fix-paxctl
+.PHONY: pre-build-fix-paxctl
+pre-build-fix-paxctl:
+ ${TOOLS_PLATFORM.paxctl} +am ${WRKDIR}/rust-bootstrap/bin/cargo
+ ${TOOLS_PLATFORM.paxctl} +am ${WRKDIR}/rust-bootstrap/bin/rustc
+.endif
+.if ${MACHINE_PLATFORM:MNetBSD-*-x86_64} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH= x86_64-unknown-netbsd
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+.endif
+.if ${MACHINE_PLATFORM:MNetBSD-*-powerpc} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH= powerpc-unknown-netbsd
+
+# Cross-built against NetBSD 9.0
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+
+.endif
+.if ${MACHINE_PLATFORM:MNetBSD-*-aarch64} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH= aarch64-unknown-netbsd
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+.endif
+.if ${MACHINE_PLATFORM:MNetBSD-*-aarch64eb} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH= aarch64_be-unknown-netbsd
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+.endif
+.if ${MACHINE_PLATFORM:MNetBSD-*-sparc64} || make(distinfo) || make (makesum) || make(mdi)
+RUST_STAGE0_VER= 1.75.0
+RUST_ARCH= sparc64-unknown-netbsd
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+.endif
+.if ${MACHINE_PLATFORM:MNetBSD-*-earmv7hf} || make(distinfo) || make (makesum) || make(mdi)
+RUST_ARCH= armv7-unknown-netbsd-eabihf
+RUST_STAGE0_VER= 1.75.0
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+.endif
+.if ${MACHINE_PLATFORM:MNetBSD-*-earmv6hf} || make(distinfo) || make (makesum) || make(mdi)
+RUST_ARCH= armv6-unknown-netbsd-eabihf
+RUST_STAGE0_VER= 1.75.0
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+.endif
+.if ${MACHINE_PLATFORM:MNetBSD-*-mipsel} || make(distinfo) || make (makesum) || make(mdi)
+RUST_ARCH= mipsel-unknown-netbsd
+RUST_STAGE0_VER= 1.75.0
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+.endif
+.if ${MACHINE_PLATFORM:MNetBSD-*-riscv64} || make(distinfo) || make (makesum) || make(mdi)
+RUST_ARCH= riscv64gc-unknown-netbsd
+RUST_STAGE0_VER= 1.75.0
+RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
+DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
+SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
+.endif
+
+# You may override RUST_BOOTSTRAP_PATH and RUST_ARCH in mk.conf
+# if you have a local bootstrap compiler.
+.if !defined(RUST_ARCH) && !defined(RUST_BOOTSTRAP_PATH)
+NOT_FOR_PLATFORM+= ${MACHINE_PLATFORM}
+.else
+RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-bootstrap
+.endif
+
+.if ${OPSYS} == "SunOS"
+TOOL_DEPENDS+= coreutils>=0:../../sysutils/coreutils
+TOOL_DEPENDS+= gzip>=0:../../archivers/gzip
+TOOLS_CREATE+= md5sum
+TOOLS_PATH.md5sum= ${PREFIX}/bin/gmd5sum
+TOOLS_PLATFORM.gzcat= ${PREFIX}/bin/gzip -cd
+.endif
+
+SUBST_CLASSES+= prefix
+SUBST_STAGE.prefix= pre-configure
+SUBST_FILES.prefix+= compiler/rustc_codegen_ssa/src/back/linker.rs
+SUBST_FILES.prefix+= compiler/rustc_target/src/spec/base/netbsd.rs
+SUBST_FILES.prefix+= src/bootstrap/src/core/build_steps/compile.rs
+SUBST_FILES.prefix+= src/bootstrap/src/core/builder.rs
+SUBST_FILES.prefix+= src/bootstrap/bootstrap.py
+SUBST_VARS.prefix= PREFIX
+
+#
+# Generate list of subst entries for various .cargo-checksum.json files. These
+# are all handled together in one big substitution to simplify things rather
+# than one substitution entry per file, but are kept separate below to ease
+# updating and verification.
+#
+
+CKSUM_CRATES+= vendor/libc
+CKSUMS+= b1660c631a599a3355116e7485b88ab2f8f2929c2e37851a763431387b902f14
+CKSUMS+= 990d1c6c01db31b9e5541128e4987b114f39c6808d94a5f8f048f492cfb96d78
+
+CKSUM_CRATES+= vendor/cc-1.0.73
+CKSUMS+= 38970d678de0efb4b5e2978265daa8a613a1db35fc42e669621b03fc56d5b138
+CKSUMS+= 65de0d6593a4256e5fcaf898f9468d71bab672c70a2dfab3dcb8514e9b72819c
+
+CKSUM_CRATES+= vendor/cc
+CKSUMS+= cdf0c6dc4e12ad313fb93ab42f994e26c7e5aaeb07ca61620032d8f4014dacd0
+CKSUMS+= 2344d4cf113fe2fb8925ca5621c60daabcf967186b24f0551c777fb284755493
+
+CKSUM_CRATES+= vendor/lzma-sys
+CKSUMS+= 6fd5e9245db34c6f557b8bfcaf03db82fc88c3b06dbfbb5f03b2bcd138983ef9
+CKSUMS+= 5e252578b5d266f6a4c8dc9f71ca7a91536ccb8c5c7d7753b82f12ec886459ef
+
+CKSUM_CRATES+= vendor/stacker
+CKSUMS+= 59ca847887cf19387119d18c57f08d5a8520d714876ca0142b8f1c001ecde06b
+CKSUMS+= 03be8ae293b713fe6e9703e4809dd68caaec992bae6777914ffddae8da2a9bc7
+
+CKSUM_CRATES+= vendor/crossbeam-utils
+CKSUMS+= 5f75132808d9e8d6e266fe77f9e20bbc35855a1c37a5dbc0940b3e989bca1a94
+CKSUMS+= 3d7c747108434546837b1c5664111c9146fcbfb2e084c95f8ce0be970d652421
+
+CKSUM_CRATES+= vendor/crossbeam-utils-0.8.14
+CKSUMS+= 3314524d2afa0360c947455a6e6566fb54ebf909c99479ca3b7435741fd3293e
+CKSUMS+= eaef167dea04efa811cf0d53de98feac6063ec2196eccd315d345ef86c551aaa
+
+CKSUM_CRATES+= vendor/crossbeam-epoch
+CKSUMS+= 5f75132808d9e8d6e266fe77f9e20bbc35855a1c37a5dbc0940b3e989bca1a94
+CKSUMS+= 3d7c747108434546837b1c5664111c9146fcbfb2e084c95f8ce0be970d652421
+
+CKSUM_CRATES+= vendor/openssl-sys
+CKSUMS+= b2cbaa5bfac5e7d5550aa0eb8e5c65a9f7e86a3692b759fb13330ef6e3b26b30
+CKSUMS+= b303bf9ceae9fcffa4a0420ea858675d827fc2d75c358f8236e44274d58be1a0
+CKSUMS+= 33f814dba4ac9942266157cbe3dc8eadf5e477090370a92c36c53f916fa45d48
+CKSUMS+= 4f14cac64c027b3bea07908bae58184b31f6da6326f8ba5a6935d726ab2e1d20
+
+CKSUM_CRATES+= vendor/openssl-src
+CKSUMS+= c87f041ff9ada85cddcb2a787788e05b2ab5ffc0a85f502fe7e3f7cbda59d49c
+CKSUMS+= 67b877964bc0e40c84669c423818a3cb39501eaedfc3f5caf9c33d4779c3d03f
+CKSUMS+= 090744f85cf99a9b8412c23fca1eabb61eb45d830f0f9f0e7309be2572c1e827
+CKSUMS+= ead7bdeee121f1357b99741b175a564c8b7026f694cbc388aae2a86b3bae913f
+
+CKSUM_CRATES+= vendor/nix-0.26.2
+CKSUMS+= c3e13a2edea54d190a4b051f62efc97953c00b5051a9fda0e39e3bc732a31939
+CKSUMS+= 263bd7ace66a4cfee3de18532f61c187327fcbd564666b4f97c4b01ae6885d98
+
+CKSUM_CRATES+= vendor/aho-corasick
+CKSUMS+= 840065521cbd4701fa5b8b506d1537843d858c903f7cadf3c68749ea1780874b
+CKSUMS+= 626ce9b45dfded3d2eaf795a1d86be765a7d63eb4bcaf9d7b89add6f686f7ede
+CKSUMS+= 720735ea6c7ff92b081426513e6e82feed24a922849297bb538d28f7b8129f81
+CKSUMS+= 3a5d88cf1ce02dc1bc06aa7d7aad0fa6d63ca45246a47ebeae43b48544065dcc
+
+SUBST_CLASSES+= cksum
+SUBST_STAGE.cksum= pre-configure
+.for crate in ${CKSUM_CRATES}
+SUBST_FILES.cksum+= ${crate}/.cargo-checksum.json
+.endfor
+.for from to in ${CKSUMS}
+SUBST_SED.cksum+= -e 's,${from},${to},g'
+.endfor
+
+post-extract:
+ set -e; \
+ if ${TEST} -e ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}/install.sh \
+ -a ! -e ${RUST_BOOTSTRAP_PATH}/bin/rustc; then \
+ cd ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}; \
+ env ${MAKE_ENV} ${TOOLS_BASH} \
+ ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \
+ cd ${WRKDIR}/rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}; \
+ env ${MAKE_ENV} ${TOOLS_BASH} \
+ ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \
+ fi
+.if ${OPSYS} == "NetBSD"
+ SDIR=${WRKDIR}/scripts; \
+ ${MKDIR} $${SDIR}; \
+ cd $${SDIR}; \
+ ${RM} -f c++-wrap; \
+ ${RM} -f clang++-wrap; \
+ ${RM} -f clang-wrap; \
+ ${RM} -f ar-wrap; \
+ ${CP} ${.CURDIR}/files/gcc-wrap .; \
+ ${CHMOD} +x gcc-wrap; \
+ ${LN} -s gcc-wrap c++-wrap; \
+ ${LN} -s gcc-wrap clang++-wrap; \
+ ${LN} -s gcc-wrap clang-wrap; \
+ ${LN} -s gcc-wrap ar-wrap
+.endif
+
+.if ${OPSYS} == "FreeBSD"
+MAKE_ENV+= OPENSSL_DIR=${SSLBASE}
+.endif
+
+.if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang) && !exists(/lib/libgcc_s.so)
+BUILDLINK_TRANSFORM+= rm:-lgcc_s
+MAKE_ENV+= PKGSRC_HAVE_LIBCPP=yes
+
+pre-build: provide-libgcc-for-bootstrap
+.PHONY: provide-libgcc-for-bootstrap
+provide-libgcc-for-bootstrap:
+. if exists(${FILESDIR}/libgcc_s.so.1)
+ cp ${FILESDIR}/libgcc_s.so.1 ${RUST_BOOTSTRAP_PATH}/lib/.
+. endif
+.endif
+
+#
+# These are essentially copies of the "all", "test", and "install" Makefile
+# targets, but are duplicated here so that we can specify -j.
+#
+do-build:
+ ${RUN}${_ULIMIT_CMD} \
+ cd ${WRKSRC} && \
+ ${SETENV} ${MAKE_ENV} \
+ sh -c "if [ \"${BUILD_TARGET}\" = \"dist\" ]; then \
+ unset DESTDIR; \
+ ${PYTHONBIN} ./x.py -v \
+ ${BUILD_TARGET} -j ${_MAKE_JOBS_N}; \
+ else \
+ ${PYTHONBIN} ./x.py -v \
+ ${BUILD_TARGET} --stage 2 -j ${_MAKE_JOBS_N} && \
+ ${PYTHONBIN} ./x.py -v \
+ doc --stage 2 -j ${_MAKE_JOBS_N}; \
+ fi"
+
+do-test:
+ ${RUN}${_ULIMIT_CMD} \
+ cd ${WRKSRC} && \
+ ${SETENV} ${MAKE_ENV} \
+ ${PYTHONBIN} ./x.py -v test -j ${_MAKE_JOBS_N}
+
+do-install:
+ ${RUN}${_ULIMIT_CMD} \
+ cd ${WRKSRC} && \
+ ${SETENV} ${MAKE_ENV} ${INSTALL_ENV} \
+ ${PYTHONBIN} ./x.py -v install -j ${_MAKE_JOBS_N}
+
+SUBST_CLASSES+= destdir
+SUBST_STAGE.destdir= post-install
+SUBST_FILES.destdir= ${DESTDIR}${PREFIX}/lib/rustlib/manifest-*
+SUBST_SED.destdir= -e 's|file:${DESTDIR}${PREFIX}|file:${PREFIX}|'
+
+GENERATE_PLIST+= ${FIND} ${DESTDIR}${PREFIX} \( -type f -o -type l \) -print | \
+ ${SED} -e 's,${DESTDIR}${PREFIX}/,,' | ${SORT} ;
+
+# Create a relocatable stage2 bootstrap from the bits we just built that can be
+# used to build the next version of rust. Currently only tested on SmartOS.
+#
+# Use the alternate BOOTSTRAP_NAME when creating a nightly release.
+#
+#BOOTSTRAP_NAME= ${PKGNAME_NOREV:C/rust/rust-nightly/}-${RUST_ARCH}
+BOOTSTRAP_NAME= ${PKGNAME_NOREV}-${RUST_ARCH}
+BOOTSTRAP_TMPDIR= ${WRKDIR}/${BOOTSTRAP_NAME}
+USE_TOOLS+= gtar
+
+# The NetBSD part is so far untested, because I could not convince
+# the rust build to use the gcc wrapper when building natively,
+# so that I could get a placeholder in the RPATH, because chrpath
+# cannot extend the length of the RPATH...
+ELFEDIT?= /usr/bin/elfedit
+
+.PHONY: stage0-bootstrap
+stage0-bootstrap: install
+ ${RM} -rf ${BOOTSTRAP_TMPDIR}
+ ${MKDIR} ${BOOTSTRAP_TMPDIR}
+.if ${OPSYS} == "NetBSD"
+ (cd ${BOOTSTRAP_TMPDIR}; \
+ DISTDIR=${WRKSRC}/bild/dist; \
+ VER_ARCH=${PKGVERSION}-${RUST_ARCH}; \
+ RUSTC=rustc-$${VER_ARCH}; \
+ RUSTC_FILE=$${RUSTC}.tar.gz; \
+ RUST_STD=rust-std-$${VER_ARCH}; \
+ RUST_STD_FILE=$${RUST_STD}.tar.gz; \
+ ${GTAR} -xzf $${DISTDIR}/$${RUSTC_FILE}; \
+ (cd ${RUSTC}; \
+ RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN/../lib'; \
+ for f in rls-preview/bin/rls rustc/bin/rustc rustc/bin/rustdoc; do \
+ chrpath -r $$RPATH $$f; \
+ done; \
+ RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN'; \
+ for f in rustc/lib/*.so*; do \
+ chrpath -r $$RPATH $$f; \
+ done; \
+ RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN:$$ORIGIN/../../..'; \
+ for f in rustc/lib/rustlib/*/*/*.so*; do \
+ chrpath -r $$RPATH $$f; \
+ done;); \
+ ${GTAR} -czf $${RUSTC_FILE} $${RUSTC}; \
+ ${CP} $${DISTDIR}/$${RUST_STD_FILE} .; \
+ ${ECHO} "Fixed stage0 bootstrap in ${BOOTSTRAP_TMPDIR}:"; \
+ ${ECHO} "$${RUSTC_FILE}"; \
+ ${ECHO} "$${RUST_STD_FILE}"; \
+ )
+.endif
+.if ${OS_VARIANT} == "SmartOS"
+ ${CP} -R ${DESTDIR}/${PREFIX}/bin ${BOOTSTRAP_TMPDIR}/
+ ${CP} -R ${DESTDIR}/${PREFIX}/lib ${BOOTSTRAP_TMPDIR}/
+ ${MKDIR} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc
+ set -e; \
+ for lib in libgcc_s.so.1 libstdc++.so.6; do \
+ ${CP} `${PKG_CC} -print-file-name=$${lib}` \
+ ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
+ done; \
+ for lib in libLLVM-16.so libcrypto.so.3 libcurl.so.4 \
+ libssl.so.3 libz.so.1 libzstd.so.1; do \
+ ${CP} ${PREFIX}/lib/$${lib} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
+ done; \
+ for lib in libiconv.so.2 libidn2.so.0 libintl.so.8 liblber.so.2 \
+ libldap.so.2 libnghttp2.so.14 libsasl2.so.3 \
+ libssh2.so.1 libunistring.so.5; do \
+ ${CP} ${PREFIX}/lib/$${lib} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
+ done; \
+ for f in ${BOOTSTRAP_TMPDIR}/bin/*; do \
+ /bin/file -b "$$f" | grep ^ELF >/dev/null || continue; \
+ ${ELFEDIT} -e 'dyn:runpath $$ORIGIN/../lib:$$ORIGIN/../lib/pkgsrc' $$f; \
+ done; \
+ for f in ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/*.so*; do \
+ ${ELFEDIT} -e 'dyn:runpath $$ORIGIN' $$f; \
+ done; \
+ for f in ${BOOTSTRAP_TMPDIR}/lib/*.so*; do \
+ ${ELFEDIT} -e 'dyn:runpath $$ORIGIN:$$ORIGIN/pkgsrc' $$f; \
+ done; \
+ for f in ${BOOTSTRAP_TMPDIR}/lib/rustlib/*/*/*.so*; do \
+ ${ELFEDIT} -e 'dyn:runpath $$ORIGIN:$$ORIGIN/../../..:$$ORIGIN/../../../pkgsrc' $$f; \
+ done; \
+ cd ${WRKDIR}; ${GTAR} -zcf ${BOOTSTRAP_NAME}.tar.gz ${BOOTSTRAP_NAME}
+ @${ECHO} ""
+ @${ECHO} "Verify correct library paths using the following:"
+ @${ECHO} ""
+ @${ECHO} " cd ${BOOTSTRAP_TMPDIR}"
+ @${ECHO} " find . -type f | xargs ldd 2>/dev/null | egrep 'not.found|${PREFIX}'"
+ @${ECHO} ""
+ @${ECHO} "If there is no output then this bootstrap kit is ready to go:"
+ @${ECHO} ""
+ @${ECHO} " ${WRKDIR}/${BOOTSTRAP_NAME}.tar.gz"
+ @${ECHO} ""
+.endif
+
+.include "options.mk"
+
+# These dependencies currently use the bundled sources as they require
+# development features not yet available in released versions.
+#
+#.include "../../devel/libgit2/buildlink3.mk"
+#.include "../../security/libssh2/buildlink3.mk"
+#.include "../../www/http-parser/buildlink3.mk"
+#.include "../../devel/jemalloc/buildlink3.mk"
+
+## Issues specific to: bootstrap AND NetBSD follow
+
+# rust i386 and sparc64 bootstraps are built for 8.0
+# and still depend on libstdc++.so.8.
+# Pull in compat80 on 9.x and newer.
+.if (${MACHINE_PLATFORM:MNetBSD-*-i386} || \
+ ${MACHINE_PLATFORM:MNetBSD-*-sparc64}) \
+ && empty(OS_VERSION:M8.*)
+TOOL_DEPENDS+= compat80>=0:../../emulators/compat80
+.endif
+
+.include "../../mk/atomic64.mk"
+# This is for when we build natively:
+.if ${MACHINE_PLATFORM:MNetBSD-*-powerpc} || \
+ ${MACHINE_PLATFORM:MNetBSD-*-i386} || \
+ ${MACHINE_PLATFORM:MNetBSD-*-mipsel} || \
+ ${MACHINE_PLATFORM:MNetBSD-*-riscv64}
+# Make libatomic library available via a unique directory:
+DEPENDS+= libatomic-links>=0:../../devel/libatomic-links
+.endif
+
+TOOL_DEPENDS+= cmake-[0-9]*:../../devel/cmake
+
+.include "../../devel/zlib/buildlink3.mk"
+.include "../../lang/python/tool.mk"
+.include "../../mk/bsd.pkg.mk"
Index: pkgsrc/lang/rust176/distinfo
diff -u /dev/null pkgsrc/lang/rust176/distinfo:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/distinfo Sun Jul 7 10:41:20 2024
@@ -0,0 +1,164 @@
+$NetBSD: distinfo,v 1.1 2024/07/07 10:41:20 wiz Exp $
+
+BLAKE2s (rust-1.75.0-aarch64-apple-darwin.tar.gz) = 0413f6810abc118a1be224b775d8de6a6c2ad55059944e1d95e6f325a4e41838
+SHA512 (rust-1.75.0-aarch64-apple-darwin.tar.gz) = d73b8884cdbec68c4f1d38635ec590424c081d39ea9f43bf01fc0e442d04a304fa9920409e41a97e9a70f98f09f91a6b565bc83d433328df5de860c32e01f580
+Size (rust-1.75.0-aarch64-apple-darwin.tar.gz) = 313810756 bytes
+BLAKE2s (rust-1.75.0-aarch64-unknown-linux-gnu.tar.gz) = 6265eca0657a28d2384a53ae1aad8b60c3837ec0cb1b8462e782ccbbf7608e56
+SHA512 (rust-1.75.0-aarch64-unknown-linux-gnu.tar.gz) = 6b2f556a7dffbde54482f121e5e57befc84d93ceb1f7dae8cd89dc36de0d98ab0f6cbda2abeb8d2c23d278abb3a07de4e4761815c0a1d6e4953be4ba7a6704fe
+Size (rust-1.75.0-aarch64-unknown-linux-gnu.tar.gz) = 460772111 bytes
+BLAKE2s (rust-1.75.0-aarch64-unknown-netbsd.tar.xz) = 76ccec3dcf8b961b77de3c6e924b6ff5dc5daaae899636f5ca104c8194eb5edd
+SHA512 (rust-1.75.0-aarch64-unknown-netbsd.tar.xz) = f18d71fbad5bcb3facfac23468395b0184de75c3ff2fe59c7ae3e76211af3a8629086360c8e29cee6aada5d4f6d2bb27e90d41ae08d148f10e1a462582eb14a6
+Size (rust-1.75.0-aarch64-unknown-netbsd.tar.xz) = 160244012 bytes
+BLAKE2s (rust-1.75.0-aarch64_be-unknown-netbsd.tar.xz) = 3c8de5e2b7031dac3405af68ed589c423d7a4cd905364e31cf6d75125bcc0697
+SHA512 (rust-1.75.0-aarch64_be-unknown-netbsd.tar.xz) = f4f28566b93490330c5a060b6b38863951f3307e5d594e0535be2f91bf7f0f6ba0ad7eb2386feacc12f39620f01bff7b7c6c04e1784d5364fa4d94eeb307a8e2
+Size (rust-1.75.0-aarch64_be-unknown-netbsd.tar.xz) = 160117240 bytes
+BLAKE2s (rust-1.75.0-arm-unknown-linux-gnueabihf.tar.gz) = 44df609186b52e709b84b67eaf7ad2185a06edec8fe9f286f94cbc0f631acc42
+SHA512 (rust-1.75.0-arm-unknown-linux-gnueabihf.tar.gz) = faa3ad4e2e8a719a96f17ac7718f444ad9d842c9afa934238837eafa1cc3dd3f116cd1f693311db5f41e9cbe3a9cd806705bb2f0e22fdbe96649a318a605c953
+Size (rust-1.75.0-arm-unknown-linux-gnueabihf.tar.gz) = 351718481 bytes
+BLAKE2s (rust-1.75.0-armv6-unknown-netbsd-eabihf.tar.xz) = a815881365e06f73b08fd9657201f4fa8072f6567ad3a73edd14fd1c43fac5b2
+SHA512 (rust-1.75.0-armv6-unknown-netbsd-eabihf.tar.xz) = 98092766fb0b7a1ccd54eb94efeb4af800a5e8d1d66cc2a7b94aa7c74bce7a9b427a49c23818b434a14bee63ecf441086458e35d0cf5cb7a6269f44ad25bc7e9
+Size (rust-1.75.0-armv6-unknown-netbsd-eabihf.tar.xz) = 137497008 bytes
+BLAKE2s (rust-1.75.0-armv7-unknown-linux-gnueabihf.tar.gz) = dc4613358bae1d017526a2c18705b9a984ce2c0ee7b3b1be449006602fd13610
+SHA512 (rust-1.75.0-armv7-unknown-linux-gnueabihf.tar.gz) = aaab4edcd4732614db78ee7ca3ad6d5888375cd7370105d8fee7aafb8f04dc7cc82a80935f23d435b9d915ad68cdc7b725e56aa4b3a729842dc2adc36d256528
+Size (rust-1.75.0-armv7-unknown-linux-gnueabihf.tar.gz) = 340961159 bytes
+BLAKE2s (rust-1.75.0-armv7-unknown-netbsd-eabihf.tar.xz) = 510e494b4562201b956436d9d5525a62be2f5d1b341071d316ca9e53987222e8
+SHA512 (rust-1.75.0-armv7-unknown-netbsd-eabihf.tar.xz) = 7ef3fbe915c9c8acf6ae4eba9db82b2f337c4db55c87a326275c43f797ddab35a4ca3af4f5478d1fd4f9f260a1788e1ac4336166a66eed26545b97512454a079
+Size (rust-1.75.0-armv7-unknown-netbsd-eabihf.tar.xz) = 137950820 bytes
+BLAKE2s (rust-1.75.0-i586-unknown-netbsd.tar.xz) = 4b655bcfc334f5a1326fcf34c4a3c9311affbbfa3f9e94cc0bee1dfe8952437f
+SHA512 (rust-1.75.0-i586-unknown-netbsd.tar.xz) = a6de27b7ccc066f5a3fa1935d7a1db2215f29130644831917e7f71fda950cbcdbfef5c7948ab22f63637e5f13ee3b0f54d0f029290ed77ccc3cdc2710b35b57f
+Size (rust-1.75.0-i586-unknown-netbsd.tar.xz) = 173187680 bytes
+BLAKE2s (rust-1.75.0-i686-unknown-linux-gnu.tar.gz) = 3a7a95d130b44835c04d1faed48d328fa12d3af5af75b02eed9ec03edfd84a53
+SHA512 (rust-1.75.0-i686-unknown-linux-gnu.tar.gz) = 09adf5a9c3f2856142fcc31e7bb53f98b6c8faddb509960799b23bbaa97ce5bc9afcab380bab0da593026b57c75ed6f95f229b79e193fe59dd779380bd06179b
+Size (rust-1.75.0-i686-unknown-linux-gnu.tar.gz) = 409233544 bytes
+BLAKE2s (rust-1.75.0-mipsel-unknown-netbsd.tar.xz) = 7ab0a3a1ebdc123ed9da4e6191659a4fe6969d102f86bb3c4bb70c5937d8a00f
+SHA512 (rust-1.75.0-mipsel-unknown-netbsd.tar.xz) = 33076f2f7d49da5717c255ad3cc21eedef3b03cac57178f761604faadcd73f303159f15bbbe2059980ca059aa1a9fefbd417f935b89940ef74ac6573dae7c56a
+Size (rust-1.75.0-mipsel-unknown-netbsd.tar.xz) = 139163932 bytes
+BLAKE2s (rust-1.75.0-powerpc-unknown-netbsd.tar.xz) = e085863aba7879e9859a12a9fe6cae0b316a782507b45c49a663ebc64ff0ab19
+SHA512 (rust-1.75.0-powerpc-unknown-netbsd.tar.xz) = 6e48a2b9f4d286a9a6e09611cdc6e3715c691772fe5d8426125e90d6ded8c21ead8b53d846d8b59024f99ffe95971e74ba6c51afe37752d947a680168d38efe7
+Size (rust-1.75.0-powerpc-unknown-netbsd.tar.xz) = 185421672 bytes
+BLAKE2s (rust-1.75.0-riscv64gc-unknown-netbsd.tar.xz) = 862bfaf265d3c01e58ce373359d7177af107c9f5fd4486f2ff64779d1eeee61a
+SHA512 (rust-1.75.0-riscv64gc-unknown-netbsd.tar.xz) = 241787601ec894a999b446d148f5988e9dc1fbdc963cc1d31d5a92104121b525ab44210673ee014b3d73c37d426692b69e70180c3bdcecc293c953e7408273b1
+Size (rust-1.75.0-riscv64gc-unknown-netbsd.tar.xz) = 172302088 bytes
+BLAKE2s (rust-1.75.0-sparc64-unknown-netbsd.tar.xz) = ca7e8437c6069ef1e285e2fc06df2f018a99933d01c3740714b16a65da89a430
+SHA512 (rust-1.75.0-sparc64-unknown-netbsd.tar.xz) = 1098580b8fb0c7ad11f1a53ca1ac9639b6705d22845e1628747fcdf021be15855f4d1864c5f7c4f46a79d3e56174220faf53fd26ccdeb8a6e3bf2e5adf053bcb
+Size (rust-1.75.0-sparc64-unknown-netbsd.tar.xz) = 155575996 bytes
+BLAKE2s (rust-1.75.0-x86_64-apple-darwin.tar.gz) = ed157acd77760d4174a46c2757b94f2570893dbc1c08b7184d76324ae01dd952
+SHA512 (rust-1.75.0-x86_64-apple-darwin.tar.gz) = d30221f54226ba0200cc4605f61c4abdb00fc0435cd132ffd9ed15c1f88e993b1e36ff6f2e4bfc0efd217181f8d3b3b3d601598300821067cf5cb7fdab39d725
+Size (rust-1.75.0-x86_64-apple-darwin.tar.gz) = 324779780 bytes
+BLAKE2s (rust-1.75.0-x86_64-unknown-freebsd.tar.gz) = 38ae7059dda0a47ad682159a21da63743b34746415ab8b73d5601079017c2eea
+SHA512 (rust-1.75.0-x86_64-unknown-freebsd.tar.gz) = 52144faa646c363a7e05aa247b99bfe3779374b2543f922afd38203394df480eacb733d1ef4a391a6acf5c915beb7b923c549509fdb5a51153a15c0286148c7b
+Size (rust-1.75.0-x86_64-unknown-freebsd.tar.gz) = 312182515 bytes
+BLAKE2s (rust-1.75.0-x86_64-unknown-illumos.tar.gz) = 75c61c3fda6ef1b18b6d936b2b53336fa6e00c8dbc9b52f7276f60f4e181f5a4
+SHA512 (rust-1.75.0-x86_64-unknown-illumos.tar.gz) = c007b58be28f50e883271c7bd3d529ebaae960455febfb993fb879db72a542a7ab3206c0d5382e6610f43ba4654b842dfcc0185d73a9add3f5c9292ce55e099e
+Size (rust-1.75.0-x86_64-unknown-illumos.tar.gz) = 208915401 bytes
+BLAKE2s (rust-1.75.0-x86_64-unknown-linux-gnu.tar.gz) = 6a435cd522a948f41db09706565aa437480b1a7f8b74c84bb025204675a06c00
+SHA512 (rust-1.75.0-x86_64-unknown-linux-gnu.tar.gz) = fdb0642e93915c150dd352c1c49fda275f61e78a91a6ff7403bd275fceb86563403055c00a0c745911bc9e17656e80034d257274ad3d306b1f3314ec1c541dcb
+Size (rust-1.75.0-x86_64-unknown-linux-gnu.tar.gz) = 321280060 bytes
+BLAKE2s (rust-1.75.0-x86_64-unknown-netbsd.tar.xz) = 787909d6790753db205fc73309adafb00f03be35f7c97ae57c79501d460a2912
+SHA512 (rust-1.75.0-x86_64-unknown-netbsd.tar.xz) = 78114df9425ef58b85baa0423be62b5171f9302bf1e04980c55b327e56f72510637ba387caf5fcbd4cdf5745f01f12c52233e014c3b733961358edcf2fdb9aa4
+Size (rust-1.75.0-x86_64-unknown-netbsd.tar.xz) = 152438444 bytes
+BLAKE2s (rust-std-1.75.0-aarch64-apple-darwin.tar.gz) = ae0d6b0c405ac4560a97bff974159954f65d4734034e6a7c071d9e624c647f80
+SHA512 (rust-std-1.75.0-aarch64-apple-darwin.tar.gz) = ba0a8ab5f34bb5ecffdf742a848c89f4af7d36b181c370d9e09042dd559010c28c08dd288c22d517307a31283d9463a561eb74857030bbb2ab1844c3053f4d9a
+Size (rust-std-1.75.0-aarch64-apple-darwin.tar.gz) = 39710389 bytes
+BLAKE2s (rust-std-1.75.0-aarch64-unknown-linux-gnu.tar.gz) = 731f558d5045a1f60e180162602c0a74c4be12516cf74c7238ba1bf7883fc426
+SHA512 (rust-std-1.75.0-aarch64-unknown-linux-gnu.tar.gz) = 334be616a5092722c338f11117a6f2eece972199ea4332b95f19b2723553a07ed168c6c608a3ea699349ffd6c8fbad787fe5a4f2e4a04f8422e47a587a890163
+Size (rust-std-1.75.0-aarch64-unknown-linux-gnu.tar.gz) = 64716330 bytes
+BLAKE2s (rust-std-1.75.0-aarch64-unknown-netbsd.tar.xz) = 51d0e9ae0048eaf3aae693956339fb1812b755fd0b10533e70a81795db3c00a5
+SHA512 (rust-std-1.75.0-aarch64-unknown-netbsd.tar.xz) = aad12ce3be0b69c87eed4151396897ed19f12c3560b22680ef73bc20f77eaaec908996c0b35f37490fd9c9aeb082c4e42d83742d22d374e1eba513b2b6426db5
+Size (rust-std-1.75.0-aarch64-unknown-netbsd.tar.xz) = 22034244 bytes
+BLAKE2s (rust-std-1.75.0-aarch64_be-unknown-netbsd.tar.xz) = b227d41ed886831b1d399b4aeb2bf027de69477eb533cb30e5d0e4def143aa01
+SHA512 (rust-std-1.75.0-aarch64_be-unknown-netbsd.tar.xz) = 660447f782821fb953594ecc00021229ae4a848d614ef87497cdfcb4c20cfa917935e166850fa874c998e5a8cb2e59087ea71fc3664bc2de9fe910cfe2816391
+Size (rust-std-1.75.0-aarch64_be-unknown-netbsd.tar.xz) = 21927200 bytes
+BLAKE2s (rust-std-1.75.0-arm-unknown-linux-gnueabihf.tar.gz) = d2dce2d5beed2a351ed5ae6dabf1d3e1fa9c2b73b3926ff2a1f7f9c3ce7459d8
+SHA512 (rust-std-1.75.0-arm-unknown-linux-gnueabihf.tar.gz) = 877d3fe9303acc9deec125c07301f1e1cadd6168166e4e0709105789a19c668dd3df6c44d81841f126d21ab1608ff56d9cf907877fbf507bb474933877793589
+Size (rust-std-1.75.0-arm-unknown-linux-gnueabihf.tar.gz) = 36844567 bytes
+BLAKE2s (rust-std-1.75.0-armv6-unknown-netbsd-eabihf.tar.xz) = d1f848bcc8004aeac272ab9d40819de45a477fc4d50cddbe88d4debea0366769
+SHA512 (rust-std-1.75.0-armv6-unknown-netbsd-eabihf.tar.xz) = 24edfe7c2cce459e55bf3066e905ef8cfb5aef9a911534a0213089e66e7a0437ff83a90f32eeae61cd669763585466a6d50c8e95444cf994cf3fb1a08c0cec3a
+Size (rust-std-1.75.0-armv6-unknown-netbsd-eabihf.tar.xz) = 20597812 bytes
+BLAKE2s (rust-std-1.75.0-armv7-unknown-linux-gnueabihf.tar.gz) = 41b9691e41d85b070c7cde858e9ae4b24e9ce119436c9c7675859c3e1e2044cd
+SHA512 (rust-std-1.75.0-armv7-unknown-linux-gnueabihf.tar.gz) = bf9131769bb6eca1e1aa75a9c30e5a8af9521ff3b1b7fca6e005d1cc7f831cb393b4df5b0660e0dbf2e35280014fcea81849431aaaacb66d97d2320696e3c870
+Size (rust-std-1.75.0-armv7-unknown-linux-gnueabihf.tar.gz) = 38231689 bytes
+BLAKE2s (rust-std-1.75.0-armv7-unknown-netbsd-eabihf.tar.xz) = 21d376ffd7b7d2ec3ce96f673fd3bbe5400efa667005dc96c18a4f91b1c5eb95
+SHA512 (rust-std-1.75.0-armv7-unknown-netbsd-eabihf.tar.xz) = 2d32983e0d040b1605be89ce11cef4072bc76b2ef277c9e2b3687494e1b4762004cac227c23d591931e45823772d783934113c0093ceab5f8013043577f6b7b2
+Size (rust-std-1.75.0-armv7-unknown-netbsd-eabihf.tar.xz) = 21446572 bytes
+BLAKE2s (rust-std-1.75.0-i586-unknown-netbsd.tar.xz) = 5da28b2b7a3a1a629fd831d20e81b4189873ffad41308e0701befab4bc1a5b2d
+SHA512 (rust-std-1.75.0-i586-unknown-netbsd.tar.xz) = c48e4f5d33aca0c943718726e3cefb43a532f11d09d119aac129322d64556d413bab4f81013b6feb7cc18c2657c6b0ded853f237d777dde1670fc7674182e16b
+Size (rust-std-1.75.0-i586-unknown-netbsd.tar.xz) = 22592836 bytes
+BLAKE2s (rust-std-1.75.0-i686-unknown-linux-gnu.tar.gz) = 99ee660b558d511ca54e1d67f5e554d0ad76024c68ae94b5d6fe44ee86deb370
+SHA512 (rust-std-1.75.0-i686-unknown-linux-gnu.tar.gz) = bef31f337a8274c5fc5f29960e31a8a322842106ae4df00387d6efca9dd8af7791aaf763c462f8d1d97453bc04102acb13d85811476feb349694acbda5eb6d33
+Size (rust-std-1.75.0-i686-unknown-linux-gnu.tar.gz) = 40180219 bytes
+BLAKE2s (rust-std-1.75.0-mipsel-unknown-netbsd.tar.xz) = 7087912235581d2f4c7c316d0d03619710e01c7e244998c6126cef6ecb1304a8
+SHA512 (rust-std-1.75.0-mipsel-unknown-netbsd.tar.xz) = 607edb4e908e8917264e278575a242e507208bf18e919b375af973ad69a01d99fdcf6ef1249002cbd4f28252748352c5edc82dd5236d71f04e8124d6df358572
+Size (rust-std-1.75.0-mipsel-unknown-netbsd.tar.xz) = 20425360 bytes
+BLAKE2s (rust-std-1.75.0-powerpc-unknown-netbsd.tar.xz) = 7208b2332912ee93f8085cf4db3d5a3bbbd9b51935b4df673c5bdaba82249973
+SHA512 (rust-std-1.75.0-powerpc-unknown-netbsd.tar.xz) = 79beffab76d2570286b0be91adbe12ceca6fe660b651bc4abab4e25aabe82c184f3125136ab0d6a5e7cdd8fcc501691029815321a4adb9b3d0f299648991267a
+Size (rust-std-1.75.0-powerpc-unknown-netbsd.tar.xz) = 20669560 bytes
+BLAKE2s (rust-std-1.75.0-riscv64gc-unknown-netbsd.tar.xz) = e779d5fa556329a5b46aa197821b9454e729f6e523a32a7e25e3c661a935b2d2
+SHA512 (rust-std-1.75.0-riscv64gc-unknown-netbsd.tar.xz) = b5d26f048bea617024abdf8f24e81860aaa27ea22b28ae886d4528017b738d67791016ef7114cbfbe579bfa9f6fbaf93f162fd4938a10a78e959a508439c85ce
+Size (rust-std-1.75.0-riscv64gc-unknown-netbsd.tar.xz) = 20720856 bytes
+BLAKE2s (rust-std-1.75.0-sparc64-unknown-netbsd.tar.xz) = d67c447ad6c250032dc99e72ba7e5ff35c78a19ff0ded48bbfd0e87e17d3b5d3
+SHA512 (rust-std-1.75.0-sparc64-unknown-netbsd.tar.xz) = 289c00af0afe2c58db28fd1b4cbc9b2b3bf20fde1e0d0f1072a096006166037a20ef2c825dca06b8a8bf131cd3d338aa2bf25aa509f41931be83806c4ab41eb7
+Size (rust-std-1.75.0-sparc64-unknown-netbsd.tar.xz) = 20400108 bytes
+BLAKE2s (rust-std-1.75.0-x86_64-apple-darwin.tar.gz) = 7dd509b320bbc10735aff79ef4b60b4dd8fa1def707ab4d09a2f50005be3bc49
+SHA512 (rust-std-1.75.0-x86_64-apple-darwin.tar.gz) = 02e1ec9863f0e1f32aa309463a9b518f2e251a506ed3890ec4a5c299a2855e8d662e98bbfadd25314d080b76fffe6bf92e63fc41f8b60385fe4dbd6bdaf9c853
+Size (rust-std-1.75.0-x86_64-apple-darwin.tar.gz) = 41447513 bytes
+BLAKE2s (rust-std-1.75.0-x86_64-unknown-freebsd.tar.gz) = 386bed733db7247868d50680e3bed750a746e38fb0ad6f1ab93dfe4c84792008
+SHA512 (rust-std-1.75.0-x86_64-unknown-freebsd.tar.gz) = 597238100ebb1ab979df031cdd9aa3e3ced126e0d869930dfde6f2a879ce0bd8b19fc1466c63c7187a1f95a8d44f57ca42e1f6cb1a52c4c38c68df6d4d8f72fe
+Size (rust-std-1.75.0-x86_64-unknown-freebsd.tar.gz) = 43144134 bytes
+BLAKE2s (rust-std-1.75.0-x86_64-unknown-linux-gnu.tar.gz) = bd0ad4402f4bd1f91ed91551a4096377f1ee276a3597a26ba28fa31fcbb78bb7
+SHA512 (rust-std-1.75.0-x86_64-unknown-linux-gnu.tar.gz) = cd00268400a8578eed6f96523622ae0f62a5f7723aaabc5b1e78d0827bd0bacd78ccdd183568bec6973672275797fcdb1cec9a77190a8815d76792b722d1df72
+Size (rust-std-1.75.0-x86_64-unknown-linux-gnu.tar.gz) = 44978392 bytes
+BLAKE2s (rust-std-1.75.0-x86_64-unknown-netbsd.tar.xz) = 262b83e77d437e19e744f5f682da9385e82921b3ed9d0ddc2995c04aa357d9a6
+SHA512 (rust-std-1.75.0-x86_64-unknown-netbsd.tar.xz) = 90406592b92d8a9dabd25c3533ae41b83b5e6643933b548219820eedc5df9aa949de0384dc5d96e964c913c13d09081fbaae176d4d74dfe9ebbfbbc3f7f7a6d0
+Size (rust-std-1.75.0-x86_64-unknown-netbsd.tar.xz) = 25261124 bytes
+BLAKE2s (rustc-1.76.0-src.tar.gz) = 6a5d4d681d8b4bfd444d20903f192191cb429f646e00885db569f5729a8c86ea
+SHA512 (rustc-1.76.0-src.tar.gz) = 28432d2863b1181bc55303b532d036b2de0922e1cd340bd12645fcdbc9b8b8fe02de3cfeb31e0878553975693493502d1b2ad6f23ada413086d848684425cdd9
+Size (rustc-1.76.0-src.tar.gz) = 301999191 bytes
+SHA1 (patch-compiler_rustc__codegen__ssa_src_back_linker.rs) = 6049908bb2b5cb2fec84057ceceddd36933592ab
+SHA1 (patch-compiler_rustc__llvm_build.rs) = a4a66d449fc9eb99d648d02a041778a68f4f7ce8
+SHA1 (patch-compiler_rustc__target_src_spec_base_netbsd.rs) = 7fb6ec6d45a9bf4525c675390117e9e61b8023cd
+SHA1 (patch-compiler_rustc__target_src_spec_mod.rs) = a22b5d28997ed9a5565deec9c34322165d563d00
+SHA1 (patch-compiler_rustc__target_src_spec_targets_i586__unknown__netbsd.rs) = 8dff96d99e5f774adeb7c41eabcc3b8737a18b09
+SHA1 (patch-compiler_rustc__target_src_spec_targets_mips64el__unknown__netbsd.rs) = d38c3b43656917e60312a842e6a0c37776bbd5d0
+SHA1 (patch-library_backtrace_src_symbolize_gimli.rs) = 1ab343595e65ff6348f83cffc30e53d764485ff8
+SHA1 (patch-library_backtrace_src_symbolize_gimli_elf.rs) = 3b84a462c6bc8245d579452e4c37e3ce13314952
+SHA1 (patch-library_std_src_sys_unix_mod.rs) = f8669d680f169137ac2891af2977909619366a97
+SHA1 (patch-library_std_src_sys_unix_thread.rs) = 3f79b21fa033782122e09ffc44de55a0e5ecaecb
+SHA1 (patch-library_std_src_sys_unix_thread__parking_netbsd.rs) = c29eb1cf074766d34bd2b8c348ce29c6ae2ba163
+SHA1 (patch-src_bootstrap_bootstrap.py) = 5cd73003292c935ce0e405edd132180233a04857
+SHA1 (patch-src_bootstrap_src_core_build__steps_compile.rs) = 4696304623232acd419ad15597f539a10a014271
+SHA1 (patch-src_bootstrap_src_core_builder.rs) = e35effbe5e6c1ba40b42816f34dc91337b97ec14
+SHA1 (patch-src_bootstrap_src_lib.rs) = d29bc3c0b335d5e788eecbb02fc08966beef0fb1
+SHA1 (patch-src_llvm-project_llvm_CMakeLists.txt) = 7abfabb6ec70df229a69355f8c76825610165c37
+SHA1 (patch-src_llvm-project_llvm_cmake_modules_AddLLVM.cmake) = e1b2eb2f0b3cf1cf87b443656ae306b3242f6b12
+SHA1 (patch-src_llvm-project_llvm_include_llvm-c_DataTypes.h) = cb011fc19957883c01725797f7c85ed1b20f96f1
+SHA1 (patch-src_llvm-project_llvm_include_llvm_Analysis_ConstantFolding.h) = 39d76e6659143d154ae690ac70781b698a2023d8
+SHA1 (patch-src_llvm-project_llvm_lib_Support_BLAKE3_blake3__impl.h) = 67e93f198258a5b59580be20ff47ce58b146c5d5
+SHA1 (patch-src_llvm-project_llvm_utils_FileCheck_FileCheck.cpp) = 2587c2f4d11ad8f75bf8a16de625135b26bacc15
+SHA1 (patch-src_tools_cargo_src_cargo_core_profiles.rs) = e1af7fde97416e0a269ee34efd37f4f47fcf7a95
+SHA1 (patch-src_tools_cargo_tests_testsuite_build.rs) = 60713699c968f3e389f486e796009d31a5048906
+SHA1 (patch-src_tools_rust-installer_install-template.sh) = 6984546c34a2e4d55a6dbe59baa0d4958184e0b7
+SHA1 (patch-vendor_aho-corasick_src_packed_teddy_builder.rs) = cdd3ea21c270fa7a66ffe24adf93d7f871fd8441
+SHA1 (patch-vendor_aho-corasick_src_packed_vector.rs) = 3205c7f698079e045726bfe17a372f71758ab9dd
+SHA1 (patch-vendor_backtrace_src_symbolize_gimli.rs) = b93148ff72a60a17c6a444f2616386c40d872153
+SHA1 (patch-vendor_backtrace_src_symbolize_gimli_elf.rs) = 308538090d9ce11d206d6eef0e675581a1fc6e80
+SHA1 (patch-vendor_cc-1.0.73_src_lib.rs) = 98acea9fb98898f63bbb0f6555df5e4b15da2b85
+SHA1 (patch-vendor_cc_src_lib.rs) = b205e3e8138ce0843ab622b230dd8af2b8781d6f
+SHA1 (patch-vendor_crossbeam-epoch_no__atomic.rs) = a493d0b57a22b9a83c843a1076c91b6d36d2e007
+SHA1 (patch-vendor_crossbeam-utils-0.8.14-no__atomic.rs) = 2053e2cffcb2981435c94df04d0e3f333fa77c07
+SHA1 (patch-vendor_crossbeam-utils_no__atomic.rs) = 26f797159530bc2c5e1be83a225a13e5458879b2
+SHA1 (patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike+netbsd_mips.rs) = 0895df54084281263b9dae67e57f68168fb66bd4
+SHA1 (patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_mod.rs) = 93ba3bc49a37448dcf446b59a3ad74be7ea74215
+SHA1 (patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_riscv64.rs) = 8699853de4225d4e5953d6bf17b59bc463fa7b5d
+SHA1 (patch-vendor_libc-0.2.148_src_unix_solarish_mod.rs) = bb50e900188a9221df96c4b9638425763ea82b04
+SHA1 (patch-vendor_libc_src_unix_solarish_mod.rs) = 4d16d9545b4bee3155664c4e7ce12082a7f4400e
+SHA1 (patch-vendor_lzma-sys_config.h) = b654c7e129fa02697734bc87173f89b3056a5437
+SHA1 (patch-vendor_nix-0.26.2_src_sys_signal.rs) = 0105a5c5f68fdc40c5b0a9c460b494e066f664ec
+SHA1 (patch-vendor_openssl-src_openssl_Configurations_10-main.conf) = 9813c98a0551dba197ff47e9ac0f766c50351569
+SHA1 (patch-vendor_openssl-src_src_lib.rs) = d7fce1d3b87261bc6d8a12be41e31816727cf917
+SHA1 (patch-vendor_openssl-sys_build_find__normal.rs) = 98927415bd3517a7492b87da99c8933c19c7299e
+SHA1 (patch-vendor_openssl-sys_build_main.rs) = 20618b13b56cc93bb5c051f96046604dd4977345
+SHA1 (patch-vendor_rustc-ap-rustc__target_src_spec_aarch64__be__unknown__netbsd.rs) = 4e86aec4c89db9a331950a12f8ec7b8aaa50eed7
+SHA1 (patch-vendor_stacker_src_lib.rs) = e00a1e95eb16540ff182715db778bf97ebd07a5e
+SHA1 (patch-vendor_target-lexicon_src_targets.rs) = 65ffbc524705bddd5233b3766b3f271dfea5d625
+SHA1 (patch-vendor_valuable_no__atomic.rs) = 3a40cb846bf1fae864c55a0ddba8fdeb5efcba72
Index: pkgsrc/lang/rust176/options.mk
diff -u /dev/null pkgsrc/lang/rust176/options.mk:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/options.mk Sun Jul 7 10:41:20 2024
@@ -0,0 +1,77 @@
+# $NetBSD: options.mk,v 1.1 2024/07/07 10:41:20 wiz Exp $
+
+PKG_OPTIONS_VAR= PKG_OPTIONS.rust
+PKG_SUPPORTED_OPTIONS+= rust-cargo-static rust-docs
+
+.include "../../mk/bsd.fast.prefs.mk"
+
+# The bundled LLVM current has issues building on SunOS.
+.if ${OPSYS} != "SunOS"
+PKG_SUPPORTED_OPTIONS+= rust-internal-llvm
+# There may be compatibility issues with the base LLVM on e.g. NetBSD.
+. if !empty(HAVE_LLVM) || ${MACHINE_PLATFORM:MDarwin-*-aarch64}
+PKG_SUGGESTED_OPTIONS+= rust-internal-llvm
+. endif
+.endif
+
+# If cross-building, always use the internal LLVM
+.if !empty(TARGET)
+PKG_SUGGESTED_OPTIONS+= rust-internal-llvm
+.endif
+
+# Bundle OpenSSL and curl into the cargo binary when producing
+# bootstraps on NetBSD.
+.if ${OPSYS} == "NetBSD" && ${BUILD_TARGET} == "dist"
+PKG_SUGGESTED_OPTIONS+= rust-cargo-static
+.endif
+
+PKG_OPTIONS_LEGACY_OPTS+= rust-llvm:rust-internal-llvm
+
+.include "../../mk/bsd.options.mk"
+
+#
+# Use the internal copy of LLVM or the external one?
+#
+.if empty(PKG_OPTIONS:Mrust-internal-llvm)
+# External LLVM must be >= 16, ref. RELEASES.md
+# but lang/llvm enforces >= 18 anyway
+#BUILDLINK_API_DEPENDS.llvm+= llvm>=16
+.include "../../lang/libunwind/buildlink3.mk"
+.include "../../lang/llvm/buildlink3.mk"
+CONFIGURE_ARGS+= --enable-llvm-link-shared
+CONFIGURE_ARGS+= --llvm-libunwind=system
+CONFIGURE_ARGS+= --llvm-root=${BUILDLINK_PREFIX.llvm}
+.endif
+
+# NetBSD/sparc64 when using the internal LLVM needs
+# to not use gcc 10.4 or 10.5 (as found in 10.0_BETA or 10.0), ref.
+# https://github.com/rust-lang/rust/issues/117231
+# (however, gcc from 9.x produces a working LLVM).
+.if ${MACHINE_PLATFORM:MNetBSD-10.*-sparc64}
+. if !empty(PKG_OPTIONS:Mrust-internal-llvm)
+# Require GCC 12 (from pkgsrc) to correctly build the embedded LLVM (17.x).
+GCC_REQD+= 12
+. endif
+.endif
+
+#
+# Link cargo statically against "native" libraries.
+# (openssl and curl specifically).
+#
+.if !empty(PKG_OPTIONS:Mrust-cargo-static)
+CONFIGURE_ARGS+= --enable-cargo-native-static
+.else
+BUILDLINK_API_DEPENDS.nghttp2+= nghttp2>=1.41.0
+BUILDLINK_API_DEPENDS.curl+= curl>=7.67.0
+.include "../../www/curl/buildlink3.mk"
+.include "../../security/openssl/buildlink3.mk"
+.endif
+
+#
+# Install documentation.
+#
+.if !empty(PKG_OPTIONS:Mrust-docs)
+CONFIGURE_ARGS+= --enable-docs
+.else
+CONFIGURE_ARGS+= --disable-docs
+.endif
Index: pkgsrc/lang/rust176/files/gcc-wrap
diff -u /dev/null pkgsrc/lang/rust176/files/gcc-wrap:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/files/gcc-wrap Sun Jul 7 10:41:20 2024
@@ -0,0 +1,199 @@
+#! /bin/sh
+
+# Root of targets tools + dest directories
+# or unset to default to a native build.
+
+# This script assumes target tools in $root/tools
+# and target's destdir in $root/dest, the result of a NetBSD build.sh.
+# ...or the native root, when we don't cross-compile
+root=${CROSS_ROOT:-/}
+
+incadd=""
+native=false
+if [ $root = "/" ]; then
+ native=true
+else
+ # What's the tools/bin prefix (if we're cross-building)?
+ gnuarch=${GNU_CROSS_TARGET:?}
+
+ # A special hack for netbsd-8 targets.
+ # netbsd-8 has gcc 5.5, but llvm and rust needs >= 7
+ # so we build tools from -9, and try to use that, but
+ # then the include path becomes wrong, and <stdatomic.h>
+ # is no longer picked up automatically by the compiler
+ # from the target destination directory
+ case $gnuarch in
+ sparc64*) incadd="-I=/usr/include/gcc-5"
+ ;;
+
+ # immintrin & from gcc-5 not
+ # compatible with gcc7, apparently
+ i[3456]86*) incadd="-I=/usr/include/gcc-7"
+ ;;
+
+ # mips64 does soft-float
+ mips64*) madd="-msoft-float"
+ ;;
+ esac
+ # We build both for -8 and -9 due to ABI differences,
+ # so can't just test $gnuarch... Yes, a vile hack.
+ if [ "$root" = "/u/macppc" ]; then
+ incadd="-I=/usr/include/gcc-5"
+ fi
+fi
+
+# Who are we a wrapper for? (Typically either gcc or c++)
+who=$(basename $0 | sed -e 's/-wrap$//')
+
+args=""
+if [ ! -z "$madd" ]; then
+ args="$args $madd"
+fi
+
+# May need to add $linkadd before first -l or fist -L
+linkadd="-Wl,--sysroot=${root}/dest"
+# (perhaps this is overly cautious, other adjustments we do
+# below may be sufficient...)
+# Lib directories to ensure we search and have in run-path
+libs="/lib /usr/lib /usr/pkg/lib"
+
+for d in $libs; do
+ if ! $native; then
+ linkadd="$linkadd -L=$d"
+ linkadd="$linkadd -Wl,-rpath-link=${root}/dest/$d"
+ fi
+ # Run-path is for when we execute on the target,
+ # so no $root prefix
+ linkadd="$linkadd -Wl,-rpath,$d"
+done
+
+# ...and add a placeholder so we can tweak RPATH with chrpath,
+# since chrpath can't extend the length of the run path
+# (This may also not be needed, we use LD_LIBRARY_PATH instead)
+placeholder="placeholder-$(date | openssl dgst -sha1 | \
+ awk '{ print $2 }')"
+linkadd="$linkadd -Wl,-rpath,/$placeholder"
+# the / is a sneaky attempt to let it past cwrapper...
+
+# More debugging
+linkadd="$linkadd -Wl,--verbose"
+
+linktweaked=false
+
+# Step through args, tweak where required
+set -- "$@"
+while [ $# -gt 0 ]; do
+ case "$1" in
+# Insert = at the front of -isystem args.
+# This is to get --sysroot prepended, so that
+# we pick up the correct set of header files.
+# (I thought this wasn't reqired, but apparently it is...)
+ -isystem)
+ shift
+ args="$args -isystem =$1"
+ ;;
+# Also doctor -I directives of known paths and
+# redirect them to the --sysroot.
+ -I/usr/include)
+ args="$args -I=/usr/include"
+ ;;
+ -I/usr/include/krb5)
+ args="$args -I=/usr/include/krb5"
+ ;;
+ -I/usr/pkg/include)
+# Try to drop this...
+ if ! $native; then
+ args="$args -I=/usr/pkg/include"
+ fi
+ ;;
+ -I)
+ if [ $2 = "/usr/include" ]; then
+ args="$args -I=/usr/include"
+ shift
+ elif [ $2 = "/usr/include/krb5" ]; then
+ args="$args -I=/usr/include/krb5"
+ shift
+ elif [ $2 = "/usr/pkg/include" ]; then
+# Try to drop this too...
+ if ! $native; then
+ args="$args -I=/usr/pkg/include"
+ fi
+ shift
+ else
+ args="$args -I"
+ fi
+ ;;
+ -l*)
+ if ! $linktweaked; then
+ args="$args $linkadd"
+ linktweaked=true
+ fi
+ args="$args $1"
+ ;;
+ -L)
+ if ! $linktweaked; then
+ args="$args $linkadd"
+ linktweaked=true
+ fi
+ shift
+ tweaked=false
+ # redirect these to -Wl,--sysroot
+ for d in /lib /usr/lib /usr/pkg/lib; do
+ if [ $1 = $d ]; then
+ args="$args -L =$d"
+ tweaked=true
+ fi
+ done
+ # Not redirected? If so we need to add
+ if ! $tweaked; then
+ args="$args -L $1"
+ fi
+ ;;
+
+ -L/lib)
+ if ! $linktweaked; then
+ args="$args $linkadd"
+ linktweaked=true
+ fi
+ args="$args -L=/lib"
+ ;;
+ -L/usr/lib)
+ if ! $linktweaked; then
+ args="$args $linkadd"
+ linktweaked=true
+ fi
+ args="$args -L=/usr/lib"
+ ;;
+ -L/usr/pkg/lib)
+ if ! $linktweaked; then
+ args="$args $linkadd"
+ linktweaked=true
+ fi
+ args="$args -L=/usr/pkg/lib"
+ ;;
+ -Wl,--enable-new-dtags)
+ # ignore
+ ;;
+ *)
+ args="$args $1"
+ ;;
+ esac
+ shift
+done
+
+if $native; then
+ # Try to avoid cwrappers, which does "undocumented magic"
+ # by invoking the compiler "directly".
+ #cmd="/usr/bin/${who} $args"
+ # (however, this wrapper isn't used when buliding natively...)
+ cmd="${who} $args"
+else
+ cmd="${root}/tools/bin/${gnuarch}-${who} \
+ --sysroot=${root}/dest \
+ $incadd \
+ $args"
+fi
+
+# Cannot echo to stdout, messes up e.g. "gcc -print-prog-name=ld" output...
+#echo $cmd >> /tmp/gcc-wrap.log
+exec $cmd
Index: pkgsrc/lang/rust176/patches/patch-compiler_rustc__codegen__ssa_src_back_linker.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-compiler_rustc__codegen__ssa_src_back_linker.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-compiler_rustc__codegen__ssa_src_back_linker.rs Sun Jul 7 10:41:20 2024
@@ -0,0 +1,27 @@
+$NetBSD: patch-compiler_rustc__codegen__ssa_src_back_linker.rs,v 1.1 2024/07/07 10:41:20 wiz Exp $
+
+Do not use @rpath on Darwin.
+Find external libunwind on Linux.
+
+--- compiler/rustc_codegen_ssa/src/back/linker.rs.orig 2024-04-18 08:34:17.044783799 +0000
++++ compiler/rustc_codegen_ssa/src/back/linker.rs
+@@ -312,7 +312,7 @@ impl<'a> GccLinker<'a> {
+ // principled solution at some point to force the compiler to pass
+ // the right `-Wl,-install_name` with an `@rpath` in it.
+ if self.sess.opts.cg.rpath || self.sess.opts.unstable_opts.osx_rpath_install_name {
+- let mut rpath = OsString::from("@rpath/");
++ let mut rpath = OsString::from("@PREFIX@/lib/");
+ rpath.push(out_filename.file_name().unwrap());
+ self.linker_args(&[OsString::from("-install_name"), rpath]);
+ }
+@@ -462,6 +462,10 @@ impl<'a> Linker for GccLinker<'a> {
+ self.linker_arg("--as-needed");
+ }
+ }
++ if self.sess.target.os.contains("linux") && lib == "unwind" {
++ self.linker_arg("-rpath,@PREFIX@/lib");
++ self.linker_arg("-L@PREFIX@/lib");
++ }
+ }
+ fn link_staticlib(&mut self, lib: &str, verbatim: bool) {
+ self.hint_static();
Index: pkgsrc/lang/rust176/patches/patch-compiler_rustc__llvm_build.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-compiler_rustc__llvm_build.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-compiler_rustc__llvm_build.rs Sun Jul 7 10:41:20 2024
@@ -0,0 +1,50 @@
+$NetBSD: patch-compiler_rustc__llvm_build.rs,v 1.1 2024/07/07 10:41:20 wiz Exp $
+
+Fix build on NetBSD HEAD-llvm. XXX there is probably a better way to do this.
+
+Pick up -latomic tweak from
+https://github.com/rust-lang/rust/issues/104220
+and
+https://github.com/rust-lang/rust/pull/104572
+
+--- compiler/rustc_llvm/build.rs.orig 2023-10-03 02:52:17.000000000 +0000
++++ compiler/rustc_llvm/build.rs
+@@ -249,6 +249,10 @@ fn main() {
+ {
+ // 32-bit targets need to link libatomic.
+ println!("cargo:rustc-link-lib=atomic");
++ if target.contains("netbsd")
++ {
++ println!("cargo:rustc-link-lib=z");
++ }
+ } else if target.contains("windows-gnu") {
+ println!("cargo:rustc-link-lib=shell32");
+ println!("cargo:rustc-link-lib=uuid");
+@@ -261,7 +265,11 @@ fn main() {
+ // On NetBSD/i386, gcc and g++ is built for i486 (to maximize backward compat)
+ // However, LLVM insists on using 64-bit atomics.
+ // This gives rise to a need to link rust itself with -latomic for these targets
+- if target.starts_with("i586") || target.starts_with("i686") {
++ if target.starts_with("i386")
++ || target.starts_with("i486")
++ || target.starts_with("i586")
++ || target.starts_with("i686")
++ {
+ println!("cargo:rustc-link-lib=atomic");
+ }
+ println!("cargo:rustc-link-lib=z");
+@@ -352,7 +360,13 @@ fn main() {
+ "c++"
+ } else if target.contains("netbsd") && llvm_static_stdcpp.is_some() {
+ // NetBSD uses a separate library when relocation is required
+- "stdc++_p"
++ if env::var_os("PKGSRC_HAVE_LIBCPP").is_some() {
++ "c++_pic"
++ } else {
++ "stdc++_pic"
++ }
++ } else if env::var_os("PKGSRC_HAVE_LIBCPP").is_some() {
++ "c++"
+ } else if llvm_use_libcxx.is_some() {
+ "c++"
+ } else {
Index: pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_base_netbsd.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_base_netbsd.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_base_netbsd.rs Sun Jul 7 10:41:20 2024
@@ -0,0 +1,32 @@
+$NetBSD: patch-compiler_rustc__target_src_spec_base_netbsd.rs,v 1.1 2024/07/07 10:41:20 wiz Exp $
+
+For the benefit of powerpc, when libatomic-links is installed,
+search the directory containing the symlinks to -latomic.
+
+--- compiler/rustc_target/src/spec/base/netbsd.rs.orig 2024-01-06 19:57:14.887897867 +0000
++++ compiler/rustc_target/src/spec/base/netbsd.rs
+@@ -1,12 +1,23 @@
+-use crate::spec::{cvs, RelroLevel, TargetOptions};
++use crate::spec::{cvs, Cc, Lld, RelroLevel, LinkerFlavor, TargetOptions};
+
+ pub fn opts() -> TargetOptions {
++ let add_linker_paths =
++ &[
++ // For the benefit of powerpc, when libatomic-links is installed,
++ "-Wl,-R@PREFIX@/lib/libatomic",
++ "-Wl,-L@PREFIX@/lib/libatomic",
++ ];
++ let pre_link_args = TargetOptions::link_args(
++ LinkerFlavor::Gnu(Cc::Yes, Lld::No),
++ add_linker_paths
++ );
+ TargetOptions {
+ os: "netbsd".into(),
+ dynamic_linking: true,
+ families: cvs!["unix"],
+ no_default_libraries: false,
+ has_rpath: true,
++ pre_link_args,
+ position_independent_executables: true,
+ relro_level: RelroLevel::Full,
+ use_ctors_section: true,
Index: pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_mod.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_mod.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_mod.rs Sun Jul 7 10:41:20 2024
@@ -0,0 +1,14 @@
+$NetBSD: patch-compiler_rustc__target_src_spec_mod.rs,v 1.1 2024/07/07 10:41:20 wiz Exp $
+
+Add entry for NetBSD/mips64el.
+
+--- compiler/rustc_target/src/spec/mod.rs.orig 2024-01-13 14:20:59.236278792 +0000
++++ compiler/rustc_target/src/spec/mod.rs
+@@ -1532,6 +1532,7 @@ supported_targets! {
+ ("armv7-unknown-netbsd-eabihf", armv7_unknown_netbsd_eabihf),
+ ("i586-unknown-netbsd", i586_unknown_netbsd),
+ ("i686-unknown-netbsd", i686_unknown_netbsd),
++ ("mips64el-unknown-netbsd", mips64el_unknown_netbsd),
+ ("mipsel-unknown-netbsd", mipsel_unknown_netbsd),
+ ("powerpc-unknown-netbsd", powerpc_unknown_netbsd),
+ ("riscv64gc-unknown-netbsd", riscv64gc_unknown_netbsd),
Index: pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_targets_i586__unknown__netbsd.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_targets_i586__unknown__netbsd.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_targets_i586__unknown__netbsd.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,16 @@
+$NetBSD: patch-compiler_rustc__target_src_spec_targets_i586__unknown__netbsd.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Change to Inline stack probing, as suggested by
+https://github.com/rust-lang/rust/pull/120411
+
+--- compiler/rustc_target/src/spec/targets/i586_unknown_netbsd.rs.orig 2024-02-26 11:56:11.087253310 +0000
++++ compiler/rustc_target/src/spec/targets/i586_unknown_netbsd.rs
+@@ -4,7 +4,7 @@ pub fn target() -> Target {
+ let mut base = base::netbsd::opts();
+ base.cpu = "pentium".into();
+ base.max_atomic_width = Some(64);
+- base.stack_probes = StackProbeType::Call;
++ base.stack_probes = StackProbeType::Inline;
+
+ Target {
+ llvm_target: "i586-unknown-netbsdelf".into(),
Index: pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_targets_mips64el__unknown__netbsd.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_targets_mips64el__unknown__netbsd.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-compiler_rustc__target_src_spec_targets_mips64el__unknown__netbsd.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,29 @@
+$NetBSD: patch-compiler_rustc__target_src_spec_targets_mips64el__unknown__netbsd.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Provide a mips64el target with N32, suitable for NetBSD/mips64el.
+
+--- compiler/rustc_target/src/spec/targets/mips64el_unknown_netbsd.rs.orig 2024-01-13 14:16:30.122042614 +0000
++++ compiler/rustc_target/src/spec/targets/mips64el_unknown_netbsd.rs
+@@ -0,0 +1,22 @@
++use crate::abi::Endian;
++use crate::spec::{base, Target, TargetOptions};
++
++pub fn target() -> Target {
++ let mut base = base::netbsd::opts();
++ base.max_atomic_width = Some(32);
++ base.cpu = "mips32".into();
++
++ Target {
++ llvm_target: "mipsel-unknown-netbsd".into(),
++ pointer_width: 32,
++ data_layout: "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".into(),
++ arch: "mips".into(),
++ options: TargetOptions {
++ abi: "n32".into(),
++ features: "+soft-float,+abi=n32".into(),
++ endian: Endian::Little,
++ mcount: "__mcount".into(),
++ ..base
++ },
++ }
++}
Index: pkgsrc/lang/rust176/patches/patch-library_backtrace_src_symbolize_gimli.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-library_backtrace_src_symbolize_gimli.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-library_backtrace_src_symbolize_gimli.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,14 @@
+$NetBSD: patch-library_backtrace_src_symbolize_gimli.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Add NetBSD to the family who is in the unix class.
+
+--- library/backtrace/src/symbolize/gimli.rs.orig 2022-04-04 09:41:26.000000000 +0000
++++ library/backtrace/src/symbolize/gimli.rs
+@@ -38,6 +38,7 @@ cfg_if::cfg_if! {
+ target_os = "ios",
+ target_os = "linux",
+ target_os = "macos",
++ target_os = "netbsd",
+ target_os = "openbsd",
+ target_os = "solaris",
+ target_os = "illumos",
Index: pkgsrc/lang/rust176/patches/patch-library_backtrace_src_symbolize_gimli_elf.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-library_backtrace_src_symbolize_gimli_elf.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-library_backtrace_src_symbolize_gimli_elf.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,25 @@
+$NetBSD: patch-library_backtrace_src_symbolize_gimli_elf.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Make NetBSD also find its debug libraries, if present.
+
+--- library/backtrace/src/symbolize/gimli/elf.rs.orig 2022-04-04 09:41:26.000000000 +0000
++++ library/backtrace/src/symbolize/gimli/elf.rs
+@@ -304,11 +304,17 @@ fn decompress_zlib(input: &[u8], output:
+ }
+ }
+
++#[cfg(target_os = "netbsd")]
++const DEBUG_PATH: &[u8] = b"/usr/libdata/debug";
++#[cfg(not(target_os = "netbsd"))]
+ const DEBUG_PATH: &[u8] = b"/usr/lib/debug";
+
+ fn debug_path_exists() -> bool {
+ cfg_if::cfg_if! {
+- if #[cfg(any(target_os = "freebsd", target_os = "hurd", target_os = "linux"))] {
++ if #[cfg(any(target_os = "freebsd",
++ target_os = "netbsd",
++ target_os = "hurd",
++ target_os = "linux"))] {
+ use core::sync::atomic::{AtomicU8, Ordering};
+ static DEBUG_PATH_EXISTS: AtomicU8 = AtomicU8::new(0);
+
Index: pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_mod.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_mod.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_mod.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,14 @@
+$NetBSD: patch-library_std_src_sys_unix_mod.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Add libexecinfo for backtrace() on NetBSD.
+
+--- library/std/src/sys/unix/mod.rs.orig 2021-02-10 17:36:44.000000000 +0000
++++ library/std/src/sys/unix/mod.rs
+@@ -269,6 +269,7 @@ cfg_if::cfg_if! {
+ #[link(name = "pthread")]
+ extern "C" {}
+ } else if #[cfg(target_os = "netbsd")] {
++ #[link(name = "execinfo")]
+ #[link(name = "pthread")]
+ #[link(name = "rt")]
+ extern "C" {}
Index: pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_thread.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_thread.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_thread.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,56 @@
+$NetBSD: patch-library_std_src_sys_unix_thread.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Fix stack-clash on SunOS.
+
+Undo new(ish) code (from 1.72.0) which attempts to count threads/CPUs
+on NetBSD; somehow it is causing crashes in bootstrap() on certain
+CPU architectures (i386, powerpc, armv7, but not riscv64, aarch64
+or amd64); _cpuset_isset() crashes with SEGV. And according to
+what I hear, the code is bogus; by default threads do not have
+affinity to any specific set of CPUs in NetBSD, and trying to
+replicate this with a simple C program always results in 0.
+So rip the newish code out with prejudice, and instead fallback to
+the sysctl() method of getting "number of CPUs" which was used
+before (and is still present, following the ripped-out code).
+
+--- library/std/src/sys/unix/thread.rs.orig 2020-10-07 07:53:22.000000000 +0000
++++ library/std/src/sys/unix/thread.rs
+@@ -352,29 +352,6 @@ pub fn available_parallelism() -> io::Re
+ }
+ }
+
+- #[cfg(target_os = "netbsd")]
+- {
+- unsafe {
+- let set = libc::_cpuset_create();
+- if !set.is_null() {
+- let mut count: usize = 0;
+- if libc::pthread_getaffinity_np(libc::pthread_self(), libc::_cpuset_size(set), set) == 0 {
+- for i in 0..u64::MAX {
+- match libc::_cpuset_isset(i, set) {
+- -1 => break,
+- 0 => continue,
+- _ => count = count + 1,
+- }
+- }
+- }
+- libc::_cpuset_destroy(set);
+- if let Some(count) = NonZeroUsize::new(count) {
+- return Ok(count);
+- }
+- }
+- }
+- }
+-
+ let mut cpus: libc::c_uint = 0;
+ let mut cpus_size = crate::mem::size_of_val(&cpus);
+
+@@ -812,7 +789,7 @@ pub mod guard {
+ let page_size = os::page_size();
+ PAGE_SIZE.store(page_size, Ordering::Relaxed);
+
+- if cfg!(all(target_os = "linux", not(target_env = "musl"))) {
++ if cfg!(any(target_os = "solaris", all(target_os = "linux", not(target_env = "musl")))) {
+ // Linux doesn't allocate the whole stack right away, and
+ // the kernel has its own stack-guard mechanism to fault
+ // when growing too close to an existing mapping. If we map
Index: pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_thread__parking_netbsd.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_thread__parking_netbsd.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-library_std_src_sys_unix_thread__parking_netbsd.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,34 @@
+$NetBSD: patch-library_std_src_sys_unix_thread__parking_netbsd.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Try to cast to make this build, to avoid
+
+error[E0277]: the trait bound `i32: core::convert::From<u32>` is not satisfied
+ --> library/std/src/sys/unix/thread_parking/netbsd.rs:37:37
+ |
+37 | tv_nsec: dur.subsec_nanos().into(),
+ | ^^^^ the trait `core::convert::From<u32>` is not implemented for `i32`
+ |
+ = help: the following other types implement trait `core::convert::From<T>`:
+ <i32 as core::convert::From<NonZeroI32>>
+ <i32 as core::convert::From<bool>>
+ <i32 as core::convert::From<i16>>
+ <i32 as core::convert::From<i8>>
+ <i32 as core::convert::From<u16>>
+ <i32 as core::convert::From<u8>>
+ = note: required for `u32` to implement `core::convert::Into<i32>`
+
+For more information about this error, try `rustc --explain E0277`.
+
+This to un-break the 32-bit ports ... again.
+
+--- library/std/src/sys/unix/thread_parking/netbsd.rs.orig 2023-03-06 15:58:58.000000000 +0000
++++ library/std/src/sys/unix/thread_parking/netbsd.rs
+@@ -34,7 +34,7 @@ pub fn park_timeout(dur: Duration, hint:
+ // Saturate so that the operation will definitely time out
+ // (even if it is after the heat death of the universe).
+ tv_sec: dur.as_secs().try_into().ok().unwrap_or(time_t::MAX),
+- tv_nsec: dur.subsec_nanos().into(),
++ tv_nsec: (dur.subsec_nanos() as libc::c_long).into(),
+ };
+
+ // Timeout needs to be mutable since it is modified on NetBSD 9.0 and
Index: pkgsrc/lang/rust176/patches/patch-src_bootstrap_bootstrap.py
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_bootstrap_bootstrap.py:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_bootstrap_bootstrap.py Sun Jul 7 10:41:21 2024
@@ -0,0 +1,47 @@
+$NetBSD: patch-src_bootstrap_bootstrap.py,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Use `uname -p` on NetBSD, as that is reliable and sensible there.
+Handle earmv[67]hf for NetBSD.
+Also use @PREFIX@ and not $ORIGIN in rpath.
+
+--- src/bootstrap/bootstrap.py.orig 2023-07-12 03:32:40.000000000 +0000
++++ src/bootstrap/bootstrap.py
+@@ -271,6 +271,11 @@ def default_build_triple(verbose):
+ 'GNU': 'unknown-hurd',
+ }
+
++ # For NetBSD, use `uname -p`, as there it is reliable & sensible
++ if kernel == 'NetBSD':
++ cputype = subprocess.check_output(
++ ['uname', '-p']).strip().decode(default_encoding)
++
+ # Consider the direct transformation first and then the special cases
+ if kernel in kerneltype_mapper:
+ kernel = kerneltype_mapper[kernel]
+@@ -374,10 +379,16 @@ def default_build_triple(verbose):
+ kernel = 'linux-androideabi'
+ else:
+ kernel += 'eabihf'
+- elif cputype in {'armv7l', 'armv8l'}:
++ elif cputype in {'armv6hf', 'earmv6hf'}:
++ cputype = 'armv6'
++ if kernel == 'unknown-netbsd':
++ kernel += '-eabihf'
++ elif cputype in {'armv7l', 'earmv7hf', 'armv8l'}:
+ cputype = 'armv7'
+ if kernel == 'linux-android':
+ kernel = 'linux-androideabi'
++ elif kernel == 'unknown-netbsd':
++ kernel += '-eabihf'
+ else:
+ kernel += 'eabihf'
+ elif cputype == 'mips':
+@@ -735,7 +746,7 @@ class RustBuild(object):
+ rpath_entries = [
+ # Relative default, all binary and dynamic libraries we ship
+ # appear to have this (even when `../lib` is redundant).
+- "$ORIGIN/../lib",
++ "@PREFIX@/lib",
+ os.path.join(os.path.realpath(nix_deps_dir), "lib")
+ ]
+ patchelf_args = ["--set-rpath", ":".join(rpath_entries)]
Index: pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_core_build__steps_compile.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_core_build__steps_compile.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_core_build__steps_compile.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,15 @@
+$NetBSD: patch-src_bootstrap_src_core_build__steps_compile.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+On Darwin, do not use @rpath for internal libraries.
+
+--- src/bootstrap/src/core/build_steps/compile.rs.orig 2024-01-06 20:42:20.028206400 +0000
++++ src/bootstrap/src/core/build_steps/compile.rs
+@@ -626,7 +626,7 @@ fn copy_sanitizers(
+ || target == "x86_64-apple-ios"
+ {
+ // Update the library’s install name to reflect that it has been renamed.
+- apple_darwin_update_library_name(&dst, &format!("@rpath/{}", &runtime.name));
++ apple_darwin_update_library_name(&dst, &format!("@PREFIX@/lib/{}", &runtime.name));
+ // Upon renaming the install name, the code signature of the file will invalidate,
+ // so we will sign it again.
+ apple_darwin_sign_file(&dst);
Index: pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_core_builder.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_core_builder.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_core_builder.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,28 @@
+$NetBSD: patch-src_bootstrap_src_core_builder.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Use @PREFIX@, not $ORIGIN in rpath.
+Find external libunwind on Linux.
+
+--- src/bootstrap/src/core/builder.rs.orig 2024-04-18 09:00:07.530512451 +0000
++++ src/bootstrap/src/core/builder.rs
+@@ -1687,7 +1687,7 @@ impl<'a> Builder<'a> {
+ Some(format!("-Wl,-rpath,@loader_path/../{libdir}"))
+ } else if !target.is_windows() && !target.contains("aix") && !target.contains("xous") {
+ rustflags.arg("-Clink-args=-Wl,-z,origin");
+- Some(format!("-Wl,-rpath,$ORIGIN/../{libdir}"))
++ Some(format!("-Wl,-rpath,@PREFIX@/{libdir}"))
+ } else {
+ None
+ };
+@@ -2130,6 +2130,11 @@ impl<'a> Builder<'a> {
+ rustflags.arg("-Zinline-mir");
+ }
+
++ // added for pkgsrc libunwind
++ if target.contains("linux") {
++ rustflags.arg("-Clink-args=-Wl,-rpath,@PREFIX@/lib,-L@PREFIX@/lib");
++ }
++
+ // set rustc args passed from command line
+ let rustc_args =
+ self.config.cmd.rustc_args().iter().map(|s| s.to_string()).collect::<Vec<_>>();
Index: pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_lib.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_lib.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_bootstrap_src_lib.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,23 @@
+$NetBSD: patch-src_bootstrap_src_lib.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Don't filter out optimization flags.
+FreeBSD has a particular C++ runtime library name
+
+--- src/bootstrap/src/lib.rs.orig 2024-01-06 20:52:50.892941220 +0000
++++ src/bootstrap/src/lib.rs
+@@ -1195,13 +1195,13 @@ impl Build {
+ .args()
+ .iter()
+ .map(|s| s.to_string_lossy().into_owned())
+- .filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))
+ .collect::<Vec<String>>();
+
+ // If we're compiling C++ on macOS then we add a flag indicating that
+ // we want libc++ (more filled out than libstdc++), ensuring that
+ // LLVM/etc are all properly compiled.
+- if matches!(c, CLang::Cxx) && target.contains("apple-darwin") {
++ if matches!(c, CLang::Cxx) &&
++ (target.contains("apple-darwin") || target.contains("freebsd")) {
+ base.push("-stdlib=libc++".into());
+ }
+
Index: pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_CMakeLists.txt
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_CMakeLists.txt:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_CMakeLists.txt Sun Jul 7 10:41:21 2024
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_llvm-project_llvm_CMakeLists.txt,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Don't implement sys/regset.h workaround, fix source instead.
+
+--- src/llvm-project/llvm/CMakeLists.txt.orig 2018-03-10 02:51:13.000000000 +0000
++++ src/llvm-project/llvm/CMakeLists.txt
+@@ -939,11 +939,6 @@ if(LLVM_TARGET_IS_CROSSCOMPILE_HOST)
+ # (this is a variable that CrossCompile sets on recursive invocations)
+ endif()
+
+-if( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
+- # special hack for Solaris to handle crazy system sys/regset.h
+- include_directories("${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/Solaris")
+-endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
+-
+ # Make sure we don't get -rdynamic in every binary. For those that need it,
+ # use export_executable_symbols(target).
+ set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
Index: pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_cmake_modules_AddLLVM.cmake
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_cmake_modules_AddLLVM.cmake:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_cmake_modules_AddLLVM.cmake Sun Jul 7 10:41:21 2024
@@ -0,0 +1,49 @@
+$NetBSD: patch-src_llvm-project_llvm_cmake_modules_AddLLVM.cmake,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+On Darwin, use correct install-name for shared libraries.
+
+Undo some of the RPATH magic so that cross-building
+works inside pkgsrc again (indirectly eliminates $ORIGIN rpath
+handling / editing, $ORIGIN handling is partially undone by cwrappers
+in pkgsrc).
+
+--- src/llvm-project/llvm/cmake/modules/AddLLVM.cmake.orig 2023-07-12 03:33:01.000000000 +0000
++++ src/llvm-project/llvm/cmake/modules/AddLLVM.cmake
+@@ -2311,7 +2311,7 @@ function(llvm_setup_rpath name)
+ endif()
+
+ if (APPLE)
+- set(_install_name_dir INSTALL_NAME_DIR "@rpath")
++ set(_install_name_dir INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
+ set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
+ elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS)
+ # $ORIGIN is not interpreted at link time by aix ld.
+@@ -2320,8 +2320,7 @@ function(llvm_setup_rpath name)
+ # FIXME: update this when there is better solution.
+ set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
+ elseif(UNIX)
+- set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
+- set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}")
++ set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
+ if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
+ set_property(TARGET ${name} APPEND_STRING PROPERTY
+ LINK_FLAGS " -Wl,-z,origin ")
+@@ -2335,16 +2334,9 @@ function(llvm_setup_rpath name)
+ return()
+ endif()
+
+- # Enable BUILD_WITH_INSTALL_RPATH unless CMAKE_BUILD_RPATH is set and not
+- # building for macOS or AIX, as those platforms seemingly require it.
+- # On AIX, the tool chain doesn't support modifying rpaths/libpaths for XCOFF
+- # on install at the moment, so BUILD_WITH_INSTALL_RPATH is required.
++ # Enable BUILD_WITH_INSTALL_RPATH unless CMAKE_BUILD_RPATH is set.
+ if("${CMAKE_BUILD_RPATH}" STREQUAL "")
+- if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin|AIX")
+- set_property(TARGET ${name} PROPERTY BUILD_WITH_INSTALL_RPATH ON)
+- else()
+- set_property(TARGET ${name} APPEND PROPERTY BUILD_RPATH "${_build_rpath}")
+- endif()
++ set_property(TARGET ${name} PROPERTY BUILD_WITH_INSTALL_RPATH ON)
+ endif()
+
+ set_target_properties(${name} PROPERTIES
Index: pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_include_llvm-c_DataTypes.h
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_include_llvm-c_DataTypes.h:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_include_llvm-c_DataTypes.h Sun Jul 7 10:41:21 2024
@@ -0,0 +1,34 @@
+$NetBSD: patch-src_llvm-project_llvm_include_llvm-c_DataTypes.h,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Don't implement sys/regset.h workaround, fix source instead.
+
+--- src/llvm-project/llvm/include/llvm-c/DataTypes.h.orig 2021-04-17 01:50:37.000000000 +0000
++++ src/llvm-project/llvm/include/llvm-c/DataTypes.h
+@@ -77,4 +77,27 @@ typedef signed int ssize_t;
+ # define UINT64_MAX 0xffffffffffffffffULL
+ #endif
+
++#if defined(__sun)
++#include <sys/regset.h>
++#undef CS
++#undef DS
++#undef ES
++#undef FS
++#undef GS
++#undef SS
++#undef EAX
++#undef ECX
++#undef EDX
++#undef EBX
++#undef ESP
++#undef EBP
++#undef ESI
++#undef EDI
++#undef EIP
++#undef UESP
++#undef EFL
++#undef ERR
++#undef TRAPNO
++#endif
++
+ #endif /* LLVM_C_DATATYPES_H */
Index: pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_include_llvm_Analysis_ConstantFolding.h
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_include_llvm_Analysis_ConstantFolding.h:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_include_llvm_Analysis_ConstantFolding.h Sun Jul 7 10:41:21 2024
@@ -0,0 +1,17 @@
+$NetBSD: patch-src_llvm-project_llvm_include_llvm_Analysis_ConstantFolding.h,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Fix SunOS CS conflict not handled by include/llvm-c/DataTypes.h
+
+--- src/llvm-project/llvm/include/llvm/Analysis/ConstantFolding.h.orig 2018-08-01 16:32:37.000000000 +0000
++++ src/llvm-project/llvm/include/llvm/Analysis/ConstantFolding.h
+@@ -19,6 +19,10 @@
+ #ifndef LLVM_ANALYSIS_CONSTANTFOLDING_H
+ #define LLVM_ANALYSIS_CONSTANTFOLDING_H
+
++#ifdef __sun
++#undef CS
++#endif
++
+ #include <stdint.h>
+
+ namespace llvm {
Index: pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_lib_Support_BLAKE3_blake3__impl.h
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_lib_Support_BLAKE3_blake3__impl.h:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_lib_Support_BLAKE3_blake3__impl.h Sun Jul 7 10:41:21 2024
@@ -0,0 +1,20 @@
+$NetBSD: patch-src_llvm-project_llvm_lib_Support_BLAKE3_blake3__impl.h,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Do not try to use neon on big-endian aarch64, as we have
+an #error waiting there.
+
+--- src/llvm-project/llvm/lib/Support/BLAKE3/blake3_impl.h.orig 2022-09-02 08:17:54.000000000 +0000
++++ src/llvm-project/llvm/lib/Support/BLAKE3/blake3_impl.h
+@@ -64,7 +64,11 @@ enum blake3_flags {
+ #if !defined(BLAKE3_USE_NEON)
+ // If BLAKE3_USE_NEON not manually set, autodetect based on AArch64ness
+ #if defined(IS_AARCH64)
+- #define BLAKE3_USE_NEON 1
++ #if defined(__ARM_BIG_ENDIAN)
++ #define BLAKE3_USE_NEON 0
++ #else
++ #define BLAKE3_USE_NEON 1
++ #endif
+ #else
+ #define BLAKE3_USE_NEON 0
+ #endif
Index: pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_utils_FileCheck_FileCheck.cpp
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_utils_FileCheck_FileCheck.cpp:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_llvm-project_llvm_utils_FileCheck_FileCheck.cpp Sun Jul 7 10:41:21 2024
@@ -0,0 +1,15 @@
+$NetBSD: patch-src_llvm-project_llvm_utils_FileCheck_FileCheck.cpp,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Avoid ambiguous function call.
+
+--- src/llvm-project/llvm/utils/FileCheck/FileCheck.cpp.orig 2019-02-12 15:22:48.000000000 +0000
++++ src/llvm-project/llvm/utils/FileCheck/FileCheck.cpp
+@@ -592,7 +592,7 @@ static void DumpAnnotatedInput(raw_ostre
+ unsigned LineCount = InputFileText.count('\n');
+ if (InputFileEnd[-1] != '\n')
+ ++LineCount;
+- unsigned LineNoWidth = std::log10(LineCount) + 1;
++ unsigned LineNoWidth = std::log10((float)LineCount) + 1;
+ // +3 below adds spaces (1) to the left of the (right-aligned) line numbers
+ // on input lines and (2) to the right of the (left-aligned) labels on
+ // annotation lines so that input lines and annotation lines are more
Index: pkgsrc/lang/rust176/patches/patch-src_tools_cargo_src_cargo_core_profiles.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_tools_cargo_src_cargo_core_profiles.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_tools_cargo_src_cargo_core_profiles.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,17 @@
+$NetBSD: patch-src_tools_cargo_src_cargo_core_profiles.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Turn off incremental builds for sparc64, ref.
+https://sources.debian.org/patches/cargo/0.29.0-1/2007_sparc64_disable_incremental_build.patch/
+
+--- src/tools/cargo/src/cargo/core/profiles.rs.orig 2023-07-12 03:33:05.000000000 +0000
++++ src/tools/cargo/src/cargo/core/profiles.rs
+@@ -681,6 +681,9 @@ impl Profile {
+ debuginfo: DebugInfo::Resolved(TomlDebugInfo::Full),
+ debug_assertions: true,
+ overflow_checks: true,
++ #[cfg(target_arch = "sparc64")]
++ incremental: false,
++ #[cfg(not(target_arch = "sparc64"))]
+ incremental: true,
+ ..Profile::default()
+ }
Index: pkgsrc/lang/rust176/patches/patch-src_tools_cargo_tests_testsuite_build.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_tools_cargo_tests_testsuite_build.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_tools_cargo_tests_testsuite_build.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,31 @@
+$NetBSD: patch-src_tools_cargo_tests_testsuite_build.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Don't attempt incremental operations on sparc64, ref.
+https://sources.debian.org/patches/cargo/0.29.0-1/2007_sparc64_disable_incremental_build.patch/
+
+--- src/tools/cargo/tests/testsuite/build.rs.orig 2019-08-13 06:27:40.000000000 +0000
++++ src/tools/cargo/tests/testsuite/build.rs
+@@ -47,6 +47,7 @@ fn cargo_fail_with_no_stderr() {
+
+ /// Checks that the `CARGO_INCREMENTAL` environment variable results in
+ /// `rustc` getting `-C incremental` passed to it.
++#[cfg(not(target_arch = "sparc64"))]
+ #[cargo_test]
+ fn cargo_compile_incremental() {
+ let p = project()
+@@ -69,6 +70,7 @@ fn cargo_compile_incremental() {
+ .run();
+ }
+
++#[cfg(not(target_arch = "sparc64"))]
+ #[cargo_test]
+ fn incremental_profile() {
+ let p = project()
+@@ -111,6 +113,7 @@ fn incremental_profile() {
+ .run();
+ }
+
++#[cfg(not(target_arch = "sparc64"))]
+ #[cargo_test]
+ fn incremental_config() {
+ let p = project()
Index: pkgsrc/lang/rust176/patches/patch-src_tools_rust-installer_install-template.sh
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-src_tools_rust-installer_install-template.sh:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-src_tools_rust-installer_install-template.sh Sun Jul 7 10:41:21 2024
@@ -0,0 +1,179 @@
+$NetBSD: patch-src_tools_rust-installer_install-template.sh,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+No logging to 'install.log'.
+Do not create 'uninstall.sh'.
+Do not make file backups (filename.old), so these will not end up in the final package.
+
+Rewrite to not use a whole lot of subprocesses just for doing
+pattern matching and substitution in the install phase using "grep"
+and "sed" when shell builtin "case" and "omit shortest match" ops
+should do just fine.
+
+--- src/tools/rust-installer/install-template.sh.orig 2023-12-21 16:55:28.000000000 +0000
++++ src/tools/rust-installer/install-template.sh
+@@ -6,20 +6,12 @@ set -u
+ init_logging() {
+ local _abs_libdir="$1"
+ local _logfile="$_abs_libdir/$TEMPLATE_REL_MANIFEST_DIR/install.log"
+- rm -f "$_logfile"
+- need_ok "failed to remove old installation log"
+- touch "$_logfile"
+- need_ok "failed to create installation log"
+ LOGFILE="$_logfile"
+ }
+
+ log_line() {
+ local _line="$1"
+
+- if [ -n "${LOGFILE-}" -a -e "${LOGFILE-}" ]; then
+- echo "$_line" >> "$LOGFILE"
+- # Ignore errors, which may happen e.g. after the manifest dir is deleted
+- fi
+ }
+
+ msg() {
+@@ -433,8 +425,8 @@ uninstall_components() {
+ local _directive
+ while read _directive; do
+
+- local _command=`echo $_directive | cut -f1 -d:`
+- local _file=`echo $_directive | cut -f2 -d:`
++ local _command=${_directive%%:*}
++ local _file=${_directive#*:}
+
+ # Sanity checks
+ if [ ! -n "$_command" ]; then critical_err "malformed installation directive"; fi
+@@ -541,8 +533,8 @@ install_components() {
+ local _directive
+ while read _directive; do
+
+- local _command=`echo $_directive | cut -f1 -d:`
+- local _file=`echo $_directive | cut -f2 -d:`
++ local _command=${_directive%%:*}
++ local _file=${_directive#*:}
+
+ # Sanity checks
+ if [ ! -n "$_command" ]; then critical_err "malformed installation directive"; fi
+@@ -551,36 +543,24 @@ install_components() {
+ # Decide the destination of the file
+ local _file_install_path="$_dest_prefix/$_file"
+
+- if echo "$_file" | grep "^etc/" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^etc\///')"
+- _file_install_path="$CFG_SYSCONFDIR/$_f"
+- fi
+-
+- if echo "$_file" | grep "^bin/" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^bin\///')"
+- _file_install_path="$CFG_BINDIR/$_f"
+- fi
+-
+- if echo "$_file" | grep "^lib/" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^lib\///')"
+- _file_install_path="$CFG_LIBDIR/$_f"
+- fi
+-
+- if echo "$_file" | grep "^share" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^share\///')"
+- _file_install_path="$CFG_DATADIR/$_f"
+- fi
+-
+- if echo "$_file" | grep "^share/man/" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^share\/man\///')"
+- _file_install_path="$CFG_MANDIR/$_f"
+- fi
+-
++ case "$_file" in
++ etc/*)
++ local _f=${_file#"etc/"}
++ _file_install_path="$CFG_DESTDIR_PREFIX/share/doc/cargo/$_f"
++ ;;
++ bin/*)
++ local _f=${_file#"bin/"}
++ _file_install_path="$CFG_BINDIR/$_f"
++ ;;
++ lib/*)
++ local _f=${_file#"lib/"}
++ _file_install_path="$CFG_LIBDIR/$_f"
++ ;;
++ share/man/*)
++ local _f=${_file#"share/man/"}
++ _file_install_path="$CFG_MANDIR/$_f"
++ ;;
++ share/doc/*)
+ # HACK: Try to support overriding --docdir. Paths with the form
+ # "share/doc/$product/" can be redirected to a single --docdir
+ # path. If the following detects that --docdir has been specified
+@@ -591,14 +571,17 @@ install_components() {
+ # contents of those directories are _not_ disjoint. Since this feature
+ # is almost entirely to support 'make install' anyway I don't expect
+ # this problem to be a big deal in practice.
+- if [ "$CFG_DOCDIR" != "<default>" ]
+- then
+- if echo "$_file" | grep "^share/doc/" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^share\/doc\/[^/]*\///')"
+- _file_install_path="$CFG_DOCDIR/$_f"
+- fi
+- fi
++ if [ "$CFG_DOCDIR" != "<default>" ]; then
++ local _f=${_file#"share/doc/"*/}
++ _file_install_path="$CFG_DOCDIR/$_f"
++ fi
++ ;;
++ share/*)
++ local _f=${_file#"share/"}
++ _file_install_path="$CFG_DATADIR/$_f"
++ ;;
++ esac
++
+
+ # Make sure there's a directory for it
+ make_dir_recursive "$(dirname "$_file_install_path")"
+@@ -615,16 +598,16 @@ install_components() {
+
+ verbose_msg "copying file $_file_install_path"
+
+- maybe_backup_path "$_file_install_path"
+-
+- if echo "$_file" | grep "^bin/" > /dev/null || test -x "$_src_dir/$_component/$_file"
+- then
+- run cp "$_src_dir/$_component/$_file" "$_file_install_path"
+- run chmod 755 "$_file_install_path"
+- else
++ local mode=644
++ if test -x "$_src_dir/$_component/$_file"; then
++ mode=755
++ fi
++ case "$_file" in
++ bin/*) mode=755
++ ;;
++ esac
+ run cp "$_src_dir/$_component/$_file" "$_file_install_path"
+- run chmod 644 "$_file_install_path"
+- fi
++ run chmod $mode "$_file_install_path"
+ critical_need_ok "file creation failed"
+
+ # Update the manifest
+@@ -637,7 +620,6 @@ install_components() {
+
+ verbose_msg "copying directory $_file_install_path"
+
+- maybe_backup_path "$_file_install_path"
+
+ run cp -R "$_src_dir/$_component/$_file" "$_file_install_path"
+ critical_need_ok "failed to copy directory"
+@@ -986,7 +968,6 @@ write_to_file "$TEMPLATE_RUST_INSTALLER_
+ critical_need_ok "failed to write installer version"
+
+ # Install the uninstaller
+-install_uninstaller "$src_dir" "$src_basename" "$abs_libdir"
+
+ # Install each component
+ install_components "$src_dir" "$abs_libdir" "$dest_prefix" "$components"
Index: pkgsrc/lang/rust176/patches/patch-vendor_aho-corasick_src_packed_teddy_builder.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_aho-corasick_src_packed_teddy_builder.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_aho-corasick_src_packed_teddy_builder.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,31 @@
+$NetBSD: patch-vendor_aho-corasick_src_packed_teddy_builder.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+--- vendor/aho-corasick/src/packed/teddy/builder.rs.orig 2024-02-18 10:54:27.960401196 +0000
++++ vendor/aho-corasick/src/packed/teddy/builder.rs
+@@ -230,7 +230,7 @@ impl Builder {
+ }
+ }
+ }
+- #[cfg(target_arch = "aarch64")]
++ #[cfg(all(target_arch = "aarch64", target_feature = "neon", target_endian = "little"))]
+ {
+ use self::aarch64::SlimNeon;
+
+@@ -301,7 +301,7 @@ impl Builder {
+ }
+ #[cfg(not(any(
+ all(target_arch = "x86_64", target_feature = "sse2"),
+- target_arch = "aarch64"
++ all(target_arch = "aarch64", target_feature = "neon", target_endian = "little")
+ )))]
+ {
+ None
+@@ -705,7 +705,7 @@ mod x86_64 {
+ }
+ }
+
+-#[cfg(target_arch = "aarch64")]
++#[cfg(all(target_arch = "aarch64", target_feature = "neon", target_endian = "little"))]
+ mod aarch64 {
+ use core::arch::aarch64::uint8x16_t;
+
Index: pkgsrc/lang/rust176/patches/patch-vendor_aho-corasick_src_packed_vector.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_aho-corasick_src_packed_vector.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_aho-corasick_src_packed_vector.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,13 @@
+$NetBSD: patch-vendor_aho-corasick_src_packed_vector.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+--- vendor/aho-corasick/src/packed/vector.rs.orig 2024-02-18 10:12:16.371081231 +0000
++++ vendor/aho-corasick/src/packed/vector.rs
+@@ -595,7 +595,7 @@ mod x86_64_avx2 {
+ }
+ }
+
+-#[cfg(target_arch = "aarch64")]
++#[cfg(all(target_arch = "aarch64", target_feature = "neon", target_endian = "little"))]
+ mod aarch64_neon {
+ use core::arch::aarch64::*;
+
Index: pkgsrc/lang/rust176/patches/patch-vendor_backtrace_src_symbolize_gimli.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_backtrace_src_symbolize_gimli.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_backtrace_src_symbolize_gimli.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,14 @@
+$NetBSD: patch-vendor_backtrace_src_symbolize_gimli.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Do mmap on NetBSD as well.
+
+--- ./vendor/backtrace/src/symbolize/gimli.rs.orig 2022-04-04 11:10:55.000000000 +0000
++++ ./vendor/backtrace/src/symbolize/gimli.rs
+@@ -38,6 +38,7 @@ cfg_if::cfg_if! {
+ target_os = "ios",
+ target_os = "linux",
+ target_os = "macos",
++ target_os = "netbsd",
+ target_os = "openbsd",
+ target_os = "solaris",
+ target_os = "illumos",
Index: pkgsrc/lang/rust176/patches/patch-vendor_backtrace_src_symbolize_gimli_elf.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_backtrace_src_symbolize_gimli_elf.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_backtrace_src_symbolize_gimli_elf.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,24 @@
+$NetBSD: patch-vendor_backtrace_src_symbolize_gimli_elf.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Make NetBSD also find its debug libraries, if present.
+
+--- vendor/backtrace/src/symbolize/gimli/elf.rs.orig 2022-04-04 11:10:55.000000000 +0000
++++ vendor/backtrace/src/symbolize/gimli/elf.rs
+@@ -276,11 +276,16 @@ fn decompress_zlib(input: &[u8], output:
+ }
+ }
+
++#[cfg(target_os = "netbsd")]
++const DEBUG_PATH: &[u8] = b"/usr/libdata/debug";
++#[cfg(target_os != "netbsd")]
+ const DEBUG_PATH: &[u8] = b"/usr/lib/debug";
+
+ fn debug_path_exists() -> bool {
+ cfg_if::cfg_if! {
+- if #[cfg(any(target_os = "freebsd", target_os = "linux"))] {
++ if #[cfg(any(target_os = "freebsd",
++ target_os = "netbsd",
++ target_os = "linux"))] {
+ use core::sync::atomic::{AtomicU8, Ordering};
+ static DEBUG_PATH_EXISTS: AtomicU8 = AtomicU8::new(0);
+
Index: pkgsrc/lang/rust176/patches/patch-vendor_cc-1.0.73_src_lib.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_cc-1.0.73_src_lib.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_cc-1.0.73_src_lib.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,16 @@
+$NetBSD: patch-vendor_cc-1.0.73_src_lib.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Use correct ABI on NetBSD/riscv64.
+
+--- vendor/cc-1.0.73/src/lib.rs.orig 2023-05-31 21:44:47.000000000 +0000
++++ vendor/cc-1.0.73/src/lib.rs
+@@ -1830,6 +1830,9 @@ impl Build {
+ } else if target.contains("freebsd") && arch.starts_with("64") {
+ cmd.args.push(("-march=rv64gc").into());
+ cmd.args.push("-mabi=lp64d".into());
++ } else if target.contains("netbsd") && arch.starts_with("64") {
++ cmd.args.push(("-march=rv64gc").into());
++ cmd.args.push("-mabi=lp64d".into());
+ } else if target.contains("openbsd") && arch.starts_with("64") {
+ cmd.args.push(("-march=rv64gc").into());
+ cmd.args.push("-mabi=lp64d".into());
Index: pkgsrc/lang/rust176/patches/patch-vendor_cc_src_lib.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_cc_src_lib.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_cc_src_lib.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,22 @@
+$NetBSD: patch-vendor_cc_src_lib.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Add aarch64_be and mipsel for NetBSD.
+
+--- vendor/cc/src/lib.rs.orig 2024-02-17 11:28:27.283394955 +0000
++++ vendor/cc/src/lib.rs
+@@ -3058,6 +3058,7 @@ impl Build {
+ "aarch64-unknown-linux-gnu" => Some("aarch64-linux-gnu"),
+ "aarch64-unknown-linux-musl" => Some("aarch64-linux-musl"),
+ "aarch64-unknown-netbsd" => Some("aarch64--netbsd"),
++ "aarch64_be-unknown-netbsd" => Some("aarch64_be--netbsd"),
+ "arm-unknown-linux-gnueabi" => Some("arm-linux-gnueabi"),
+ "armv4t-unknown-linux-gnueabi" => Some("arm-linux-gnueabi"),
+ "armv5te-unknown-linux-gnueabi" => Some("arm-linux-gnueabi"),
+@@ -3093,6 +3094,7 @@ impl Build {
+ "mips-unknown-linux-musl" => Some("mips-linux-musl"),
+ "mipsel-unknown-linux-gnu" => Some("mipsel-linux-gnu"),
+ "mipsel-unknown-linux-musl" => Some("mipsel-linux-musl"),
++ "mipsel-unknown-netbsd" => Some("mipsel--netbsd"),
+ "mips64-unknown-linux-gnuabi64" => Some("mips64-linux-gnuabi64"),
+ "mips64el-unknown-linux-gnuabi64" => Some("mips64el-linux-gnuabi64"),
+ "mipsisa32r6-unknown-linux-gnu" => Some("mipsisa32r6-linux-gnu"),
Index: pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-epoch_no__atomic.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-epoch_no__atomic.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-epoch_no__atomic.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,20 @@
+$NetBSD: patch-vendor_crossbeam-epoch_no__atomic.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Add "mipsel-unknown-netbsd" to the list who don't have
+native 64-bit atomic ops.
+Unify with crossbeam-epoch to get same after-checksum...
+
+--- vendor/crossbeam-epoch/no_atomic.rs.orig 2023-07-12 05:06:31.000000000 +0000
++++ vendor/crossbeam-epoch/no_atomic.rs
+@@ -38,10 +38,10 @@ const NO_ATOMIC_64: &[&str] = &[
+ "mips-unknown-linux-musl",
+ "mips-unknown-linux-uclibc",
+ "mipsel-sony-psp",
+- "mipsel-sony-psx",
+ "mipsel-unknown-linux-gnu",
+ "mipsel-unknown-linux-musl",
+ "mipsel-unknown-linux-uclibc",
++ "mipsel-unknown-netbsd",
+ "mipsel-unknown-none",
+ "mipsisa32r6-unknown-linux-gnu",
+ "mipsisa32r6el-unknown-linux-gnu",
Index: pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-utils-0.8.14-no__atomic.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-utils-0.8.14-no__atomic.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-utils-0.8.14-no__atomic.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,14 @@
+$NetBSD: patch-vendor_crossbeam-utils-0.8.14-no__atomic.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+No 64-bit atomics on NetBSD/mipsel.
+
+--- vendor/crossbeam-utils-0.8.14/no_atomic.rs.orig 2023-07-12 05:06:31.000000000 +0000
++++ vendor/crossbeam-utils-0.8.14/no_atomic.rs
+@@ -41,6 +41,7 @@ const NO_ATOMIC_64: &[&str] = &[
+ "mipsel-unknown-linux-gnu",
+ "mipsel-unknown-linux-musl",
+ "mipsel-unknown-linux-uclibc",
++ "mipsel-unknown-netbsd",
+ "mipsel-unknown-none",
+ "mipsisa32r6-unknown-linux-gnu",
+ "mipsisa32r6el-unknown-linux-gnu",
Index: pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-utils_no__atomic.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-utils_no__atomic.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_crossbeam-utils_no__atomic.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,19 @@
+$NetBSD: patch-vendor_crossbeam-utils_no__atomic.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Add mipsel-unknown-netbsd target as not having 64-bit atomics.
+Unify with crossbeam-utils-0.8.12 by removing mipsel-sony-psx.
+
+--- vendor/crossbeam-utils/no_atomic.rs.orig 2023-07-12 05:06:31.000000000 +0000
++++ vendor/crossbeam-utils/no_atomic.rs
+@@ -38,10 +38,10 @@ const NO_ATOMIC_64: &[&str] = &[
+ "mips-unknown-linux-musl",
+ "mips-unknown-linux-uclibc",
+ "mipsel-sony-psp",
+- "mipsel-sony-psx",
+ "mipsel-unknown-linux-gnu",
+ "mipsel-unknown-linux-musl",
+ "mipsel-unknown-linux-uclibc",
++ "mipsel-unknown-netbsd",
+ "mipsel-unknown-none",
+ "mipsisa32r6-unknown-linux-gnu",
+ "mipsisa32r6el-unknown-linux-gnu",
Index: pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike+netbsd_mips.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike+netbsd_mips.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike+netbsd_mips.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,29 @@
+$NetBSD: patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike+netbsd_mips.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Add entry for NetBSD/mips.
+
+--- vendor/libc-0.2.148/src/unix/bsd/netbsdlike/netbsd/mips.rs.orig 2024-01-06 21:03:21.781003759 +0000
++++ vendor/libc-0.2.148/src/unix/bsd/netbsdlike/netbsd/mips.rs 2024-01-06 22:27:31.830676317 +0000
+@@ -0,0 +1,22 @@
++use PT_FIRSTMACH;
++
++pub type c_long = i32;
++pub type c_ulong = u32;
++pub type c_char = i8;
++pub type __cpu_simple_lock_nv_t = ::c_int;
++
++// should be pub(crate), but that requires Rust 1.18.0
++cfg_if! {
++ if #[cfg(libc_const_size_of)] {
++ #[doc(hidden)]
++ pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_longlong>() - 1;
++ } else {
++ #[doc(hidden)]
++ pub const _ALIGNBYTES: usize = 8 - 1;
++ }
++}
++
++pub const PT_GETREGS: ::c_int = PT_FIRSTMACH + 1;
++pub const PT_SETREGS: ::c_int = PT_FIRSTMACH + 2;
++pub const PT_GETFPREGS: ::c_int = PT_FIRSTMACH + 3;
++pub const PT_SETFPREGS: ::c_int = PT_FIRSTMACH + 4;
Index: pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_mod.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_mod.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_mod.rs Sun Jul 7 10:41:21 2024
@@ -0,0 +1,52 @@
+$NetBSD: patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_mod.rs,v 1.1 2024/07/07 10:41:21 wiz Exp $
+
+Add entries for execinfo, and support
+for NetBSD/mips and NetBSD/riscv64.
+
+--- vendor/libc-0.2.148/src/unix/bsd/netbsdlike/netbsd/mod.rs.orig 2024-01-06 22:33:33.911876204 +0000
++++ vendor/libc-0.2.148/src/unix/bsd/netbsdlike/netbsd/mod.rs
+@@ -10,7 +10,7 @@ type __pthread_spin_t = __cpu_simple_loc
+ pub type vm_size_t = ::uintptr_t; // FIXME: deprecated since long time
+ pub type lwpid_t = ::c_uint;
+ pub type shmatt_t = ::c_uint;
+-pub type cpuid_t = u64;
++pub type cpuid_t = ::c_ulong;
+ pub type cpuset_t = _cpuset;
+ pub type pthread_spin_t = ::c_uchar;
+ pub type timer_t = ::c_int;
+@@ -3153,6 +3153,22 @@ extern "C" {
+ pub fn kinfo_getvmmap(pid: ::pid_t, cntp: *mut ::size_t) -> *mut kinfo_vmentry;
+ }
+
++#[link(name = "execinfo")]
++extern "C" {
++ pub fn backtrace(addrlist: *mut *mut ::c_void, len: ::size_t) -> ::size_t;
++ pub fn backtrace_symbols(addrlist: *const *mut ::c_void, len: ::size_t) -> *mut *mut ::c_char;
++ pub fn backtrace_symbols_fd(
++ addrlist: *const *mut ::c_void,
++ len: ::size_t,
++ fd: ::c_int,
++ ) -> ::c_int;
++ pub fn backtrace_symbols_fmt(
++ addrlist: *const *mut ::c_void,
++ len: ::size_t,
++ fmt: *const ::c_char,
++ ) -> *mut *mut ::c_char;
++}
++
+ cfg_if! {
+ if #[cfg(target_arch = "aarch64")] {
+ mod aarch64;
+@@ -3172,6 +3188,12 @@ cfg_if! {
+ } else if #[cfg(target_arch = "x86")] {
+ mod x86;
+ pub use self::x86::*;
++ } else if #[cfg(target_arch = "mips")] {
++ mod mips;
++ pub use self::mips::*;
++ } else if #[cfg(target_arch = "riscv64")] {
++ mod riscv64;
++ pub use self::riscv64::*;
+ } else {
+ // Unknown target_arch
+ }
Index: pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_riscv64.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_riscv64.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_riscv64.rs Sun Jul 7 10:41:22 2024
@@ -0,0 +1,29 @@
+$NetBSD: patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_riscv64.rs,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Add support for NetBSD/riscv64.
+
+--- vendor/libc-0.2.148/src/unix/bsd/netbsdlike/netbsd/riscv64.rs.orig 2024-01-06 21:03:21.781003759 +0000
++++ vendor/libc-0.2.148/src/unix/bsd/netbsdlike/netbsd/riscv64.rs 2024-01-06 22:31:25.289387359 +0000
+@@ -0,0 +1,22 @@
++use PT_FIRSTMACH;
++
++pub type c_long = i64;
++pub type c_ulong = u64;
++pub type c_char = u8;
++pub type __cpu_simple_lock_nv_t = ::c_int;
++
++// should be pub(crate), but that requires Rust 1.18.0
++cfg_if! {
++ if #[cfg(libc_const_size_of)] {
++ #[doc(hidden)]
++ pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_long>() - 1;
++ } else {
++ #[doc(hidden)]
++ pub const _ALIGNBYTES: usize = 8 - 1;
++ }
++}
++
++pub const PT_GETREGS: ::c_int = PT_FIRSTMACH + 0;
++pub const PT_SETREGS: ::c_int = PT_FIRSTMACH + 1;
++pub const PT_GETFPREGS: ::c_int = PT_FIRSTMACH + 2;
++pub const PT_SETFPREGS: ::c_int = PT_FIRSTMACH + 3;
Index: pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_solarish_mod.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_solarish_mod.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_libc-0.2.148_src_unix_solarish_mod.rs Sun Jul 7 10:41:22 2024
@@ -0,0 +1,15 @@
+$NetBSD: patch-vendor_libc-0.2.148_src_unix_solarish_mod.rs,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Fix xattr build.
+
+--- vendor/libc-0.2.148/src/unix/solarish/mod.rs.orig 2024-01-06 22:41:58.182128108 +0000
++++ vendor/libc-0.2.148/src/unix/solarish/mod.rs
+@@ -1523,6 +1523,8 @@ pub const EOWNERDEAD: ::c_int = 58;
+ pub const ENOTRECOVERABLE: ::c_int = 59;
+ pub const ENOSTR: ::c_int = 60;
+ pub const ENODATA: ::c_int = 61;
++// This is not supported but is required for xattr
++pub const ENOATTR: ::c_int = ::ENODATA;
+ pub const ETIME: ::c_int = 62;
+ pub const ENOSR: ::c_int = 63;
+ pub const ENONET: ::c_int = 64;
Index: pkgsrc/lang/rust176/patches/patch-vendor_libc_src_unix_solarish_mod.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_libc_src_unix_solarish_mod.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_libc_src_unix_solarish_mod.rs Sun Jul 7 10:41:22 2024
@@ -0,0 +1,15 @@
+$NetBSD: patch-vendor_libc_src_unix_solarish_mod.rs,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Fix xattr build.
+
+--- vendor/libc/src/unix/solarish/mod.rs.orig 2019-05-20 13:47:24.000000000 +0000
++++ vendor/libc/src/unix/solarish/mod.rs
+@@ -1523,6 +1523,8 @@ pub const EOWNERDEAD: ::c_int = 58;
+ pub const ENOTRECOVERABLE: ::c_int = 59;
+ pub const ENOSTR: ::c_int = 60;
+ pub const ENODATA: ::c_int = 61;
++// This is not supported but is required for xattr
++pub const ENOATTR: ::c_int = ::ENODATA;
+ pub const ETIME: ::c_int = 62;
+ pub const ENOSR: ::c_int = 63;
+ pub const ENONET: ::c_int = 64;
Index: pkgsrc/lang/rust176/patches/patch-vendor_lzma-sys_config.h
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_lzma-sys_config.h:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_lzma-sys_config.h Sun Jul 7 10:41:22 2024
@@ -0,0 +1,18 @@
+$NetBSD: patch-vendor_lzma-sys_config.h,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Fix SunOS builds with newer compilers.
+
+--- vendor/lzma-sys/config.h.orig 2020-10-07 09:33:31.000000000 +0000
++++ vendor/lzma-sys/config.h
+@@ -35,7 +35,11 @@
+ // change to `MYTHREAD_WIN95` if targeting Windows XP or earlier
+ #define MYTHREAD_VISTA 1
+ #else
++#if !defined(__sun) || (__STDC_VERSION__-0 < 199901L)
+ #define _POSIX_C_SOURCE 199506L
++#else
++ #define _POSIX_C_SOURCE 200112L
++#endif
+ #define MYTHREAD_POSIX 1
+ #endif
+
Index: pkgsrc/lang/rust176/patches/patch-vendor_nix-0.26.2_src_sys_signal.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_nix-0.26.2_src_sys_signal.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_nix-0.26.2_src_sys_signal.rs Sun Jul 7 10:41:22 2024
@@ -0,0 +1,15 @@
+$NetBSD: patch-vendor_nix-0.26.2_src_sys_signal.rs,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Narrow the conditional on mips to only apply to Linux.
+
+--- vendor/nix-0.26.2/src/sys/signal.rs.orig 2024-02-18 16:20:52.047002882 +0000
++++ vendor/nix-0.26.2/src/sys/signal.rs
+@@ -1069,7 +1069,7 @@ mod sigevent {
+ SigevNotify::SigevThreadId{..} => libc::SIGEV_THREAD_ID,
+ #[cfg(all(target_os = "linux", target_env = "uclibc"))]
+ SigevNotify::SigevThreadId{..} => libc::SIGEV_THREAD_ID,
+- #[cfg(any(all(target_os = "linux", target_env = "musl"), target_arch = "mips"))]
++ #[cfg(all(target_os = "linux", target_env = "musl", target_arch = "mips"))]
+ SigevNotify::SigevThreadId{..} => 4 // No SIGEV_THREAD_ID defined
+ };
+ sev.sigev_signo = match sigev_notify {
Index: pkgsrc/lang/rust176/patches/patch-vendor_openssl-src_openssl_Configurations_10-main.conf
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_openssl-src_openssl_Configurations_10-main.conf:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_openssl-src_openssl_Configurations_10-main.conf Sun Jul 7 10:41:22 2024
@@ -0,0 +1,18 @@
+$NetBSD: patch-vendor_openssl-src_openssl_Configurations_10-main.conf,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Replicate part of
+https://github.com/openssl/openssl/pull/15086
+
+--- vendor/openssl-src/openssl/Configurations/10-main.conf.orig 2023-08-03 13:47:25.000000000 +0000
++++ vendor/openssl-src/openssl/Configurations/10-main.conf
+@@ -950,6 +950,10 @@ my %targets = (
+ shared_cflag => "-fPIC",
+ shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
+ },
++ "NetBSD-generic32" => {
++ inherit_from => [ "BSD-generic32" ],
++ ex_libs => add("-latomic"),
++ },
+ "BSD-generic64" => {
+ inherit_from => [ "BSD-generic32" ],
+ bn_ops => "SIXTY_FOUR_BIT_LONG",
Index: pkgsrc/lang/rust176/patches/patch-vendor_openssl-src_src_lib.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_openssl-src_src_lib.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_openssl-src_src_lib.rs Sun Jul 7 10:41:22 2024
@@ -0,0 +1,64 @@
+$NetBSD: patch-vendor_openssl-src_src_lib.rs,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Provide defaults for the various NetBSD targets.
+
+--- vendor/openssl-src/src/lib.rs.orig 2024-02-04 14:52:05.000000000 +0000
++++ vendor/openssl-src/src/lib.rs
+@@ -239,6 +239,8 @@ impl Build {
+ "aarch64-unknown-freebsd" => "BSD-generic64",
+ "aarch64-unknown-linux-gnu" => "linux-aarch64",
+ "aarch64-unknown-linux-musl" => "linux-aarch64",
++ "aarch64-unknown-netbsd" => "BSD-generic64",
++ "aarch64_be-unknown-netbsd" => "BSD-generic64",
+ "aarch64-pc-windows-msvc" => "VC-WIN64-ARM",
+ "arm-linux-androideabi" => "linux-armv4",
+ "armv7-linux-androideabi" => "linux-armv4",
+@@ -249,14 +251,17 @@ impl Build {
+ "armv5te-unknown-linux-gnueabi" => "linux-armv4",
+ "armv5te-unknown-linux-musleabi" => "linux-armv4",
+ "armv6-unknown-freebsd" => "BSD-generic32",
++ "armv6-unknown-netbsd-eabihf" => "BSD-generic32",
+ "armv7-unknown-freebsd" => "BSD-generic32",
+ "armv7-unknown-linux-gnueabi" => "linux-armv4",
+ "armv7-unknown-linux-musleabi" => "linux-armv4",
+ "armv7-unknown-linux-gnueabihf" => "linux-armv4",
+ "armv7-unknown-linux-musleabihf" => "linux-armv4",
++ "armv7-unknown-netbsd-eabihf" => "BSD-generic32",
+ "asmjs-unknown-emscripten" => "gcc",
+ "i586-unknown-linux-gnu" => "linux-elf",
+ "i586-unknown-linux-musl" => "linux-elf",
++ "i586-unknown-netbsd" => "BSD-x86-elf",
+ "i686-apple-darwin" => "darwin-i386-cc",
+ "i686-linux-android" => "linux-elf",
+ "i686-pc-windows-gnu" => "mingw",
+@@ -264,6 +269,7 @@ impl Build {
+ "i686-unknown-freebsd" => "BSD-x86-elf",
+ "i686-unknown-linux-gnu" => "linux-elf",
+ "i686-unknown-linux-musl" => "linux-elf",
++ "i686-unknown-netbsd" => "BSD-x86-elf",
+ "loongarch64-unknown-linux-gnu" => "linux-generic64",
+ "mips-unknown-linux-gnu" => "linux-mips32",
+ "mips-unknown-linux-musl" => "linux-mips32",
+@@ -273,9 +279,11 @@ impl Build {
+ "mips64el-unknown-linux-muslabi64" => "linux64-mips64",
+ "mipsel-unknown-linux-gnu" => "linux-mips32",
+ "mipsel-unknown-linux-musl" => "linux-mips32",
++ "mipsel-unknown-netbsd" => "NetBSD-generic32",
+ "powerpc-unknown-freebsd" => "BSD-generic32",
+ "powerpc-unknown-linux-gnu" => "linux-ppc",
+ "powerpc-unknown-linux-gnuspe" => "linux-ppc",
++ "powerpc-unknown-netbsd" => "BSD-generic32",
+ "powerpc64-unknown-freebsd" => "BSD-generic64",
+ "powerpc64-unknown-linux-gnu" => "linux-ppc64",
+ "powerpc64-unknown-linux-musl" => "linux-ppc64",
+@@ -283,8 +291,10 @@ impl Build {
+ "powerpc64le-unknown-linux-gnu" => "linux-ppc64le",
+ "powerpc64le-unknown-linux-musl" => "linux-ppc64le",
+ "riscv64gc-unknown-linux-gnu" => "linux-generic64",
++ "riscv64gc-unknown-netbsd" => "BSD-generic64",
+ "s390x-unknown-linux-gnu" => "linux64-s390x",
+ "s390x-unknown-linux-musl" => "linux64-s390x",
++ "sparc64-unknown-netbsd" => "BSD-generic64",
+ "x86_64-apple-darwin" => "darwin64-x86_64-cc",
+ "x86_64-linux-android" => "linux-x86_64",
+ "x86_64-pc-windows-gnu" => "mingw64",
Index: pkgsrc/lang/rust176/patches/patch-vendor_openssl-sys_build_find__normal.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_openssl-sys_build_find__normal.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_openssl-sys_build_find__normal.rs Sun Jul 7 10:41:22 2024
@@ -0,0 +1,30 @@
+$NetBSD: patch-vendor_openssl-sys_build_find__normal.rs,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Add hack for Darwin when homebrew is installed.
+
+--- vendor/openssl-sys/build/find_normal.rs.orig 2023-05-31 21:44:49.000000000 +0000
++++ vendor/openssl-sys/build/find_normal.rs
+@@ -72,23 +72,6 @@ fn resolve_with_wellknown_location(dir:
+ fn find_openssl_dir(target: &str) -> OsString {
+ let host = env::var("HOST").unwrap();
+
+- if host == target && target.ends_with("-apple-darwin") {
+- let homebrew_dir = match target {
+- "aarch64-apple-darwin" => "/opt/homebrew",
+- _ => "/usr/local",
+- };
+-
+- if let Some(dir) = resolve_with_wellknown_homebrew_location(homebrew_dir) {
+- return dir.into();
+- } else if let Some(dir) = resolve_with_wellknown_location("/opt/pkg") {
+- // pkgsrc
+- return dir.into();
+- } else if let Some(dir) = resolve_with_wellknown_location("/opt/local") {
+- // MacPorts
+- return dir.into();
+- }
+- }
+-
+ try_pkg_config();
+ try_vcpkg();
+
Index: pkgsrc/lang/rust176/patches/patch-vendor_openssl-sys_build_main.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_openssl-sys_build_main.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_openssl-sys_build_main.rs Sun Jul 7 10:41:22 2024
@@ -0,0 +1,24 @@
+$NetBSD: patch-vendor_openssl-sys_build_main.rs,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Patterned after Linux and Android, on 32-bit NetBSD ports
+include -latomic. Parts of this inspired by
+https://github.com/sfackler/rust-openssl/commit/a0a1d1d29263abb7c47fc2e58cef8dab13762a45
+
+--- vendor/openssl-sys/build/main.rs.orig 2022-11-02 16:21:42.000000000 +0000
++++ vendor/openssl-sys/build/main.rs
+@@ -122,6 +122,15 @@ fn main() {
+ println!("cargo:rustc-link-lib={}={}", kind, lib);
+ }
+
++ // Patterned of the above, make sure we include -latomic
++ // on ilp32 ports (yes, this only tests the "p32" part).
++ if kind == "static"
++ && env::var("CARGO_CFG_TARGET_OS").unwrap() == "netbsd"
++ && env::var("CARGO_CFG_TARGET_POINTER_WIDTH").unwrap() == "32"
++ {
++ println!("cargo:rustc-link-lib=dylib=atomic");
++ }
++
+ if kind == "static" && target.contains("windows") {
+ println!("cargo:rustc-link-lib=dylib=gdi32");
+ println!("cargo:rustc-link-lib=dylib=user32");
Index: pkgsrc/lang/rust176/patches/patch-vendor_rustc-ap-rustc__target_src_spec_aarch64__be__unknown__netbsd.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_rustc-ap-rustc__target_src_spec_aarch64__be__unknown__netbsd.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_rustc-ap-rustc__target_src_spec_aarch64__be__unknown__netbsd.rs Sun Jul 7 10:41:22 2024
@@ -0,0 +1,27 @@
+$NetBSD: patch-vendor_rustc-ap-rustc__target_src_spec_aarch64__be__unknown__netbsd.rs,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Add aarch64_be NetBSD target.
+
+--- /dev/null 2021-04-26 00:02:43.147970692 +0200
++++ vendor/rustc-ap-rustc_target/src/spec/aarch64_be_unknown_netbsd.rs 2021-04-26 00:07:44.657579025 +0200
+@@ -0,0 +1,20 @@
++use crate::abi::Endian;
++use crate::spec::{Target, TargetOptions};
++
++pub fn target() -> Target {
++ let mut base = super::netbsd_base::opts();
++ base.max_atomic_width = Some(128);
++ base.unsupported_abis = super::arm_base::unsupported_abis();
++
++ Target {
++ llvm_target: "aarch64_be-unknown-netbsd".to_string(),
++ pointer_width: 64,
++ data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".to_string(),
++ arch: "aarch64".to_string(),
++ options: TargetOptions {
++ mcount: "__mcount".to_string(),
++ endian: Endian::Big,
++ ..base
++ },
++ }
++}
Index: pkgsrc/lang/rust176/patches/patch-vendor_stacker_src_lib.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_stacker_src_lib.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_stacker_src_lib.rs Sun Jul 7 10:41:22 2024
@@ -0,0 +1,15 @@
+$NetBSD: patch-vendor_stacker_src_lib.rs,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Avoid missing pthread_* on older SunOS.
+
+--- vendor/stacker/src/lib.rs.orig 2020-07-13 18:18:17.000000000 +0000
++++ vendor/stacker/src/lib.rs
+@@ -407,7 +407,7 @@ cfg_if! {
+ );
+ Some(mi.assume_init().AllocationBase as usize + get_thread_stack_guarantee() + 0x1000)
+ }
+- } else if #[cfg(any(target_os = "linux", target_os="solaris", target_os = "netbsd"))] {
++ } else if #[cfg(any(target_os = "linux", target_os = "netbsd"))] {
+ unsafe fn guess_os_stack_limit() -> Option<usize> {
+ let mut attr = std::mem::MaybeUninit::<libc::pthread_attr_t>::uninit();
+ assert_eq!(libc::pthread_attr_init(attr.as_mut_ptr()), 0);
Index: pkgsrc/lang/rust176/patches/patch-vendor_target-lexicon_src_targets.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_target-lexicon_src_targets.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_target-lexicon_src_targets.rs Sun Jul 7 10:41:22 2024
@@ -0,0 +1,22 @@
+$NetBSD: patch-vendor_target-lexicon_src_targets.rs,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Add aarch64_eb and mipsel for NetBSD.
+
+--- vendor/target-lexicon/src/targets.rs.orig 2021-05-03 21:35:46.000000000 +0000
++++ vendor/target-lexicon/src/targets.rs
+@@ -1526,6 +1526,7 @@ mod tests {
+ "aarch64-unknown-linux-gnu_ilp32",
+ "aarch64-unknown-linux-musl",
+ "aarch64-unknown-netbsd",
++ "aarch64_be-unknown-netbsd",
+ "aarch64-unknown-none",
+ "aarch64-unknown-none-softfloat",
+ "aarch64-unknown-openbsd",
+@@ -1611,6 +1612,7 @@ mod tests {
+ "mipsel-unknown-linux-gnu",
+ "mipsel-unknown-linux-musl",
+ "mipsel-unknown-linux-uclibc",
++ "mipsel-unknown-netbsd",
+ "mipsel-unknown-none",
+ "mipsisa32r6el-unknown-linux-gnu",
+ "mipsisa32r6-unknown-linux-gnu",
Index: pkgsrc/lang/rust176/patches/patch-vendor_valuable_no__atomic.rs
diff -u /dev/null pkgsrc/lang/rust176/patches/patch-vendor_valuable_no__atomic.rs:1.1
--- /dev/null Sun Jul 7 10:41:22 2024
+++ pkgsrc/lang/rust176/patches/patch-vendor_valuable_no__atomic.rs Sun Jul 7 10:41:22 2024
@@ -0,0 +1,14 @@
+$NetBSD: patch-vendor_valuable_no__atomic.rs,v 1.1 2024/07/07 10:41:22 wiz Exp $
+
+Add mipsel-unknown-netbsd.
+
+--- vendor/valuable/no_atomic.rs.orig 2022-09-19 15:35:03.000000000 +0000
++++ vendor/valuable/no_atomic.rs
+@@ -30,6 +30,7 @@ const NO_ATOMIC_64: &[&str] = &[
+ "mipsel-unknown-linux-musl",
+ "mipsel-unknown-linux-uclibc",
+ "mipsel-unknown-none",
++ "mipsel-unknown-netbsd",
+ "mipsisa32r6-unknown-linux-gnu",
+ "mipsisa32r6el-unknown-linux-gnu",
+ "powerpc-unknown-freebsd",
Home |
Main Index |
Thread Index |
Old Index