git: 237b36fa2e73 - main - lang/rust: Update to 1.57.0

From: Tobias Kortkamp <tobik_at_FreeBSD.org>
Date: Sun, 05 Dec 2021 12:36:14 UTC
The branch main has been updated by tobik:

URL: https://cgit.FreeBSD.org/ports/commit/?id=237b36fa2e73986dc19284686e80a47cb329bb6f

commit 237b36fa2e73986dc19284686e80a47cb329bb6f
Author:     Tobias Kortkamp <tobik@FreeBSD.org>
AuthorDate: 2021-11-30 12:54:55 +0000
Commit:     Tobias Kortkamp <tobik@FreeBSD.org>
CommitDate: 2021-12-05 12:35:41 +0000

    lang/rust: Update to 1.57.0
    
    - Unbreak build with LibreSSL 3.4.x [0]
    - Disable backtrace's libunwind backend on armv* since it or
      libunwind in base seem to be buggy and cause rustc to crash when
      building some consumers [1]
    - Follow rust-nightly in d5f09dc31fcfdb77b69c86b9093bf67ec67653d9
      and reenable hardlinks in the build
    
    Changes:        https://blog.rust-lang.org/2021/12/02/Rust-1.57.0.html
    PR:             259738 [0]
    PR:             259799 [1]
    PR:             260140
    Exp-run by:     antoine
    Differential Revision:  https://reviews.freebsd.org/D33190
    With hat:       rust
---
 Mk/Uses/cargo.mk                                   |   2 +-
 Mk/bsd.gecko.mk                                    |   2 +-
 lang/rust-bootstrap/Makefile                       |   2 +-
 lang/rust-bootstrap/distinfo                       |   6 +-
 lang/rust/Makefile                                 |   9 +-
 lang/rust/distinfo                                 | 114 ++++++++++-----------
 .../{ => no-hardlinks}/patch-src_bootstrap_lib.rs  |   0
 .../patch-src_bootstrap_native.rs                  |   0
 .../patch-library_backtrace_src_backtrace_mod.rs   |  10 ++
 lang/rust/files/patch-vendor_cc-1.0.69_src_lib.rs  |  38 +++++++
 .../files/patch-vendor_openssl-sys_build_main.rs   |  19 ++++
 lang/rust/update.sh                                |  31 ++----
 12 files changed, 144 insertions(+), 89 deletions(-)

diff --git a/Mk/Uses/cargo.mk b/Mk/Uses/cargo.mk
index 89e0d0704013..1636f2da320f 100644
--- a/Mk/Uses/cargo.mk
+++ b/Mk/Uses/cargo.mk
@@ -97,7 +97,7 @@ WRKSRC_crate_${_crate}=	${WRKDIR}/${_wrksrc}
 
 CARGO_BUILDDEP?=	yes
 .if ${CARGO_BUILDDEP:tl} == "yes"
-BUILD_DEPENDS+=	${RUST_DEFAULT}>=1.56.0:lang/${RUST_DEFAULT}
+BUILD_DEPENDS+=	${RUST_DEFAULT}>=1.57.0:lang/${RUST_DEFAULT}
 .endif
 
 # Location of toolchain (default to lang/rust's toolchain)
diff --git a/Mk/bsd.gecko.mk b/Mk/bsd.gecko.mk
index b4500564c0ce..e875a09d7244 100644
--- a/Mk/bsd.gecko.mk
+++ b/Mk/bsd.gecko.mk
@@ -76,7 +76,7 @@ BUNDLE_LIBS=	yes
 
 BUILD_DEPENDS+=	llvm${LLVM_DEFAULT}>0:devel/llvm${LLVM_DEFAULT} \
 				rust-cbindgen>=0.19.0:devel/rust-cbindgen \
-				${RUST_DEFAULT}>=1.56.0:lang/${RUST_DEFAULT} \
+				${RUST_DEFAULT}>=1.57.0:lang/${RUST_DEFAULT} \
 				node:www/node
 LIB_DEPENDS+=	libdrm.so:graphics/libdrm
 RUN_DEPENDS+=	${LOCALBASE}/lib/libpci.so:devel/libpci
