DEV Community

Dimitris Tzemos
Dimitris Tzemos

Posted on

AI can be helpful compiling 32bit packages for slackel.

Firefox dropped support for 32bit since version 140. So i had to build from source the 32bit firefox package for slackel 32bit.
I used slackware’s current slackbuild which is for firefox esr version, modified to include the languages packs inside binary. Compilation take 2.5 hours.

Trying to build latest firefox 152.0.2 from source for 32 bit, build failed several times and i could not find what is going on.
For previous firefox versions 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

Enter fullscreen mode Exit fullscreen mode

Then another error happened which broke the compilation. It was about Fix 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

Enter fullscreen mode Exit fullscreen mode

Also i had to comment the line

# Fix build with LLVM22:
#cat $CWD/firefox.llvm_22-1.patch | patch -p1 –verbose || exit 1
Enter fullscreen mode Exit fullscreen mode

in the slackware SlackBuild because patch was already applied in 152.0.2 firefox source.
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 need can be found here.

Download x86_64 and i686 firefox packages
Slackel users will informed to upgrade.

Top comments (0)