AI can be helpful compiling 32bit packages for slackel.
Firefox dropped support for 32-bit since version 140. So I had to build from source the 32-bit Firefox package for Slackel 32-bit. I used Slackware's current SlackBuild, which is for the Firefox ESR version, modified to include the language packs inside the binary. Compilation took 2.5 hours.
Trying to build the latest Firefox 152.0.2 from source for 32-bit, the build failed several times and I could not find what was going on. For previous Firefox versions, the build finished without errors. So I asked Google AI.
I got the answer:
"When compiling modern versions of Firefox on 32-bit Slackware, you run directly into a classic x86 32-bit compilation failure inside the newly added FFmpeg Vulkan video decoder path. This specific crash happens because of how the Vulkan API defines its handles differently on 64-bit vs. 32-bit architectures:
- On 64-bit Linux: Both dispatchable and non-dispatchable Vulkan handles are treated as pointers, so initializing them with standard C++ nullptr compiles without issues.
- On 32-bit Linux (x86 / i686): Non-dispatchable handles are defined fundamentally as a 64-bit integer (uint64_t). Assigning nullptr to an integer throws a strict C++ compilation error.
Your sed command correctly targets and swaps these definitions to let the compiler build successfully on your 32-bit system."
I added three sed commands in the build script:
# Fix Vulkan handles assigned to nullptr
sed -i 's/mNv12Image\[buf\] = nullptr;/mNv12Image[buf] = VK_NULL_HANDLE;/g' dom/media/platforms/ffmpeg/FFmpegVulkanVideoDecoder.cpp || exit 1
sed -i 's/mNv12Image\[i\] = nullptr;/mNv12Image[i] = VK_NULL_HANDLE;/g' dom/media/platforms/ffmpeg/FFmpegVulkanVideoDecoder.cpp || exit 1
sed -i 's/ = nullptr;/ = VK_NULL_HANDLE;/g' dom/media/platforms/ffmpeg/FFmpegVulkanVideoDecoder.cpp || exit 1
Then another error happened which broke the compilation. It was about fixing build failures due to missing types like uint32_t. AI gave this sed command:
# Fix build failures due to missing types like uint32_t
sed -i '1s/^/#include <cstdint>\n/' dom/media/webaudio/blink/DenormalDisabler.h || exit 1
Also, I had to comment the line:
# Fix build with LLVM22:
#cat $CWD/firefox.llvm_22-1.patch | patch -p1 --verbose || exit 1
in the Slackware SlackBuild because the patch was already applied in the Firefox 152.0.2 source.
The build finished without errors.
AI can become very useful for developers, helping them to solve bugs or solve problems when building packages.
The script and all patches needed can be found here. Download x86_64 and i686 Firefox packages. Slackel users will be informed to upgrade.
Comments
No comments yet. Start the discussion.