diff --git a/lang/rust-bootstrap/Makefile b/lang/rust-bootstrap/Makefile
index d5d0f3a2c3d2..f8e7869e9e39 100644
--- a/lang/rust-bootstrap/Makefile
+++ b/lang/rust-bootstrap/Makefile
@@ -2,7 +2,7 @@
 # to upload them to ~/public_distfiles on freefall in preparation
 # for the next lang/rust update.
 PORTNAME=	rust
-PORTVERSION=	1.56.0
+PORTVERSION=	1.57.0
 CATEGORIES=	lang
 MASTER_SITES=	https://static.rust-lang.org/dist/
 PKGNAMEPREFIX=	${FLAVOR:S/_/-/g}-
diff --git a/lang/rust-bootstrap/distinfo b/lang/rust-bootstrap/distinfo
index d00057677234..6080a9d6b614 100644
--- a/lang/rust-bootstrap/distinfo
+++ b/lang/rust-bootstrap/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1634575103
-SHA256 (rust/rustc-1.56.0-src.tar.xz) = f13468889833c88e744ad579c5d8fbb7ecb53216159b54481a90e5dcdaa9e320
-SIZE (rust/rustc-1.56.0-src.tar.xz) = 121802340
+TIMESTAMP = 1638276833
+SHA256 (rust/rustc-1.57.0-src.tar.xz) = fad07ea1daf9c6195c32e6e9c43ece4565c5f2f1de3c3771574790d6abbc9704
+SIZE (rust/rustc-1.57.0-src.tar.xz) = 122681768
diff --git a/lang/rust/Makefile b/lang/rust/Makefile
index fd1f85d6f42f..9b5f0cc0927f 100644
--- a/lang/rust/Makefile
+++ b/lang/rust/Makefile
@@ -1,7 +1,7 @@
 # Created by: Jyun-Yan You <jyyou@cs.nctu.edu.tw>
 
 PORTNAME=	rust
-PORTVERSION?=	1.56.0
+PORTVERSION?=	1.57.0
 PORTREVISION?=	0
 CATEGORIES=	lang
 MASTER_SITES=	https://static.rust-lang.org/dist/:src \
@@ -37,6 +37,7 @@ USES=		cpe ninja:build pkgconfig python:3.6+,build ssl tar:xz
 CPE_VENDOR=	rust-lang
 
 MAKE_ENV=	DESTDIR=${STAGEDIR} \
+		LIBGIT2_NO_PKG_CONFIG=1 \
 		OPENSSL_DIR="${OPENSSLBASE}" \
 		RUST_BACKTRACE=1
 TEST_ENV=	${MAKE_ENV} \
@@ -66,9 +67,9 @@ WASM_VARS=		_RUST_BUILD_WASM=true \
 			_RUST_TARGETS+=wasm32-unknown-unknown
 WASM_VARS_OFF=		_RUST_BUILD_WASM=false
 
-# See WRKSRC/src/stage0.txt for the date and version values.
-BOOTSTRAPS_DATE?=		2021-09-09
-RUST_BOOTSTRAP_VERSION?=	1.55.0
+# See WRKSRC/src/stage0.json for the date and version values
+BOOTSTRAPS_DATE?=		2021-10-21
+RUST_BOOTSTRAP_VERSION?=	1.56.0
 
 BOOTSTRAPS_SUFFIX?=		${BOOTSTRAPS_SUFFIX_${ARCH}}
 BOOTSTRAPS_SUFFIX_powerpc64?=	-${PPC_ABI:tl}
