#1129089 netgen: makes freecad FTBFS on armhf

#1129089#5
Date:
2026-02-26 20:22:50 UTC
From:
To:
https://buildd.debian.org/status/fetch.php?pkg=freecad&arch=arm64&ver=1.0.2%2Bdfsg-3&stamp=1771931543&raw=0

...
In file included from /usr/include/netgen/core/simd.hpp:34,
                 from /usr/include/netgen/core/ngcore.hpp:16,
                 from /usr/include/netgen/include/mydefs.hpp:14,
                 from /usr/include/netgen/general/myadt.hpp:16,
                 from /usr/include/netgen/include/myadt.hpp:1,
                 from /usr/include/netgen/meshing/meshing.hpp:4,
                 from /usr/include/netgen/include/meshing.hpp:1,
                 from /usr/include/netgen/occ/occgeom.hpp:14,
                 from /usr/include/netgen/include/occgeom.hpp:1,
                 from /build/reproducible-path/freecad-1.0.2+dfsg/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp:106:
/usr/include/netgen/core/simd_arm64.hpp: In function ‘ngcore::SIMD<ngcore::mask64, 2> ngcore::operator==(SIMD<long int, 2>, SIMD<long int, 2>)’:
/usr/include/netgen/core/simd_arm64.hpp:161:21: note: use ‘-flax-vector-conversions’ to permit conversions between vectors with differing element types or numbers of subparts
  161 |     return vceqq_u64(a.Data(), b.Data());
      |            ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/usr/include/netgen/core/simd_arm64.hpp:161:28: error: cannot convert ‘__Int64x2_t’ to ‘uint64x2_t’
  161 |     return vceqq_u64(a.Data(), b.Data());
      |                      ~~~~~~^~
      |                            |
      |                            __Int64x2_t
In file included from /usr/include/netgen/core/simd_arm64.hpp:1:
/usr/lib/gcc/aarch64-linux-gnu/15/include/arm_neon.h:7646:23: note: initializing argument 1 of ‘uint64x2_t vceqq_u64(uint64x2_t, uint64x2_t)’
 7646 | vceqq_u64 (uint64x2_t __a, uint64x2_t __b)
      |            ~~~~~~~~~~~^~~
/usr/include/netgen/core/simd_arm64.hpp: In function ‘ngcore::SIMD<ngcore::mask64, 2> ngcore::operator>(SIMD<long int, 2>, SIMD<long int, 2>)’:
/usr/include/netgen/core/simd_arm64.hpp:166:21: error: could not convert ‘vcgtq_s64(a.ngcore::SIMD<long int, 2>::Data(), b.ngcore::SIMD<long int, 2>::Data())’ from ‘uint64x2_t’ to ‘ngcore::SIMD<ngcore::mask64, 2>’
  166 |     return vcgtq_s64(a.Data(), b.Data());
      |            ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
      |                     |
      |                     uint64x2_t
...




Adding -flax-vector-conversions to CXXFLAGS in debian/rules fixes the build,
but ideally netgen should be fixed to not impose such a workaround on rdeps.

#1129089#10
Date:
2026-02-26 23:26:57 UTC
From:
To:
Mmm. I think this issue is in netgen.
#1129089#19
Date:
2026-02-27 05:52:07 UTC
From:
To:
Hi,
please try to replicate this fix
https://salsa.debian.org/science-team/netgen/-/commit/6b7383bc76101edc25430e5a79698a0360414404
in freecad.

Issue was reported upstream at
https://github.com/NGSolve/netgen/issues/226
several months ago, but there is no feedback yet.

Cheers,
Francesco

#1129089#36
Date:
2026-02-27 13:19:55 UTC
From:
To:
Hi Francesco,

the workardound makes freecad compile again :) A big thanks for the
pointer!

So I guess we can reduce the seveity on this bug.
(I'm renaming the bug title so if somone else runs into this issue can
find the workaround too.)

I'll prepare the freecad update then :)
<bage@debian.org>, Francesco Ballarin <ballarin@debian.org>,
bunk@debian.org, tobi@debian.org
https://salsa.debian.org/science-team/netgen/-/commit/6b7383bc76101edc25430e5a79698a0360414404