script-repo icon indicating copy to clipboard operation
script-repo copied to clipboard

Rust gcc-builder fails with isl error when trying to build latest gcc on Debian 13/trixie

Open N7DR opened this issue 3 months ago • 9 comments

While waiting for issue #23 to be fixed, I tried the rust version, gcc-builder (on Debian 13/trixie). I believe that I followed the directions correctly.

I executed: gcc-builder --latest --prefix $HOME/gcc --jobs $(nproc) --build-dir /tmp/gcc-build

and, after everything was downloaded, received:

checking for isl 0.15 or later... no required isl version is 0.15 or later configure: error: Unable to find a usable isl. See config.log for details.

I don't know what isl is, or where to find it. apt doesn't seem to find it (there is no Debian isl package), so I think I'm stuck.

N7DR avatar Sep 14 '25 21:09 N7DR

Looking around the internet, I saw that perhaps isl is provided by the libisl package. But that is already installed (as is libisl-dev). The current version of libisl installed on trixie from the debian stable repository is 0.27 (therefore > 0.15).

N7DR avatar Sep 14 '25 22:09 N7DR

In case this bug was something to do with the fact that it was happening an a system that had been upgraded from bookworm to trixie, I built a virtualbox VM from scratch and installed the latest trixie on that, and then followed the instructions to install the rust version of gcc-builder. Unfortunately I ended up with exactly the same error when I tried to execute the newly-installed gcc-builder to create and install the latest version of gcc (version 15.2).

In a way, I suppose it's good that it behaved exactly the same way as the physical machine that had been upgraded to trixie. But it does mean that I am still stuck, with no way forward :-(

FWIW, here is the config.log from the VM. It doesn't tell me anything useful, but perhaps it's of some help to you.

config.log

N7DR avatar Oct 19 '25 17:10 N7DR

So... although it's MUCH more complicated that simply using the rust gcc-builder that fails, I have found that blindly following the instructions located at: https://tutorialforlinux.com/2025/08/18/how-to-install-gcc-15-from-source-on-debian-trixie-installation/3/ does not complain with the isl error, and does appear to execute to completion without error on a pristine virtual machine running trixie.

That, I fervently hope, is a helpful clue as to what's going wrong with gcc-builder.

N7DR avatar Oct 28 '25 23:10 N7DR

Oh, I forget to mention that there is a minor error in the instructions at the tutorialforlinux.com site:

the step (for c, c++, fortran, objc, obj-c++ and go): ..configure --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix="/usr/local"

should be: ../configure --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix="/usr/local"

I just built C and C++. Probably all I really needed was C++, since that's all I ever write in, but I thought it might be safer to add C.

N7DR avatar Oct 29 '25 20:10 N7DR

I can confirm that the instructions at https://tutorialforlinux.com/2025/08/18/how-to-install-gcc-15-from-source-on-debian-trixie-installation/3/ do seem to work correctly: I now have g++ 15.2 running on trixie, building a sizeable project in C++-26 mode, and all seems as it should. (The code uses some C++-26 features, and will not build on the default g++ compiler included with trixie.)

So I hope that you'll be able to compare your bash build-gcc.sh and your rust gcc-builder with the instructions at tutorialforlinux.com and spot (and fix) why your scripts are currently failing.

Let me know if I can give you any further info.

N7DR avatar Oct 30 '25 19:10 N7DR

I updated the other support ticket so, yes, this should be fixed.

slyfox1186 avatar Nov 06 '25 18:11 slyfox1186

Nope... I created a brand new VM and installed debian trixie on it, then followed the instructions at: https://github.com/slyfox1186/script-repo/tree/main/rust

It failed exactly the same way as it did when I originally reported the bug:

gcc-builder built OK, and then I issued the command: ./target/release/gcc-builder --versions 15 --prefix $HOME/gcc-15 --verbose --build-dir ~/zbrew/gcc-build

and the result was:


...

checking for isl 0.15 or later... no required isl version is 0.15 or later configure: error: Unable to find a usable isl. See config.log for details. [2025-11-08 11:20:40 ERROR] Command failed with exit code 1 after 5.687925659s: /home/n7dr/zbrew/gcc-build/workspace/gcc-15.2.0/configure --prefix=/home/n7dr/gcc-15/gcc-15.2.0 --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu --program-suffix=-15 --with-gcc-major-version-only --enable-checking=release --enable-threads=posix --disable-bootstrap --with-system-zlib --with-isl=/usr --enable-languages=all --enable-shared --disable-nls --disable-multilib --enable-default-pie --enable-gnu-unique-object --with-link-serialization=2 --enable-cet [2025-11-08 11:20:40 INFO] 🏁 Build slot released for GCC 15.0.0 (duration: 494.300734003s, success: false) [2025-11-08 11:20:40 ERROR] ❌ Build failed: Build failed: configure - Configure failed: Command execution failed: /home/n7dr/zbrew/gcc-build/workspace/gcc-15.2.0/configure --prefix=/home/n7dr/gcc-15/gcc-15.2.0 --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu --program-suffix=-15 --with-gcc-major-version-only --enable-checking=release --enable-threads=posix --disable-bootstrap --with-system-zlib --with-isl=/usr --enable-languages=all --enable-shared --disable-nls --disable-multilib --enable-default-pie --enable-gnu-unique-object --with-link-serialization=2 --enable-cet - 1 [2025-11-08 11:20:40 INFO]