diff --git a/lang/rust/distinfo b/lang/rust/distinfo
index 5d3d2a69ccd6..ec6a829367ad 100644
--- a/lang/rust/distinfo
+++ b/lang/rust/distinfo
@@ -1,57 +1,57 @@
-TIMESTAMP = 1634575102
-SHA256 (rust/rustc-1.56.0-src.tar.xz) = f13468889833c88e744ad579c5d8fbb7ecb53216159b54481a90e5dcdaa9e320
-SIZE (rust/rustc-1.56.0-src.tar.xz) = 121802340
-SHA256 (rust/2021-09-09/rustc-1.55.0-aarch64-unknown-freebsd.tar.xz) = 29560cf6b45b4dc9a128c17f9d901b54b4d1d3d9cad4d0bdc05aca194b41dd3f
-SIZE (rust/2021-09-09/rustc-1.55.0-aarch64-unknown-freebsd.tar.xz) = 46686528
-SHA256 (rust/2021-09-09/rust-std-1.55.0-aarch64-unknown-freebsd.tar.xz) = eec90b645eefefb3a052be28665cb737f76b660ae2db9a1393b50461ef5ce348
-SIZE (rust/2021-09-09/rust-std-1.55.0-aarch64-unknown-freebsd.tar.xz) = 18828192
-SHA256 (rust/2021-09-09/cargo-1.55.0-aarch64-unknown-freebsd.tar.xz) = 6285f42cd47a6c4ab94a43a6f46094f4a73218dd40dc678ac13d6f378975a137
-SIZE (rust/2021-09-09/cargo-1.55.0-aarch64-unknown-freebsd.tar.xz) = 4479688
-SHA256 (rust/2021-09-09/rustc-1.55.0-x86_64-unknown-freebsd.tar.xz) = 522f5639daa8b4275bbf1479c1a5b2d6c374020b048eefd9bd4b05e9802a4805
-SIZE (rust/2021-09-09/rustc-1.55.0-x86_64-unknown-freebsd.tar.xz) = 42185720
-SHA256 (rust/2021-09-09/rust-std-1.55.0-x86_64-unknown-freebsd.tar.xz) = 99fce10914ccd14f205c96eb80d102cd79a84133183834c5df2b8c5543024194
-SIZE (rust/2021-09-09/rust-std-1.55.0-x86_64-unknown-freebsd.tar.xz) = 19530980
-SHA256 (rust/2021-09-09/cargo-1.55.0-x86_64-unknown-freebsd.tar.xz) = 4b700830a5482979b201ccc6b0b14fe5e6db28a27a70780a305f5be3f452a307
-SIZE (rust/2021-09-09/cargo-1.55.0-x86_64-unknown-freebsd.tar.xz) = 5199584
-SHA256 (rust/2021-09-09/rustc-1.55.0-armv6-unknown-freebsd.tar.xz) = 18f3396cde609f353f1bdde6ae1f669581de1ec9a5a396d5868917f249643155
-SIZE (rust/2021-09-09/rustc-1.55.0-armv6-unknown-freebsd.tar.xz) = 47608836
-SHA256 (rust/2021-09-09/rust-std-1.55.0-armv6-unknown-freebsd.tar.xz) = e086292a71fc513ace373f0208affe402ac4488743e6c2929d92c4d7e0997761
-SIZE (rust/2021-09-09/rust-std-1.55.0-armv6-unknown-freebsd.tar.xz) = 17897508
-SHA256 (rust/2021-09-09/cargo-1.55.0-armv6-unknown-freebsd.tar.xz) = 23f7040f4cb4fcfacf4795449804a8b64db8aa21aac4eb4c5aa6de8adc84c159
-SIZE (rust/2021-09-09/cargo-1.55.0-armv6-unknown-freebsd.tar.xz) = 4607048
-SHA256 (rust/2021-09-09/rustc-1.55.0-armv7-unknown-freebsd.tar.xz) = d067d57b587b342680f0ca18ab1f2af100803dc4bd2b824a8033421b156b14df
-SIZE (rust/2021-09-09/rustc-1.55.0-armv7-unknown-freebsd.tar.xz) = 47647600
-SHA256 (rust/2021-09-09/rust-std-1.55.0-armv7-unknown-freebsd.tar.xz) = c6d71af3d485a67bf48e2277765a22584f52724cd9682782e052a103d816dc6d
-SIZE (rust/2021-09-09/rust-std-1.55.0-armv7-unknown-freebsd.tar.xz) = 18488040
-SHA256 (rust/2021-09-09/cargo-1.55.0-armv7-unknown-freebsd.tar.xz) = 16a16a0d670d6e6e964994a39e531d7eef9e6861806ca9de1d34a3b3ca553394
-SIZE (rust/2021-09-09/cargo-1.55.0-armv7-unknown-freebsd.tar.xz) = 4589416
-SHA256 (rust/2021-09-09/rustc-1.55.0-i686-unknown-freebsd.tar.xz) = b865fc32e5e91111fd2ad90fd893923910cd46e5ab457a8ded6397b74e610d96
-SIZE (rust/2021-09-09/rustc-1.55.0-i686-unknown-freebsd.tar.xz) = 50347892
-SHA256 (rust/2021-09-09/rust-std-1.55.0-i686-unknown-freebsd.tar.xz) = 71e460d7610592e41e8d5e326eb970b2c5584178abbf7c26d8fa215c16398f04
-SIZE (rust/2021-09-09/rust-std-1.55.0-i686-unknown-freebsd.tar.xz) = 19393280
-SHA256 (rust/2021-09-09/cargo-1.55.0-i686-unknown-freebsd.tar.xz) = 94e8f12be0f7c491055fa4f88476d42f7fe4c4775993a7465e6731e27f9b01d6
-SIZE (rust/2021-09-09/cargo-1.55.0-i686-unknown-freebsd.tar.xz) = 5271776
-SHA256 (rust/2021-09-09/rustc-1.55.0-powerpc-unknown-freebsd.tar.xz) = 7c3d2cab681b09aac0711c09a8b3f8d4e178f368cfe5ba51b067b07ca830b20b
-SIZE (rust/2021-09-09/rustc-1.55.0-powerpc-unknown-freebsd.tar.xz) = 49009564
-SHA256 (rust/2021-09-09/rust-std-1.55.0-powerpc-unknown-freebsd.tar.xz) = c20d673c868da9c0b3fa17d6226974151efe4dd6422399b52ba4aa57707541b7
-SIZE (rust/2021-09-09/rust-std-1.55.0-powerpc-unknown-freebsd.tar.xz) = 17595980
-SHA256 (rust/2021-09-09/cargo-1.55.0-powerpc-unknown-freebsd.tar.xz) = a441ccfab4501d1ed2cb8d67bc2c90cacae4d98933c6c82e1ef51cb5a0b3c8c2
-SIZE (rust/2021-09-09/cargo-1.55.0-powerpc-unknown-freebsd.tar.xz) = 5015316
-SHA256 (rust/2021-09-09/rustc-1.55.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = a540d96ba3de0ef26c6a25d6dc8cd05cd8ce70cebca3e8133c3b2ecc3b5f08c0
-SIZE (rust/2021-09-09/rustc-1.55.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = 56762480
-SHA256 (rust/2021-09-09/rust-std-1.55.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = b1781903a25f6b804013a6bf69cc00c8a26279335f7d81776a08db4cfd1cc16d
-SIZE (rust/2021-09-09/rust-std-1.55.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = 17733272
-SHA256 (rust/2021-09-09/cargo-1.55.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = 9c45a3c2e5f0aa4f70d5be85e9791e29ea953d4b2229bd8f7e94f26730f5812b
-SIZE (rust/2021-09-09/cargo-1.55.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = 5060744
-SHA256 (rust/2021-09-09/rustc-1.55.0-powerpc64le-unknown-freebsd.tar.xz) = 73ffacdd8a1b41863464b273cdfaf659492325b25e72ec839c8d2f93c313d860
-SIZE (rust/2021-09-09/rustc-1.55.0-powerpc64le-unknown-freebsd.tar.xz) = 49886844
-SHA256 (rust/2021-09-09/rust-std-1.55.0-powerpc64le-unknown-freebsd.tar.xz) = 4d1dd307b6e632c26ccbf2cdfc18ff38a88e4bc4c9bc517b659b20e48304bb86
-SIZE (rust/2021-09-09/rust-std-1.55.0-powerpc64le-unknown-freebsd.tar.xz) = 17887308
-SHA256 (rust/2021-09-09/cargo-1.55.0-powerpc64le-unknown-freebsd.tar.xz) = 9e6c36063fcf4da9e0725207c569189ab1897403be6e6037f80bda03c16e5c12
-SIZE (rust/2021-09-09/cargo-1.55.0-powerpc64le-unknown-freebsd.tar.xz) = 4994980
-SHA256 (rust/2021-09-09/rustc-1.55.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = 6811bd7329e9f9a37c33e0e1a213190c5b6c26cb4c573555172d029468f032e7
-SIZE (rust/2021-09-09/rustc-1.55.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = 47847012
-SHA256 (rust/2021-09-09/rust-std-1.55.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = 892debb299bb150b8798478627ba3652d8c1f8f02b8b720f21697cda9d4af3a4
-SIZE (rust/2021-09-09/rust-std-1.55.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = 17689860
-SHA256 (rust/2021-09-09/cargo-1.55.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = 1c6ae90f873104cb43be4173cce78d5b354d451fcb37a8dac0538f1e504890d3
-SIZE (rust/2021-09-09/cargo-1.55.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = 4747664
+TIMESTAMP = 1638276823
+SHA256 (rust/rustc-1.57.0-src.tar.xz) = fad07ea1daf9c6195c32e6e9c43ece4565c5f2f1de3c3771574790d6abbc9704
+SIZE (rust/rustc-1.57.0-src.tar.xz) = 122681768
+SHA256 (rust/2021-10-21/rustc-1.56.0-aarch64-unknown-freebsd.tar.xz) = 82a236e2d72daa16743df13f1099958b57551a4a8ed41eb4b59667caa777080a
+SIZE (rust/2021-10-21/rustc-1.56.0-aarch64-unknown-freebsd.tar.xz) = 47996592
+SHA256 (rust/2021-10-21/rust-std-1.56.0-aarch64-unknown-freebsd.tar.xz) = 8820ad8aed80fcddde255b5fdf6eb7113c9a9e618f785238da0e06ffd56ff16d
+SIZE (rust/2021-10-21/rust-std-1.56.0-aarch64-unknown-freebsd.tar.xz) = 19678584
+SHA256 (rust/2021-10-21/cargo-1.56.0-aarch64-unknown-freebsd.tar.xz) = 3d853f970f0b5eade8e8b3aa6eaba32d00eee08936dd6acd0cf4caae583a019c
+SIZE (rust/2021-10-21/cargo-1.56.0-aarch64-unknown-freebsd.tar.xz) = 4559904
+SHA256 (rust/2021-10-21/rustc-1.56.0-x86_64-unknown-freebsd.tar.xz) = bc423830573a46d8cee0efd848da71be9b36115ecf34747da952fcd045f48047
+SIZE (rust/2021-10-21/rustc-1.56.0-x86_64-unknown-freebsd.tar.xz) = 43726460
+SHA256 (rust/2021-10-21/rust-std-1.56.0-x86_64-unknown-freebsd.tar.xz) = 47d9a983de22a43187d5bc1b1c14391590a50d3430b5ee6ab55a9d6baa23cd88
+SIZE (rust/2021-10-21/rust-std-1.56.0-x86_64-unknown-freebsd.tar.xz) = 20550680
+SHA256 (rust/2021-10-21/cargo-1.56.0-x86_64-unknown-freebsd.tar.xz) = 079ae609bd970eb387d3803a91e4fc6628722262cbc8f041a9e5b6848f6684e3
+SIZE (rust/2021-10-21/cargo-1.56.0-x86_64-unknown-freebsd.tar.xz) = 5298904
+SHA256 (rust/2021-10-21/rustc-1.56.0-armv6-unknown-freebsd.tar.xz) = ae0fc0c317cf7fc3d4efd2a3246e86704111019ef3f2ac62d054b0ae907f2822
+SIZE (rust/2021-10-21/rustc-1.56.0-armv6-unknown-freebsd.tar.xz) = 48727792
+SHA256 (rust/2021-10-21/rust-std-1.56.0-armv6-unknown-freebsd.tar.xz) = 71f14d1c93cd0c8cdc5e52fe0febae60fcadbe99ed32a80fb12cf73a25249704
+SIZE (rust/2021-10-21/rust-std-1.56.0-armv6-unknown-freebsd.tar.xz) = 18669524
+SHA256 (rust/2021-10-21/cargo-1.56.0-armv6-unknown-freebsd.tar.xz) = 75494c867ca1f2710edf6b5e43de04a861ffbc01aee7948870c028e5dfba5ca8
+SIZE (rust/2021-10-21/cargo-1.56.0-armv6-unknown-freebsd.tar.xz) = 4705020
+SHA256 (rust/2021-10-21/rustc-1.56.0-armv7-unknown-freebsd.tar.xz) = 40e174760b9a4360d28d2b3104516176dbb0e3c188c6628d1b2abe56d3cc8e03
+SIZE (rust/2021-10-21/rustc-1.56.0-armv7-unknown-freebsd.tar.xz) = 48981152
+SHA256 (rust/2021-10-21/rust-std-1.56.0-armv7-unknown-freebsd.tar.xz) = 3b09cfd7d392b6047ac1e9ffff065b3dc803e4afe8b6b41b96111d9f5f9b9ecf
+SIZE (rust/2021-10-21/rust-std-1.56.0-armv7-unknown-freebsd.tar.xz) = 19441136
+SHA256 (rust/2021-10-21/cargo-1.56.0-armv7-unknown-freebsd.tar.xz) = 4f9b55eff84c6011fdcbffca2ebdbc939340a35f87f95ab1fa00f18a342a7679
+SIZE (rust/2021-10-21/cargo-1.56.0-armv7-unknown-freebsd.tar.xz) = 4692220
+SHA256 (rust/2021-10-21/rustc-1.56.0-i686-unknown-freebsd.tar.xz) = db1a697eced4bc65b36ddf590b8c0bb5b8c50a75032b7a3e088c8fe1b2c86c52
+SIZE (rust/2021-10-21/rustc-1.56.0-i686-unknown-freebsd.tar.xz) = 52722604
+SHA256 (rust/2021-10-21/rust-std-1.56.0-i686-unknown-freebsd.tar.xz) = f48e0b23e0979bc44db13b4470d65eb057c68f508af1df5e1f38497cc66e8e2f
+SIZE (rust/2021-10-21/rust-std-1.56.0-i686-unknown-freebsd.tar.xz) = 20434844
+SHA256 (rust/2021-10-21/cargo-1.56.0-i686-unknown-freebsd.tar.xz) = 748b14fa68924216c7a08bebb2758933f923feabc4cabefb8356924ea4515aae
+SIZE (rust/2021-10-21/cargo-1.56.0-i686-unknown-freebsd.tar.xz) = 5438960
+SHA256 (rust/2021-10-21/rustc-1.56.0-powerpc-unknown-freebsd.tar.xz) = 76638a9b16960288aea7efdea4249b96a931b2f93b88ad8b4614c046ebc41206
+SIZE (rust/2021-10-21/rustc-1.56.0-powerpc-unknown-freebsd.tar.xz) = 49648024
+SHA256 (rust/2021-10-21/rust-std-1.56.0-powerpc-unknown-freebsd.tar.xz) = d06ff829d0fbc05fe740f60d648f2768f6907b21747f8dfc3ca38b8dde5d55de
+SIZE (rust/2021-10-21/rust-std-1.56.0-powerpc-unknown-freebsd.tar.xz) = 18478484
+SHA256 (rust/2021-10-21/cargo-1.56.0-powerpc-unknown-freebsd.tar.xz) = e4668521bc16b5b81b61280ff601f016185299cf4c74b07e1ea023704b7ef1f6
+SIZE (rust/2021-10-21/cargo-1.56.0-powerpc-unknown-freebsd.tar.xz) = 5054048
+SHA256 (rust/2021-10-21/rustc-1.56.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = d5f6563c40110e0d5e63e1ce0fbd1a8522d4da80de8a04d56313cfde0f906a58
+SIZE (rust/2021-10-21/rustc-1.56.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = 58767712
+SHA256 (rust/2021-10-21/rust-std-1.56.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = f8f40ff0d3592766b95e66d048fe7724110970d5274281e72073ce3bd70411fb
+SIZE (rust/2021-10-21/rust-std-1.56.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = 18692716
+SHA256 (rust/2021-10-21/cargo-1.56.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = a623c36df322e4dc5376821387c4121499cc799e933d04a45b934d4731d84b38
+SIZE (rust/2021-10-21/cargo-1.56.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = 5105400
+SHA256 (rust/2021-10-21/rustc-1.56.0-powerpc64le-unknown-freebsd.tar.xz) = 7edfbf3c163742ca56401dcf44ad7d54ebe4dc8fae4b8c111b46e5583abde2bd
+SIZE (rust/2021-10-21/rustc-1.56.0-powerpc64le-unknown-freebsd.tar.xz) = 50451092
+SHA256 (rust/2021-10-21/rust-std-1.56.0-powerpc64le-unknown-freebsd.tar.xz) = d713bb476500e87b9b1a4bc3f1caa7912d586727ad0a7b0792911358cb5efde0
+SIZE (rust/2021-10-21/rust-std-1.56.0-powerpc64le-unknown-freebsd.tar.xz) = 18805860
+SHA256 (rust/2021-10-21/cargo-1.56.0-powerpc64le-unknown-freebsd.tar.xz) = c29c558c07d09e56c0288d2c9528b63311072ca491a047b9588ea3320d1699bb
+SIZE (rust/2021-10-21/cargo-1.56.0-powerpc64le-unknown-freebsd.tar.xz) = 5046108
+SHA256 (rust/2021-10-21/rustc-1.56.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = b5f715c8b66e53ae3ef4a0dcd6fd70b033595316ded47c5b733c34408e8bf1e5
+SIZE (rust/2021-10-21/rustc-1.56.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = 48308540
+SHA256 (rust/2021-10-21/rust-std-1.56.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = 012200453f449bd1a5b7b43ccafe11fa6169b6bf3c009f5de689740a43bd39ec
+SIZE (rust/2021-10-21/rust-std-1.56.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = 18631992
+SHA256 (rust/2021-10-21/cargo-1.56.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = b4d09cf715f0be1aa3a0d681e8e2f9de5d254422bb813bd5ed3a3d4df57823cd
+SIZE (rust/2021-10-21/cargo-1.56.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = 4791156
diff --git a/lang/rust/files/patch-src_bootstrap_lib.rs b/lang/rust/files/no-hardlinks/patch-src_bootstrap_lib.rs
similarity index 100%
rename from lang/rust/files/patch-src_bootstrap_lib.rs
rename to lang/rust/files/no-hardlinks/patch-src_bootstrap_lib.rs
diff --git a/lang/rust/files/patch-src_bootstrap_native.rs b/lang/rust/files/no-hardlinks/patch-src_bootstrap_native.rs
similarity index 100%
rename from lang/rust/files/patch-src_bootstrap_native.rs
rename to lang/rust/files/no-hardlinks/patch-src_bootstrap_native.rs
diff --git a/lang/rust/files/patch-library_backtrace_src_backtrace_mod.rs b/lang/rust/files/patch-library_backtrace_src_backtrace_mod.rs
new file mode 100644
index 000000000000..3c0a3238824f
--- /dev/null
+++ b/lang/rust/files/patch-library_backtrace_src_backtrace_mod.rs
@@ -0,0 +1,10 @@
+--- library/backtrace/src/backtrace/mod.rs.orig	2021-11-10 18:42:11 UTC
++++ library/backtrace/src/backtrace/mod.rs
+@@ -138,6 +138,7 @@ cfg_if::cfg_if! {
+                 unix,
+                 not(target_os = "emscripten"),
+                 not(all(target_os = "ios", target_arch = "arm")),
++                not(all(target_os = "freebsd", target_arch = "arm")),
+             ),
+             all(
+                 target_env = "sgx",
diff --git a/lang/rust/files/patch-vendor_cc-1.0.69_src_lib.rs b/lang/rust/files/patch-vendor_cc-1.0.69_src_lib.rs
new file mode 100644
index 000000000000..1027757e0c34
--- /dev/null
+++ b/lang/rust/files/patch-vendor_cc-1.0.69_src_lib.rs
@@ -0,0 +1,38 @@
+When the compiler has "clang" in its name the cc crate will pass
+an LLVM target triple to it.  Rust uses a triple that lacks the OS
+version and LLVM will default to FreeBSD 9 behavior, i.e., it will
+default to libstdc++ which is no longer available in newer releases.
+
+To avoid this issue assume we have a GNU compatible toolchain instead
+until LLVM can be updated to use libc++ by default.
+
+https://reviews.llvm.org/D77776
+
+--- vendor/cc-1.0.69/src/lib.rs.orig	2021-03-04 20:58:54 UTC
++++ vendor/cc-1.0.69/src/lib.rs
+@@ -2659,24 +2659,7 @@ impl Tool {
+     }
+ 
+     fn with_features(path: PathBuf, clang_driver: Option<&str>, cuda: bool) -> Self {
+-        // Try to detect family of the tool from its name, falling back to Gnu.
+-        let family = if let Some(fname) = path.file_name().and_then(|p| p.to_str()) {
+-            if fname.contains("clang-cl") {
+-                ToolFamily::Msvc { clang_cl: true }
+-            } else if fname.ends_with("cl") || fname == "cl.exe" {
+-                ToolFamily::Msvc { clang_cl: false }
+-            } else if fname.contains("clang") {
+-                match clang_driver {
+-                    Some("cl") => ToolFamily::Msvc { clang_cl: true },
+-                    _ => ToolFamily::Clang,
+-                }
+-            } else {
+-                ToolFamily::Gnu
+-            }
+-        } else {
+-            ToolFamily::Gnu
+-        };
+-
++        let family = ToolFamily::Gnu;
+         Tool {
+             path: path,
+             cc_wrapper_path: None,
diff --git a/lang/rust/files/patch-vendor_openssl-sys_build_main.rs b/lang/rust/files/patch-vendor_openssl-sys_build_main.rs
new file mode 100644
index 000000000000..547703bdc469
--- /dev/null
+++ b/lang/rust/files/patch-vendor_openssl-sys_build_main.rs
@@ -0,0 +1,19 @@
+--- vendor/openssl-sys/build/main.rs.orig	2021-11-29 20:27:34 UTC
++++ vendor/openssl-sys/build/main.rs
+@@ -237,6 +237,7 @@ See rust-openssl README for more information:
+             (3, 3, 0) => ('3', '3', '0'),
+             (3, 3, 1) => ('3', '3', '1'),
+             (3, 3, _) => ('3', '3', 'x'),
++            (3, 4, _) => ('3', '4', 'x'),
+             _ => version_error(),
+         };
+ 
+@@ -279,7 +280,7 @@ fn version_error() -> ! {
+         "
+ 
+ This crate is only compatible with OpenSSL 1.0.1 through 1.1.1, or LibreSSL 2.5
+-through 3.3.x, but a different version of OpenSSL was found. The build is now aborting
++through 3.4.x, but a different version of OpenSSL was found. The build is now aborting
+ due to this version mismatch.
+ 
+ "
diff --git a/lang/rust/update.sh b/lang/rust/update.sh
index 030ba5888a36..a2cf1ec8f3fa 100644
--- a/lang/rust/update.sh
+++ b/lang/rust/update.sh
@@ -1,38 +1,25 @@
 #!/bin/sh
-# Requires: pkg install portfmt
+# Requires: pkg install portfmt yq
 # Run in lang/rust
 set -eu
 
-get_commit() {
-	awk '
-$1 == "[pkg.rustc]" { pkg_rustc = 1 }
-pkg_rustc && $1 == "git_commit_hash" {
-	print substr($3, 2, 10)
-	exit
-}'
-}
-
 fetch -qo /tmp/channel-rust-stable.toml https://dev-static.rust-lang.org/dist/channel-rust-stable.toml
-version=$(</tmp/channel-rust-stable.toml awk '
-$1 == "[pkg.rustc]" { pkg_rustc = 1 }
-pkg_rustc && $1 == "version" {
-	print substr($3, 2, length($3) - 1)
-	exit
-}')
-new_commit=$(</tmp/channel-rust-stable.toml get_commit)
+version=$(</tmp/channel-rust-stable.toml tomlq -r '.pkg.rustc.version | split(" ")[0]')
+new_commit=$(</tmp/channel-rust-stable.toml tomlq -r '.pkg.rustc.git_commit_hash')
 rm /tmp/channel-rust-stable.toml
 
-fetch -qo - https://raw.githubusercontent.com/rust-lang/rust/${new_commit}/src/stage0.txt | awk '
-$1 == "date:" { date = $2 }
-$1 == "rustc:" { rustc = $2 }
-END { printf("BOOTSTRAPS_DATE=%s\nRUST_BOOTSTRAP_VERSION=%s\n", date, rustc) }' | portedit merge -i .
+fetch -qo - https://raw.githubusercontent.com/rust-lang/rust/${new_commit}/src/stage0.json | jq -r '
+	"BOOTSTRAPS_DATE=\(.compiler.date)",
+	"RUST_BOOTSTRAP_VERSION=\(.compiler.version)"
+' | portedit merge -i .
 
 sed -i '' -E -e "s,(\\$\\{RUST_DEFAULT\\}>=).*(:lang/\\$\\{RUST_DEFAULT\\}),\\1${version}\\2," \
 	../../Mk/Uses/cargo.mk ../../Mk/bsd.gecko.mk
 
 portedit set-version -i "${version}" .
-make makesum
 portedit set-version -i "${version}" ../rust-bootstrap
+
+make makesum
 make -C ../rust-bootstrap makesum
 
 echo "lang/rust: Update to ${version}