diff --git a/games/veloren-weekly/Makefile b/games/veloren-weekly/Makefile index de4649288b9b..c69aff637ca3 100644 --- a/games/veloren-weekly/Makefile +++ b/games/veloren-weekly/Makefile @@ -1,82 +1,82 @@ PORTNAME= veloren PORTVERSION= s20230607 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= games wayland PKGNAMESUFFIX= -weekly MAINTAINER= jbeich@FreeBSD.org COMMENT= Multiplayer voxel RPG written in Rust (weekly snapshot) WWW= https://veloren.net/ LICENSE= GPLv3 LICENSE_FILE= ${WRKSRC}/LICENSE BROKEN_aarch64= https://github.com/rust-lang/libc/issues/3217 ONLY_FOR_ARCHS= aarch64 amd64 i386 # https://gitlab.com/veloren/veloren/-/issues/1006 ONLY_FOR_ARCHS_REASON= unsupported platform by https://github.com/wasmerio/wasmer LIB_DEPENDS= libasound.so:audio/alsa-lib \ libudev.so:devel/libudev-devd \ libshaderc_shared.so:graphics/shaderc RUN_DEPENDS= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins \ ${LOCALBASE}/lib/libvulkan.so:graphics/vulkan-loader USES= cargo xorg USE_XORG= xcb USE_GITLAB= yes GL_COMMIT= 28ee38ad1b3bfe4309dcce8b040289912416df01 CARGO_ENV= VELOREN_USERDATA_STRATEGY=system SHADERC_LIB_DIR="${LOCALBASE}/lib" PLIST_FILES= bin/${PORTNAME}-server-cli \ bin/${PORTNAME}-voxygen \ share/applications/net.veloren.veloren.desktop \ share/metainfo/net.veloren.veloren.metainfo.xml \ share/pixmaps/net.veloren.veloren.png PORTDATA= * CONFLICTS_INSTALL= ${PORTNAME} .if ${MACHINE_ARCH} == i386 # Fixes error "Rust cannot catch foreign exceptions" CARGO_ENV+= CARGO_PROFILE_RELEASE_LTO=false .endif # Fixes error "Instruction does not dominate all uses!" LTO_UNSAFE= yes # https://gitlab.com/veloren/veloren/issues/264 CARGO_ENV+= RUSTC_BOOTSTRAP=1 # XXX https://github.com/rust-lang/cargo/issues/4101 CARGO_INSTALL_PATH= server-cli voxygen post-patch: # .git/ directory is missing, so don't abort if git binary is also missing @${REINPLACE_CMD} -e 's/"git"/"${TRUE}"/' \ ${WRKSRC}/common/build.rs # Extract (snapshot) version from the port instead of empty file @${REINPLACE_CMD} -e '/GIT_HASH/s/=.*/= "${GL_COMMIT:C/(.{8}).*/\1/}";/' \ -e "/GIT_DATE.*static/s/=.*/= \"$$(date -ur $$(${AWK} '/TIMESTAMP/ { print $$3 }' \ ${DISTINFO_FILE}) +'%Y-%m-%d-%H:%M')\";/" \ ${WRKSRC}/common/src/util/mod.rs # Respect PREFIX != /usr/local for system assets @${REINPLACE_CMD} -e 's,/usr/share,${DATADIR:H},' \ ${WRKSRC}/common/assets/src/lib.rs do-install: # XXX [workspace.dependencies] breaks rebuild in subdirs .for f in ${CARGO_INSTALL_PATH} ${INSTALL_PROGRAM} ${CARGO_TARGET_DIR}/*/*/${PORTNAME}-$f \ ${STAGEDIR}${PREFIX}/bin .endfor post-install: ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/* (cd ${WRKSRC} && ${COPYTREE_SHARE} assets ${STAGEDIR}${DATADIR}) ${RLN} ${STAGEDIR}${DATADIR}/assets/voxygen/*.desktop \ ${STAGEDIR}${PREFIX}/share/applications ${RLN} ${STAGEDIR}${DATADIR}/assets/voxygen/*.png \ ${STAGEDIR}${PREFIX}/share/pixmaps ${MKDIR} ${STAGEDIR}${PREFIX}/share/metainfo ${RLN} ${STAGEDIR}${DATADIR}/assets/voxygen/*.metainfo.xml \ ${STAGEDIR}${PREFIX}/share/metainfo .include diff --git a/games/veloren-weekly/files/patch-rust-1.69 b/games/veloren-weekly/files/patch-rust-1.69 deleted file mode 100644 index a1778a37bea3..000000000000 --- a/games/veloren-weekly/files/patch-rust-1.69 +++ /dev/null @@ -1,475 +0,0 @@ -Revert https://gitlab.com/veloren/veloren/-/commit/95bca5418af7 -until lang/rust >= 1.70 update e.g., - -https://github.com/rust-lang/rust/commit/8a7ca936e61d - -error[E0658]: use of unstable library feature 'once_cell' - --> voxygen/src/scene/terrain.rs:620:20 - | -620 | let init = core::cell::OnceCell::new(); - | ^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #74465 for more information - = help: add `#![feature(once_cell)]` to the crate attributes to enable - -error[E0658]: use of unstable library feature 'once_cell' - --> voxygen/src/scene/terrain.rs:620:20 - | -620 | let init = core::cell::OnceCell::new(); - | ^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #74465 for more information - = help: add `#![feature(once_cell)]` to the crate attributes to enable - -error[E0658]: use of unstable library feature 'once_cell' - --> voxygen/src/scene/terrain.rs:656:39 - | -656 | Box::new(move |renderer| init.get_or_init(|| closure(renderer)).clone()) - | ^^^^^^^^^^^ - | - = note: see issue #74465 for more information - = help: add `#![feature(once_cell)]` to the crate attributes to enable - -diff --git client/src/bin/bot/main.rs client/src/bin/bot/main.rs -index ca7298d81b7e..f1c31e449b71 100644 ---- client/src/bin/bot/main.rs -+++ client/src/bin/bot/main.rs -@@ -117,6 +117,7 @@ impl BotClient { - pub fn handle_register(&mut self, prefix: &str, password: &str, count: Option) { - let usernames = match count { - Some(n) => (0..n) -+ .into_iter() - .map(|i| format!("{}{:03}", prefix, i)) - .collect::>(), - None => vec![prefix.to_string()], -diff --git common/src/comp/agent.rs common/src/comp/agent.rs -index 6fd73d380dae..39f9d232052e 100644 ---- common/src/comp/agent.rs -+++ common/src/comp/agent.rs -@@ -503,7 +503,7 @@ impl Timer { - /// Reset the timer for the given action, returning true if the timer was - /// not already reset. - pub fn reset(&mut self, action: TimerAction) -> bool { -- self.action_starts[Self::idx_for(action)].take().is_some() -+ std::mem::replace(&mut self.action_starts[Self::idx_for(action)], None).is_some() - } - - /// Start the timer for the given action, even if it was already started. -diff --git common/src/comp/inventory/item/mod.rs common/src/comp/inventory/item/mod.rs -index 2716aac923e3..06c9a49a21bf 100644 ---- common/src/comp/inventory/item/mod.rs -+++ common/src/comp/inventory/item/mod.rs -@@ -330,7 +330,7 @@ impl ItemKind { - // Used for inventory sorting, what comes before the first colon (:) is used as - // a broader category - pub fn get_itemkind_string(&self) -> String { -- match self { -+ let result = match self { - // Using tool and toolkind to sort tools by kind - ItemKind::Tool(tool) => format!("Tool: {:?}", tool.kind), - ItemKind::ModularComponent(modular_component) => { -@@ -346,7 +346,8 @@ impl ItemKind { - ItemKind::Utility { kind } => format!("Utility: {:?}", kind), - ItemKind::Ingredient { descriptor } => format!("Ingredient: {}", descriptor), - ItemKind::TagExamples { item_ids } => format!("TagExamples: {:?}", item_ids), -- } -+ }; -+ result - } - - pub fn has_durability(&self) -> bool { -diff --git common/src/comp/skillset/mod.rs common/src/comp/skillset/mod.rs -index 6b14321b5e65..21bb5ebda3fd 100644 ---- common/src/comp/skillset/mod.rs -+++ common/src/comp/skillset/mod.rs -@@ -81,6 +81,7 @@ lazy_static! { - .map(|skill| { - let max_level = skill.max_level(); - (1..=max_level) -+ .into_iter() - .map(|level| skill.skill_cost(level)) - .sum::() - }) -diff --git common/src/skillset_builder.rs common/src/skillset_builder.rs -index d330f2c834b7..f3df4511f1aa 100644 ---- common/src/skillset_builder.rs -+++ common/src/skillset_builder.rs -@@ -112,7 +112,8 @@ impl SkillSetBuilder { - pub fn with_skill(mut self, skill: Skill, level: u16) -> Self { - let Some(group) = skill.skill_group_kind() else { - let err = format!( -- "Tried to add skill: {skill:?} which does not have an associated skill group." -+ "Tried to add skill: {:?} which does not have an associated skill group.", -+ skill - ); - common_base::dev_panic!(err, or return self); - }; -@@ -120,7 +121,8 @@ impl SkillSetBuilder { - let SkillSetBuilder(ref mut skill_set) = self; - if skill_is_applied(skill_set, skill, level) { - let err = format!( -- "Tried to add skill: {skill:?} with level {level:?} which is already applied" -+ "Tried to add skill: {:?} with level {:?} which is already applied", -+ skill, level, - ); - common_base::dev_panic!(err, or return self); - } -@@ -133,8 +135,9 @@ impl SkillSetBuilder { - } - if !skill_is_applied(skill_set, skill, level) { - let err = format!( -- "Failed to add skill: {skill:?}. Verify that it has the appropriate skill group \ -- available and meets all prerequisite skills." -+ "Failed to add skill: {:?}. Verify that it has the appropriate skill group \ -+ available and meets all prerequisite skills.", -+ skill - ); - common_base::dev_panic!(err); - } -diff --git common/src/terrain/biome.rs common/src/terrain/biome.rs -index c40956863fb0..8b6c83c8b4b3 100644 ---- common/src/terrain/biome.rs -+++ common/src/terrain/biome.rs -@@ -1,9 +1,8 @@ - use serde::{Deserialize, Serialize}; - use strum::EnumIter; - --#[derive(Default, Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq, Hash, EnumIter)] -+#[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq, Hash, EnumIter)] - pub enum BiomeKind { -- #[default] - Void, - Lake, - Grassland, -@@ -17,3 +16,7 @@ pub enum BiomeKind { - Savannah, - Taiga, - } -+ -+impl Default for BiomeKind { -+ fn default() -> BiomeKind { BiomeKind::Void } -+} -diff --git common/src/terrain/site.rs common/src/terrain/site.rs -index 8358daaf2d24..fdcee627fd8c 100644 ---- common/src/terrain/site.rs -+++ common/src/terrain/site.rs -@@ -1,12 +1,11 @@ - use serde::{Deserialize, Serialize}; - --#[derive(Default, Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq)] -+#[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq)] - pub enum SiteKindMeta { - Dungeon(DungeonKindMeta), - Cave, - Settlement(SettlementKindMeta), - Castle, -- #[default] - Void, - } - -@@ -23,3 +22,7 @@ pub enum SettlementKindMeta { - DesertCity, - SavannahPit, - } -+ -+impl Default for SiteKindMeta { -+ fn default() -> SiteKindMeta { SiteKindMeta::Void } -+} -diff --git common/src/typed.rs common/src/typed.rs -index 752c8d908dcf..ea7d97f66a19 100644 ---- common/src/typed.rs -+++ common/src/typed.rs -@@ -321,7 +321,7 @@ macro_rules! make_case_elim { - elim.reduce(((self,), context)) - } - -- pub fn elim_case_pure<'a, Type>(&self, cases: &'a $mod::PureCases) -> &'a Type -+ pub fn elim_case_pure<'a, 'b, Type>(&'a self, cases: &'b $mod::PureCases) -> &'b Type - { - let (expr, ()) = self.elim(cases, ()); - expr -@@ -425,7 +425,7 @@ macro_rules! make_proj_elim { - elim.reduce(((self,), context)) - } - -- pub fn elim_proj_pure<'a, Type>(&self, cases: &'a $mod::PureProj) -> &'a Type -+ pub fn elim_proj_pure<'a, 'b, Type>(&'a self, cases: &'b $mod::PureProj) -> &'b Type - { - let (expr, ()) = self.elim(cases, ()); - expr -diff --git rust-toolchain rust-toolchain -index b27a258d1a80..c7c621708744 100644 ---- rust-toolchain -+++ rust-toolchain -@@ -1 +1 @@ --nightly-2023-04-20 -+nightly-2022-11-28 -diff --git server/src/events/inventory_manip.rs server/src/events/inventory_manip.rs -index f86f23d31fba..bb62a7ba0305 100644 ---- server/src/events/inventory_manip.rs -+++ server/src/events/inventory_manip.rs -@@ -786,6 +786,7 @@ pub fn handle_inventory(server: &mut Server, entity: EcsEntity, manip: comp::Inv - }) - .and_then(|r| { - let items = (0..amount) -+ .into_iter() - .filter_map(|_| { - r.craft_simple( - &mut inventory, -diff --git server/src/sys/chunk_serialize.rs server/src/sys/chunk_serialize.rs -index 4226ea0429f3..0810aa9951a9 100644 ---- server/src/sys/chunk_serialize.rs -+++ server/src/sys/chunk_serialize.rs -@@ -110,6 +110,7 @@ impl<'a> System<'a> for Sys { - .get_key_arc_real(chunk_key) - .map(|chunk| (Arc::clone(chunk), chunk_key, meta)) - }) -+ .into_iter() - .peekable(); - - while chunks_iter.peek().is_some() { -diff --git voxygen/src/lib.rs voxygen/src/lib.rs -index bee0a875709e..ccb5eb34d3e5 100644 ---- voxygen/src/lib.rs -+++ voxygen/src/lib.rs -@@ -6,6 +6,7 @@ - array_methods, - array_zip, - drain_filter, -+ once_cell, - trait_alias, - option_get_or_insert_default, - map_try_insert, -diff --git voxygen/src/render/mod.rs voxygen/src/render/mod.rs -index 9764930c0cc2..d77cf8806a5b 100644 ---- voxygen/src/render/mod.rs -+++ voxygen/src/render/mod.rs -@@ -70,13 +70,12 @@ pub trait Vertex: Clone + bytemuck::Pod { - - use serde::{Deserialize, Serialize}; - /// Anti-aliasing modes --#[derive(Default, PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize)] -+#[derive(PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize)] - pub enum AaMode { - /// Fast approximate antialiasing. - /// - /// This is a screen-space technique, and therefore works fine with greedy - /// meshing. -- #[default] - Fxaa, - /// Multisampling AA, up to 4 samples per pixel. - /// -@@ -122,8 +121,12 @@ impl AaMode { - } - } - -+impl Default for AaMode { -+ fn default() -> Self { AaMode::Fxaa } -+} -+ - /// Cloud modes --#[derive(Default, PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize)] -+#[derive(PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize)] - pub enum CloudMode { - /// No clouds. As cheap as it gets. - None, -@@ -141,7 +144,6 @@ pub enum CloudMode { - Ultra, - /// Lots of detail with good-but-costly derivation of parameters. - #[serde(other)] -- #[default] - High, - } - -@@ -149,8 +151,12 @@ impl CloudMode { - pub fn is_enabled(&self) -> bool { *self != CloudMode::None } - } - -+impl Default for CloudMode { -+ fn default() -> Self { CloudMode::High } -+} -+ - /// Fluid modes --#[derive(Default, PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize)] -+#[derive(PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize)] - pub enum FluidMode { - /// "Low" water. This water implements no waves, no reflections, no - /// diffraction, and no light attenuation through water. As a result, -@@ -174,26 +180,32 @@ pub enum FluidMode { - /// which causes attenuation to be computed incorrectly; this can be - /// addressed by using shadow maps (at least for terrain). - #[serde(other)] -- #[default] - Medium, - } - -+impl Default for FluidMode { -+ fn default() -> Self { FluidMode::Medium } -+} -+ - /// Reflection modes --#[derive(Default, PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize)] -+#[derive(PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize)] - pub enum ReflectionMode { - /// No or minimal reflections. - Low, - /// High quality reflections with screen-space raycasting and - /// all the bells & whistles. -- #[default] - High, - // Medium quality screen-space reflections. - #[serde(other)] - Medium, - } - -+impl Default for ReflectionMode { -+ fn default() -> Self { ReflectionMode::High } -+} -+ - /// Lighting modes --#[derive(Default, PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize)] -+#[derive(PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize)] - pub enum LightingMode { - /// Ashikhmin-Shirley BRDF lighting model. Attempts to generate a - /// physically plausible (to some extent) lighting distribution. -@@ -210,10 +222,13 @@ pub enum LightingMode { - /// Standard Blinn-Phong shading, combing Lambertian diffuse reflections and - /// specular highlights. - #[serde(other)] -- #[default] - BlinnPhong, - } - -+impl Default for LightingMode { -+ fn default() -> Self { LightingMode::BlinnPhong } -+} -+ - /// Shadow map settings. - #[derive(PartialEq, Clone, Copy, Debug, Serialize, Deserialize)] - pub struct ShadowMapMode { -@@ -299,7 +314,7 @@ impl From for wgpu::PresentMode { - - /// Bloom factor - /// Controls fraction of output image luminosity that is blurred bloom --#[derive(Default, PartialEq, Clone, Copy, Debug, Serialize, Deserialize)] -+#[derive(PartialEq, Clone, Copy, Debug, Serialize, Deserialize)] - pub enum BloomFactor { - Low, - High, -@@ -307,10 +322,13 @@ pub enum BloomFactor { - Custom(f32), - // other variant has to be placed last - #[serde(other)] -- #[default] - Medium, - } - -+impl Default for BloomFactor { -+ fn default() -> Self { Self::Medium } -+} -+ - impl BloomFactor { - /// Fraction of output image luminosity that is blurred bloom - pub fn fraction(self) -> f32 { -diff --git voxygen/src/window.rs voxygen/src/window.rs -index 0713ad4a0eaf..fd1e62ae04fe 100644 ---- voxygen/src/window.rs -+++ voxygen/src/window.rs -@@ -1359,14 +1359,16 @@ impl Window { - pub fn scale_factor(&self) -> f64 { self.scale_factor } - } - --#[derive(Default, Copy, Clone, Hash, Eq, PartialEq, Debug, Serialize, Deserialize)] -+#[derive(Copy, Clone, Hash, Eq, PartialEq, Debug, Serialize, Deserialize)] - pub enum FullscreenMode { - Exclusive, - #[serde(other)] -- #[default] - Borderless, - } - -+impl Default for FullscreenMode { -+ fn default() -> Self { FullscreenMode::Borderless } -+} - #[derive(PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize)] - #[serde(default)] - pub struct FullScreenSettings { -diff --git world/examples/chunk_compression_benchmarks.rs world/examples/chunk_compression_benchmarks.rs -index 46727195b953..5cf915701c89 100644 ---- world/examples/chunk_compression_benchmarks.rs -+++ world/examples/chunk_compression_benchmarks.rs -@@ -1190,7 +1190,10 @@ fn main() { - if !SKIP_VOLGRID { - let _ = volgrid.insert(spiralpos, Arc::new(chunk)); - -- if (1usize..20).any(|i| (2 * i + 1) * (2 * i + 1) == count) { -+ if (1usize..20) -+ .into_iter() -+ .any(|i| (2 * i + 1) * (2 * i + 1) == count) -+ { - use std::fs::File; - let mut f = File::create(&format!("chonkjpegs/{}_{}.jpg", sitename, count)) - .unwrap(); -diff --git world/examples/world_block_statistics.rs world/examples/world_block_statistics.rs -index a0bf81309fbe..bd478b75dd82 100644 ---- world/examples/world_block_statistics.rs -+++ world/examples/world_block_statistics.rs -@@ -85,9 +85,12 @@ fn generate(db_path: &str, ymin: Option, ymax: Option) -> Result<(), B - let (tx, rx) = mpsc::channel(); - rayon::spawn(move || { - let coords: Vec<_> = (ymin.unwrap_or(1)..ymax.unwrap_or(sz.y as i32)) -+ .into_iter() - .flat_map(move |y| { - let tx = tx.clone(); -- (1..sz.x as i32).map(move |x| (tx.clone(), x, y)) -+ (1..sz.x as i32) -+ .into_iter() -+ .map(move |x| (tx.clone(), x, y)) - }) - .collect(); - coords.into_par_iter().for_each(|(tx, x, y)| { -diff --git world/src/sim/util.rs world/src/sim/util.rs -index f94d584b2f0c..bc7d49a4a684 100644 ---- world/src/sim/util.rs -+++ world/src/sim/util.rs -@@ -218,6 +218,7 @@ pub fn local_cells(map_size_lg: MapSizeLg, posi: usize) -> impl Clone + Iterator - let grid_size = 3i32; - let grid_bounds = 2 * grid_size + 1; - (0..grid_bounds * grid_bounds) -+ .into_iter() - .map(move |index| { - Vec2::new( - pos.x + (index % grid_bounds) - grid_size, -diff --git world/src/site2/plot/dungeon.rs world/src/site2/plot/dungeon.rs -index 1b092edcc926..b44b9df3f89f 100644 ---- world/src/site2/plot/dungeon.rs -+++ world/src/site2/plot/dungeon.rs -@@ -948,7 +948,7 @@ pub fn inscribed_polystar( - use std::f32::consts::TAU; - let rpos: Vec2 = pos.xy().as_() - origin.as_(); - let is_border = rpos.magnitude_squared() > (radius - 2.0).powi(2); -- let is_line = (0..sides).any(|i| { -+ let is_line = (0..sides).into_iter().any(|i| { - let f = |j: f32| { - let t = j * TAU / sides as f32; - radius * Vec2::new(t.cos(), t.sin()) -diff --git world/src/site2/plot/gnarling.rs world/src/site2/plot/gnarling.rs -index 837390d8c6d5..9606622410ab 100644 ---- world/src/site2/plot/gnarling.rs -+++ world/src/site2/plot/gnarling.rs -@@ -112,6 +112,7 @@ impl GnarlingFortification { - - let num_points = (wall_radius / 15).max(5); - let outer_wall_corners = (0..num_points) -+ .into_iter() - .map(|a| { - let angle = a as f32 / num_points as f32 * core::f32::consts::TAU; - Vec2::new(angle.cos(), angle.sin()).map(|a| (a * wall_radius as f32) as i32) -@@ -447,6 +448,7 @@ impl Structure for GnarlingFortification { - const SECTIONS_PER_WALL_SEGMENT: usize = 8; - - (0..(SECTIONS_PER_WALL_SEGMENT as i32)) -+ .into_iter() - .map(move |a| { - let get_point = - |a| point + (next_point - point) * a / (SECTIONS_PER_WALL_SEGMENT as i32);