N7DR avatar Nov 08 '25 18:11 N7DR

If this fixes your issues let me know. I removed all ISL related code and now GCC itself will by DEFAULT handle the ISL package for us.

GCC Builder - Quick Setup

Quick Start (3 Commands)

# 1. Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

# 2. Clone and build
git clone https://github.com/slyfox1186/script-repo.git
cd script-repo/rust
sudo apt update && sudo apt install -y build-essential curl wget m4 flex bison
cargo build --release

# 3. Run GCC builder
./target/release/gcc-builder --latest --prefix $HOME/gcc --verbose

Usage Examples

# Build latest GCC (recommended)
./target/release/gcc-builder --latest --prefix $HOME/gcc --jobs $(nproc --all)

# Build specific versions
./target/release/gcc-builder --versions 13 --prefix $HOME/gcc-13
./target/release/gcc-builder --versions 13,14,15 --prefix $HOME/gcc-multi

# Quick test (dry run)
./target/release/gcc-builder --latest --prefix $HOME/gcc --dry-run

# Production build
./target/release/gcc-builder --preset production --prefix $HOME/gcc-prod

Common Options

  • --latest - Build latest stable GCC
  • --versions X - Build specific version(s)
  • --preset minimal|development|production - Use presets
  • --prefix PATH - Installation directory
  • --jobs N - Parallel jobs (default: auto-detect)
  • --verbose - Show detailed output
  • --dry-run - Show what would be done

Troubleshooting

Permission errors:

# Use home directory instead of system directories
./target/release/gcc-builder --latest --prefix $HOME/gcc

Memory issues:

# Reduce parallel jobs
./target/release/gcc-builder --latest --prefix $HOME/gcc --jobs 4

Debug issues:

# Enable full logging
./target/release/gcc-builder --latest --prefix $HOME/gcc --verbose --debug

Install System-wide (Optional)

sudo cp ./target/release/gcc-builder /usr/local/bin/

Now you can run gcc-builder from anywhere.


Features: Zero configuration • Multi-version support • Automatic dependency handling • Works on Ubuntu/Debian

slyfox1186 avatar Nov 09 '25 05:11 slyfox1186

It nearly worked.

I issued the command:

./target/release/gcc-builder --latest --prefix $HOME/gcc --verbose --build-dir /home/n7dr/remote/zbrew-tmp

It built, but did not install (copy and paste from the terminal):

... Build completed successfully in 6980.31s

[2025-11-15 10:48:29 INFO] Completed: 🏗 Building GCC 15.2.0 (parallel) (took 6980.31s) [2025-11-15 10:48:29 INFO] 📦 Step 6/7: Installing GCC 15.2.0 to /home/n7dr/gcc/gcc-15.2.0... [2025-11-15 10:48:29 INFO] Starting: 📦 Installing GCC

───────────────────────────────────────────────────────────────── 📦 Installing GCC 15.2.0 to /home/n7dr/gcc/gcc-15.2.0 ───────────────────────────────────────────────────────────────── This requires sudo privileges. You may be prompted for your password.

Install output: ───────────────────────────────────────────────────────────────── [sudo] password for n7dr: make: stat: GNUmakefile: Permission denied make: stat: makefile: Permission denied make: stat: Makefile: Permission denied make: stat: install-strip: Permission denied make: *** No rule to make target 'install-strip'. Stop. [2025-11-15 11:53:21 ERROR] Command failed with exit code 2 after 3892.351368095s: sudo make install-strip [2025-11-15 11:53:21 INFO] 🏁 Build slot released for GCC 15.2.0 (duration: 11362.917372882s, success: false) [2025-11-15 11:53:21 ERROR] ❌ Build failed: Build failed: install - Installation failed: Command execution failed: sudo make install-strip - 2 [2025-11-15 11:53:21 INFO] 💡 Suggestions to resolve this issue: ──────────────────────────────────────────────────

ℹ 1. Check build logs Review the detailed build logs for more information

Commands:

Enable verbose output:

./gcc-builder --verbose --debug ...

Save logs to file:

./gcc-builder --log-file build.log ... ──────────────────────────────────────────────────

So:

  1. it's a puzzle why installing into a directory in my own user file tree required sudo priveleges.
  2. having entered a correct password, it's a puzzle why there are those "permission denied" errors associated with the makefiles.
  3. the lack of a target "install-strip" is probably something to do with the makefile errors.

I'm not sure where the compiler actually ended up; going to the workspace directory and issuing "find . -name g++*" produces a bunch of hits, but none of them appear to be the actual compiler (or a link to it), but perhaps I'm just being blind.

N7DR avatar Nov 15 '25 19:11 N7DR