- Package:
- supercollider-sc3-plugins
- Source:
- supercollider-sc3-plugins
- Submitter:
- Trupti
- Date:
- 2026-07-14 07:57:02 UTC
- Severity:
- normal
- Tags:
Dear Maintainer,
supercollider-sc3-plugins (3.14.0+ds-1) FTBFS on ppc64el with below
errors:
/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/external_libraries/nova-simd/vec/../detail/vec_math.hpp:59:49:
error: ‘gen_sign_mask’ is not a member of ‘vec’ {aka ‘nova::vec<float>’}
59 | const vec sign = arg & vec::gen_sign_mask();
| ~~~~~~~~~~~~~~~~~~^~
/usr/bin/powerpc64le-linux-gnu-g++ -fPIC -g -O2
-ffile-prefix-map=/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds=.
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time
-D_FORTIFY_SOURCE=2 -std=c++17 -O3 -DNDEBUG -shared -Wl,-z,relro
-Wl,-z,now -Wl,--dependency-file=CMakeFiles/VOSIM.dir/link.d -o
VOSIM.so CMakeFiles/VOSIM.dir/VOSIMUGens/VOSIM.cpp.o
make[3]: Leaving directory
'/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu'
[ 31%] Built target VOSIM
make[3]: *** [source/CMakeFiles/VBAP_supernova.dir/build.make:82:
source/CMakeFiles/VBAP_supernova.dir/VBAPUGens/VBAP.cpp.o] Error 1
make[3]: Leaving directory
'/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:4809:
source/CMakeFiles/VBAP_supernova.dir/all] Error 2
[ 32%] Linking CXX shared module VOSIM_supernova.so
cd
/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu/source
&& /usr/bin/cmake -E cmake_link_script
CMakeFiles/VOSIM_supernova.dir/link.txt --verbose=1
/usr/bin/powerpc64le-linux-gnu-g++ -fPIC -g -O2
-ffile-prefix-map=/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds=.
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time
-D_FORTIFY_SOURCE=2 -std=c++17 -O3 -DNDEBUG -shared -Wl,-z,relro
-Wl,-z,now -Wl,--dependency-file=CMakeFiles/VOSIM_supernova.dir/link.d
-o VOSIM_supernova.so
CMakeFiles/VOSIM_supernova.dir/VOSIMUGens/VOSIM.cpp.o
make[3]: Leaving directory
'/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu'
[ 32%] Built target VOSIM_supernova
[ 32%] Linking CXX shared module SLUGens.so
cd
/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu/source
&& /usr/bin/cmake -E cmake_link_script CMakeFiles/SLUGens.dir/link.txt
--verbose=1
/usr/bin/powerpc64le-linux-gnu-g++ -fPIC -g -O2
-ffile-prefix-map=/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds=.
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time
-D_FORTIFY_SOURCE=2 -std=c++17 -O3 -DNDEBUG -shared -Wl,-z,relro
-Wl,-z,now -Wl,--dependency-file=CMakeFiles/SLUGens.dir/link.d -o
SLUGens.so CMakeFiles/SLUGens.dir/SLUGens/SLUGens.cpp.o
make[3]: Leaving directory
'/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu'
[ 32%] Linking CXX shared module SLUGens_supernova.so
cd
/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu/source
&& /usr/bin/cmake -E cmake_link_script
CMakeFiles/SLUGens_supernova.dir/link.txt --verbose=1
[ 32%] Built target SLUGens
/usr/bin/powerpc64le-linux-gnu-g++ -fPIC -g -O2
-ffile-prefix-map=/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds=.
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time
-D_FORTIFY_SOURCE=2 -std=c++17 -O3 -DNDEBUG -shared -Wl,-z,relro
-Wl,-z,now -Wl,--dependency-file=CMakeFiles/SLUGens_supernova.dir/link.d
-o SLUGens_supernova.so
CMakeFiles/SLUGens_supernova.dir/SLUGens/SLUGens.cpp.o
make[3]: Leaving directory
'/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu'
[ 32%] Built target SLUGens_supernova
[ 32%] Linking CXX shared module HOAAzimuthRotator1.so
cd
/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu/source
&& /usr/bin/cmake -E cmake_link_script
CMakeFiles/HOAAzimuthRotator1.dir/link.txt --verbose=1
/usr/bin/powerpc64le-linux-gnu-g++ -fPIC -g -O2
-ffile-prefix-map=/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds=.
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time
-D_FORTIFY_SOURCE=2 -std=c++17 -O3 -DNDEBUG -shared -Wl,-z,relro
-Wl,-z,now
-Wl,--dependency-file=CMakeFiles/HOAAzimuthRotator1.dir/link.d -o
HOAAzimuthRotator1.so
CMakeFiles/HOAAzimuthRotator1.dir/HOAUGens/HOAAzimuthRotator1.cpp.o
make[3]: Leaving directory
'/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu'
[ 32%] Built target HOAAzimuthRotator1
[ 32%] Linking CXX shared module HOAAzimuthRotator1_supernova.so
cd
/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu/source
&& /usr/bin/cmake -E cmake_link_script
CMakeFiles/HOAAzimuthRotator1_supernova.dir/link.txt --verbose=1
/usr/bin/powerpc64le-linux-gnu-g++ -fPIC -g -O2
-ffile-prefix-map=/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds=.
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time
-D_FORTIFY_SOURCE=2 -std=c++17 -O3 -DNDEBUG -shared -Wl,-z,relro
-Wl,-z,now
-Wl,--dependency-file=CMakeFiles/HOAAzimuthRotator1_supernova.dir/link.d
-o HOAAzimuthRotator1_supernova.so
CMakeFiles/HOAAzimuthRotator1_supernova.dir/HOAUGens/HOAAzimuthRotator1.cpp.o
make[3]: Leaving directory
'/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu'
[ 32%] Built target HOAAzimuthRotator1_supernova
make[2]: Leaving directory
'/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu'
make[1]: *** [Makefile:159: all] Error 2
make[1]: Leaving directory
'/build/reproducible-path/supercollider-sc3-plugins-3.14.0+ds/obj-powerpc64le-linux-gnu'
dh_auto_build: error: cd obj-powerpc64le-linux-gnu && make -j8
INSTALL="install --strip-program=true" VERBOSE=1 returned exit code 2
make: *** [debian/rules:9: binary-arch] Error 25
dpkg-buildpackage: error: debian/rules binary-arch subprocess failed
with exit status 2
--------------------------------------------------------------------------------
Build finished at 2026-06-30T15:11:05Z
Build log reference:
https://buildd.debian.org/status/fetch.php?pkg=supercollider-sc3-plugins&arch=ppc64&ver=3.14.0%2Bds-1&stamp=1782852658&raw=0
Issue is reproducible on ppc64el machine.
Thanks,
Trupti.
Dear Maintainer, The version 3.14.0+ds-1 still FTBFS on ppc64el despite the fix uploaded for this bug. Build log: https://buildd.debian.org/status/fetch.php?pkg=supercollider-sc3-plugins&arch=ppc64el&ver=3.13.0%7Erepack-1.2&stamp=1782753041&raw=0 Root cause: Removing -mno-altivec/-mno-vsx in 3.14.0+ds-1 re-enabled AltiVec/VSX on ppc64el, exposing a pre-existing defect in two bundled nova-simd headers: external_libraries/nova-simd/vec/vec_altivec.hpp external_libraries/nova-simd/vec/vec_int_altivec.hpp current falling build log : https://buildd.debian.org/status/fetch.php?pkg=supercollider-sc3-plugins&arch=ppc64&ver=3.14.0%2Bds-1&stamp=1782852658&raw=0 Both include <altivec.h> and immediately open a C++ namespace. On ppc64el, GCC defines __APPLE_ALTIVEC__, which causes <altivec.h> to skip its #define vector __vector macro. The bare vector keyword then reaches the C++ parser directly, and inside a namespace where std::vector is also visible, GCC 15 fails with: error: 'vector' does not name a type; did you mean 'vec_or'? 30 | typedef vector float fvec; Fix: Replaced all bare vector usages inside the affected namespaces with __vector — GCC's built-in keyword, valid at any scope regardless of __APPLE_ALTIVEC__. Added #undef vector/#undef pixel/#undef bool after #include <altivec.h> as a defensive guard. Also fixed vec_re(arg) → vec_re(arg.data_), since the intrinsic requires a raw __vector float, not the wrapper class. Verified on a ppc64el LPAR (Debian sid): dpkg-buildpackage -us -uc -b successfully builds supercollider on ppc64el generating below .dep files ladspalist_3.14.0+ds-3_ppc64el.deb sc3-plugins-server_3.14.0+ds-3_ppc64el.deb ladspalist-dbgsym_3.14.0+ds-3_ppc64el.deb sc3-plugins-server-dbgsym_3.14.0+ds-3_ppc64el.deb sc3-plugins_3.14.0+ds-3_all.deb sc3-plugins-language_3.14.0+ds-3_all.deb I have shared two patches below, please review it. I will create a Merge Request on Salsa with this patch if it looks good to you. Please let me know if any changes are needed. Thanks, Trupti
__APPLE_ALTIVEC__. __ALTIVEC__ picks up the use case. In an implementation file that needs the definitions: // could use -maltivec, -mcpu=power7, -mcpu=power8, etc #if defined(__ALTIVEC__) || defined(_ARCH_PWR7) # include "ppc_simd.h" #endif And then at the head of ppc_simd.h: [1] #if defined(__ALTIVEC__) # include <altivec.h> # undef vector # undef pixel # undef bool #endif And then in the same ppc_simd.h file: #if defined(__ALTIVEC__) || defined(CRYPTOPP_DOXYGEN_PROCESSING) /// \brief Vector of 8-bit elements typedef __vector unsigned char uint8x16_p; /// \brief Vector of 16-bit elements typedef __vector unsigned short uint16x8_p; /// \brief Vector of 32-bit elements typedef __vector unsigned int uint32x4_p; #if defined(__VSX__) || defined(_ARCH_PWR8) || defined(CRYPTOPP_DOXYGEN_PROCESSING) /// \brief Vector of 64-bit elements typedef __vector unsigned long long uint64x2_p; #endif // VSX or ARCH_PWR8 #endif // __ALTIVEC__ or Doxygen Now use the typedefs like uint8x16_p, uint16x8_p, uint32x4_p, and uint64x2_p. [0] https://cryptopp.com/ [1] https://github.com/weidai11/cryptopp/blob/master/ppc_simd.h Jeff
ppc_simd.h — really helpful reference. One thing I confirmed: vec_altivec.hpp only ever gets included when __ALTIVEC__ is already true (that check happens earlier, in vec.hpp). So adding the same guard inside vec_altivec.hpp doesn't change anything right now — it's already guaranteed true. But as you suggested, and I think that's the correct way to go, I've kept the guard anyway so the header stays safe on its own, in case someone includes it directly in the future without going through vec.hpp first. Thanks for pointing that out. I have updated my patch to gate the #include <altivec.h> and #undef vector/pixel/bool behind #if defined(__ALTIVEC__), instead of relying on __APPLE_ALTIVEC__ reasoning. Rebuilt and tested on my ppc64el machine. Updated patches attached. Will go ahead and create the Salsa Merge Request with this version. Thanks again, Trupti
Hi JeffHi Jeff, Thank you for taking the time to review and for the pointer to ppc_simd.h — really helpful reference. One thing I confirmed: vec_altivec.hpp only ever gets included when __ALTIVEC__ is already true (that check happens earlier, in vec.hpp). So adding the same guard inside vec_altivec.hpp doesn't change anything right now — it's already guaranteed true. But as you suggested, and I think that's the correct way to go, I've kept the guard anyway so the header stays safe on its own, in case someone includes it directly in the future without going through vec.hpp first. Thanks for pointing that out. I have updated my patch to gate the #include <altivec.h> and #undef vector/pixel/bool behind #if defined(__ALTIVEC__), instead of relying on __APPLE_ALTIVEC__ reasoning. Rebuilt and tested on my ppc64el machine. Updated patches attached. Will go ahead and create the Salsa Merge Request with this version. Thanks again, Trupti
Hi Trupti,
One small suggestion for the patch. For:
private:
static ivec set_vector(int i)
{
#ifdef __GNUC__
- return (ivec){i, i, i, i};
+ return (ivec){(unsigned int)i,(unsigned int)i, (unsigned
int)i, (unsigned int)i};
#else
#error compiler not supported
#endif
I believe you can use this, which usually produces faster code. I'm
not sure how important it is since a C++ constructor is probably _not_
being called on a critical path.
+ return (ivec)vec_splat_s32(i);
There's also a vec_splat_u32 for unsigned integers. But the cast
before the return should handle the type conversion from int to
unsigned int vector.
Thank you for pointing it out. I tried return (ivec)vec_splat_s32(i); but it gave: error: argument 1 must be a literal between -16 and 15, inclusive since it requires a compile-time constant, but i here is a runtime value. So I used vec_splats((unsigned int)i) instead, and opened a Merge Request with the updated patch: with the updated patch https://salsa.debian.org/multimedia-team/supercollider-sc3-plugins/-/merge_requests/4 Thanks, Trupti
My bad. Sorry about the extra noise! Jeff
Hi Jeff, No worries at all — it wasn't noise, the suggestion led me to vec_splats, which is the correct fit here. Thanks again for pointing me toward ppc_simd.h, it was very helpful. Thanks, Trupti