From 0db71a170b6b1815c1fada99d385cc5f00e07d4c Mon Sep 17 00:00:00 2001
From: Jan Beich <jbeich@FreeBSD.org>
Date: Thu, 18 Aug 2022 11:15:25 +0000
Subject: [PATCH] games/veloren: unbreak with rust 1.63

error: expected one of `!` or `::`, found keyword `mod`
   --> cargo-crates/packed_simd_2-0.3.7/src/lib.rs:347:7
    |
347 | crate mod llvm {
    |       ^^^ expected one of `!` or `::`

error[E0433]: failed to resolve: could not find `OnceCell` in `lazy`
   --> voxygen/src/scene/terrain.rs:558:32
    |
558 |         let init = core::lazy::OnceCell::new();
    |                                ^^^^^^^^ not found in `core::lazy`
    |

Reported by:	mikael (via D36247)
---
 games/veloren/Makefile              |  2 +-
 games/veloren/distinfo              |  4 +--
 games/veloren/files/patch-rust-1.63 | 51 +++++++++++++++++++++++++++++
 3 files changed, 54 insertions(+), 3 deletions(-)
 create mode 100644 games/veloren/files/patch-rust-1.63

diff --git a/games/veloren/Makefile b/games/veloren/Makefile
index 4badfde39818..5a84669e10e8 100644
--- a/games/veloren/Makefile
+++ b/games/veloren/Makefile
@@ -409,7 +409,7 @@ CARGO_CRATES=	ab_glyph-0.2.15 \
 		os_str_bytes-6.0.0 \
 		owned_ttf_parser-0.6.0 \
 		owned_ttf_parser-0.15.0 \
-		packed_simd_2-0.3.7 \
+		packed_simd_2-0.3.8 \
 		parking_lot-0.10.2 \
 		parking_lot-0.11.2 \
 		parking_lot-0.12.0 \
diff --git a/games/veloren/distinfo b/games/veloren/distinfo
index 566198c1e6d4..536dce66d282 100644
--- a/games/veloren/distinfo
+++ b/games/veloren/distinfo
@@ -751,8 +751,8 @@ SHA256 (rust/crates/owned_ttf_parser-0.6.0.crate) = 9f923fb806c46266c02ab4a5b239
 SIZE (rust/crates/owned_ttf_parser-0.6.0.crate) = 20574
 SHA256 (rust/crates/owned_ttf_parser-0.15.0.crate) = 4fb1e509cfe7a12db2a90bfa057dfcdbc55a347f5da677c506b53dd099cfec9d
 SIZE (rust/crates/owned_ttf_parser-0.15.0.crate) = 23088
-SHA256 (rust/crates/packed_simd_2-0.3.7.crate) = defdcfef86dcc44ad208f71d9ff4ce28df6537a4e0d6b0e8e845cb8ca10059a6
-SIZE (rust/crates/packed_simd_2-0.3.7.crate) = 97413
+SHA256 (rust/crates/packed_simd_2-0.3.8.crate) = a1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282
+SIZE (rust/crates/packed_simd_2-0.3.8.crate) = 97388
 SHA256 (rust/crates/parking_lot-0.10.2.crate) = d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e
 SIZE (rust/crates/parking_lot-0.10.2.crate) = 39536
 SHA256 (rust/crates/parking_lot-0.11.2.crate) = 7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99
diff --git a/games/veloren/files/patch-rust-1.63 b/games/veloren/files/patch-rust-1.63
new file mode 100644
index 000000000000..c578c188947f
--- /dev/null
+++ b/games/veloren/files/patch-rust-1.63
@@ -0,0 +1,51 @@
+error: expected one of `!` or `::`, found keyword `mod`
+   --> cargo-crates/packed_simd_2-0.3.7/src/lib.rs:347:7
+    |
+347 | crate mod llvm {
+    |       ^^^ expected one of `!` or `::`
+
+error[E0433]: failed to resolve: could not find `OnceCell` in `lazy`
+   --> voxygen/src/scene/terrain.rs:558:32
+    |
+558 |         let init = core::lazy::OnceCell::new();
+    |                                ^^^^^^^^ not found in `core::lazy`
+    |
+help: consider importing one of these items
+    |
+3   | use core::cell::OnceCell;
+    |
+3   | use std::cell::OnceCell;
+    |
+3   | use tokio::sync::OnceCell;
+    |
+help: if you import `OnceCell`, refer to it directly
+    |
+558 -         let init = core::lazy::OnceCell::new();
+558 +         let init = OnceCell::new();
+    |
+
+--- Cargo.lock.orig	2022-07-23 13:15:01 UTC
++++ Cargo.lock
+@@ -4025,9 +4025,9 @@ name = "packed_simd_2"
+ 
+ [[package]]
+ name = "packed_simd_2"
+-version = "0.3.7"
++version = "0.3.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "defdcfef86dcc44ad208f71d9ff4ce28df6537a4e0d6b0e8e845cb8ca10059a6"
++checksum = "a1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282"
+ dependencies = [
+  "cfg-if 1.0.0",
+  "libm 0.1.4",
+--- voxygen/src/scene/terrain.rs.orig	2022-07-23 13:15:01 UTC
++++ voxygen/src/scene/terrain.rs
+@@ -555,7 +555,7 @@ impl SpriteRenderContext {
+             }
+         });
+ 
+-        let init = core::lazy::OnceCell::new();
++        let init = core::cell::OnceCell::new();
+         let mut join_handle = Some(join_handle);
+         let mut closure = move |renderer: &mut Renderer| {
+             // The second unwrap can only fail if the sprite meshing thread panics, which
