Menu

#2200 Rocky Linux 8 fails to compile 3.10, 9 works

v3.10
open
nobody
None
Linux
Buildsystem
2026-02-05
2026-02-02
Frank Cox
No

3.10 compiles fine on Rocky Linux 9

When doing the same thing on Rocky Linux 8 it stalls out here:

Making all in rtc
Making all in userport
userport_wic64.c: In function ‘add_transfer’:
userport_wic64.c:987:5: error: implicit declaration of function ‘curl_multi_poll’; did you mean ‘curl_multi_wait’? [-Werror=implicit-function-declaration]
curl_multi_poll(cm, NULL, 0, 1, NULL);
^~~~~~~~~~~~~~~
curl_multi_wait
compilation terminated due to -Wfatal-errors.
cc1: some warnings being treated as errors
make[3]: *** [Makefile:573: userport_wic64.o] Error 1
make[2]: *** [Makefile:1952: all-recursive] Error 1
make[1]: *** [Makefile:1717: all] Error 2
make: *** [Makefile:509: all-recursive] Error 1

Discussion

  • gpz

    gpz - 2026-02-02

    I had to google what "Rocky Linux" even is....

    https://wiki.rockylinux.org/rocky/version/

    I guess the solution for this is to disable libcurl during configure then (or update libcurl)

     
  • Frank Cox

    Frank Cox - 2026-02-02

    Unless I'm doing something stupid or missing something (always a possibility) it doesn't seem to be possible to globally disable curl when compiling vice.

    I have tried "./configure --disable-curl" and "./configure --without-curl". Both eventually come up with "invalid option".

     
  • gpz

    gpz - 2026-02-02

    It's libcurl

      $ ./configure --help | grep curl
    

    --without-libcurl disable libcurl support [default=no]

     

    Last edit: gpz 2026-02-02
  • Frank Cox

    Frank Cox - 2026-02-02

    Thank you, that works fine.
    I just did a bit of research on this and discovered that the offending function "curl_multi_poll" was introduced in libcurl version 7.66.0.
    Rocky Linux 8 has curl 7.61.1 which predates that. Rocky Linux 9 has curl 7.76.1 so that explains why it works on version 9 but not version 8.
    Unfortunately, while it now gets past the curl error above, it now dies with a new error:

    settings_userport.c: In function 'settings_userport_widget_create':
    settings_userport.c:746:27: error: implicit declaration of function 'create_funmp3dir_widget' [-Werror=implicit-function-declaration]
    funmp3_save = create_funmp3dir_widget();

    So at this point I think I'm just going to give up on trying to compile vice 3.10 on Rocky Linux 8. It appears that multiple libraries are sufficiently outdated that I would end up stripping various elements of vice to get there.
    On Rocky Linux 9, vice 3.10 "just works".
    For the information of anyone who's not familiar with it, Rocky Linux is a free clone of Red Hat Enterprise Linux so it's not exactly an obscure Linux distribution. While it's probably more commonly used as a server os, I use it for my desktops as well.

     
  • gpz

    gpz - 2026-02-02

    Could you post your configure log? That should not happen and is probably a bug (a missing ifdef somewhere)

     
    • gpz

      gpz - 2026-02-02

      PS: also the config.h that was created please

       
  • Frank Cox

    Frank Cox - 2026-02-03

    This has turned into a real rabbit hole and I'm not really sure what could be the cause of what I'm seeing here.

    The "native installation format" for Red Hat Linux is rpm files. So my objective is to compile a rpm file for Rocky Linux 8. (This just worked for Rocky Linux 9 with no issues at all, as I stated above. I got a binary rpm and installed it and the programs run as expected.)

    I downloaded the source rpm from here: https://download1.rpmfusion.org/nonfree/fedora/updates/testing/43/SRPMS/v/vice-3.10-2.fc43.src.rpm

    When I compile it on Rocky 8 as-is, the curl error that brought me here showed up.

    So I edited the rpm spec file that's included in the above source rpm to say "--without-libcurl" on line 165.

    Compiling it with this modification to the spec file gives me this error:

    Making all in widgets
    Making all in base
    settings_userport.c: In function 'settings_userport_widget_create':
    settings_userport.c:746:27: error: implicit declaration of function 'create_funmp3dir_widget' [-Werror=implicit-function-declaration]
                 funmp3_save = create_funmp3dir_widget();
                               ^~~~~~~~~~~~~~~~~~~~~~~
    compilation terminated due to -Wfatal-errors.
    cc1: some warnings being treated as errors
    make[6]: *** [Makefile:1290: settings_userport.o] Error 1
    make[6]: *** Waiting for unfinished jobs....
    make[5]: *** [Makefile:1306: all-recursive] Error 1
    make[4]: *** [Makefile:889: all-recursive] Error 1
    make[3]: *** [Makefile:461: all-recursive] Error 1
    make[2]: *** [Makefile:1952: all-recursive] Error 1
    make[1]: *** [Makefile:1717: all] Error 2
    make: *** [Makefile:508: all-recursive] Error 1
    error: Bad exit status from /var/tmp/rpm-tmp.05kD6C (%build)
    
    
    RPM build errors:
        Bad exit status from /var/tmp/rpm-tmp.05kD6C (%build)
    

    I extracted the vice-3.10.tar.gz file from that rpm source archive and tried compiling it directly. I used "./configure --without-libcurl", then make and it worked! I got working programs out of this.

    So I know this will compile on Rocky 8. I went back to the source rpm file and tried removing the two custom patches that are added within that source rpm. And even with those patch files removed, I still get the above funmp3dir error.

    Apparently there's something funky going on in the rpm packaging, even though it doesn't seem to be doing anything that isn't being done when I compile the tar.gz file directly, and I have no idea what it could be.

    I have attached four files that may be of interest. standalone-config.log and standalone-config.h are the .log and .h files from when I compile the .tar.gz file and that works. config.log and config.h are the .log and .h files from when I try compiling the source rpm and it doesn't work (with the above error).

     
  • gpz

    gpz - 2026-02-03

    check at the top of config.h

    #define CONFIGURE_FLAGS "--build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-gtk3ui --enable-desktop-files --enable-x64 --enable-ethernet --disable-arch --enable-external-ffmpeg --enable-html-docs --with-libieee1284 --with-lame --with-mpg123 --with-flac --with-vorbis --with-gif --without-libcurl"
    

    I dont remember all valid options by heart - but one of these has to be the problem. Would be interesting to see which it is (because the error you get is odd)

     
  • compyx

    compyx - 2026-02-03

    it looks like create_funmp3dir_widget() and friends are only defined if both USE_MPG123 && HAVE_GLOB_H and HAVE_LIBCURL are true.

    The call to create_funmpg123dir_widget() however happens outside the #ifdef HAVE_LIBCURL block, leading to a linker error.

    The solution would be to move the "funmp3" stuff outside the #if HAVE_LIBCURL block, if the "funmp3" stuff doesn't actually require libcurl. Otherwise the call to create_funmp3dir_widget() needs to be guarded with #if HAVE_LIBCURL.

    The combined --with-mpg123 --without-libcurl options trigger this bug, it seems.

     
  • gpz

    gpz - 2026-02-03

    yeah that cart doesn't use network at all - must be a copypaste bug

     
  • compyx

    compyx - 2026-02-03

    Preliminary fix for the undefined create_funmp3dir_widget() is in commit #2200.

    We should probably update configure.ac to check for libcurl >= 7.66.0, if curl_multi_poll() is required for proper "WiC64" emulation.

     
  • Frank Cox

    Frank Cox - 2026-02-03

    This is to confirm that adding --without-libcurl and --without-mpg123 to the configuration options in the rpm spec file mentioned above allows vice 3.10 to compile and install on Rocky Linux 8 (and any other Red Hat Enterprise Linux 8 derivatives).
    Those options are not required to compile and install vice 3.10 on Rocky Linux 9.

     
    • compyx

      compyx - 2026-02-05

      That'll work around the bug in the 3.10 release tarball at least.
      You might find other optional dependencies that aren't required when you run ./configure --help.

      I would personally suggest adding --enable-option-checking=fatal as the first argument to configure to check if any configure switches in your spec file are no longer valid for a new VICE release: these switches occasionally change from release to release.

      Anyway: the combination of --with-mpg123 --without-libcurl should now work, assuming libcurl is new enough.

       

Log in to post a comment.