Rocky Linux 8 fails to compile 3.10, 9 works
Versatile Commodore Emulator
Brought to you by:
blackystardust,
gpz
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
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)
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".
It's libcurl
--without-libcurl disable libcurl support [default=no]Last edit: gpz 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.
Could you post your configure log? That should not happen and is probably a bug (a missing ifdef somewhere)
PS: also the config.h that was created please
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:
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).
check at the top of config.h
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)
it looks like
create_funmp3dir_widget()and friends are only defined if bothUSE_MPG123 && HAVE_GLOB_HandHAVE_LIBCURLare true.The call to
create_funmpg123dir_widget()however happens outside the#ifdef HAVE_LIBCURLblock, leading to a linker error.The solution would be to move the "funmp3" stuff outside the
#if HAVE_LIBCURLblock, if the "funmp3" stuff doesn't actually require libcurl. Otherwise the call tocreate_funmp3dir_widget()needs to be guarded with#if HAVE_LIBCURL.The combined
--with-mpg123 --without-libcurloptions trigger this bug, it seems.yeah that cart doesn't use network at all - must be a copypaste bug
Preliminary fix for the undefined
create_funmp3dir_widget()is in commit #2200.We should probably update
configure.acto check forlibcurl >= 7.66.0, ifcurl_multi_poll()is required for proper "WiC64" emulation.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.
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=fatalas the first argument toconfigureto 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-libcurlshould now work, assuming libcurl is new enough.