01-11-2023, 10:25 PM
(01-11-2023, 11:18 AM)mnrvovrfc Wrote: >sigh< To build QB64PE v3.5 on Gecko Linux (based on OpenSuSE "Leap") I had to exclude the "libqb_http" stuff.
First I tried to obtain the required libraries. There is no such thing as "libcurl4-devel" according to YaST and "zypper", although the regular library is there. There had been the "libcurl-devel". Tried to install "openssl-devel", version 1 and version 3, no success. Modified the Makefile to exclude HTTP(S) functionality, didn't work. Renamed "httpstub.cpp" to "http.cpp" while backing up the real source code component, more frustration. Finally I edited "libqb.cpp" and simply commented out all calls to whatever "libqb_http" functions.
It's "$UNSTABLE", right? I don't want to have to build a QB64 program on another Linux system, then bring that program over to this particular distro or any other that isn't like Arch or Debian, and it refuses to run because of one library.
This would have to be tested in "Tumbleweed", the rolling-release wing of OpenSuSE.
This is just for information. I don't expect every single Linux distro supported.
A few clarifications on
$Unstable, it really has nothing to do with new dependencies, it's just a way for us to gradually introduce new functionality. The fact that we introduced the HTTP support as
$Unstable:Httpmeans that we may make breaking changes to it before it's stabilized as part of the language (though we'll avoid that if possible). Such a change could actually be related to whether
libcurlis pulled in as a dependency, which is helpful to you. That is what we did with MIDI, for example.
With that, the
libcurldependency currently works the same as any other QB64 dependency, meaning it is only a dependency of your compiled program if your program actually makes use of that functionality. In this case, the requirements would be that you use networking (IE.
_OPENCLIENT) and have the
$Unstable:Httpin your code. If you do not, then your executable will not depend on
libcurl. The 'Generate License' option in the IDE is a good way to check what dependencies your program is using.
The issue you're running into is that the QB64 IDE/compiler makes use of
$Unstable:Httpfor downloading the wiki (as it is about twice as fast as our previous method). That is unlikely to change, so to compile and run the IDE libcurl will be required. That said, libcurl is very common and I would be surprised if any distro does not offer a package for it. Unfortunately though I'm not that familiar with OpenSuSE.
Currently if you remove the
DEP_HTTP := yaround line 178 in the Makefile then you can build the IDE without including HTTP support. Note however that the Wiki downloading will not work, and also this Makefile change is unlikely to stay the same in the future.
@kernelpanic I did take a look at your code, unfortunately we really haven't made any changes that I think could impact that behavior, and also it seems to work fine for me even after running it multiple times I'll keep thinking about it though, maybe I'm missing something.