Hi Patrick!
Patrick Cardona wrote:
Hi Riccardo,
Hi Richard,
:-) it makes me smile
- Building GNUstep (last Runtime 2.1 with clang-14 and linker gold) works fine
the first time on a fresh updated lite system (Debian Bookworm 12.12) - I am
using a set of scripts inspired by Patryck Laurent: namely his tip about
Libdispatch (removing some headers related to Blocks before building libobjc2).
I needed also to install cmake 4 because the debian default release is
outdated. So after the first pass all seems ok (no errors in the logs).
- The side effect of the above method is that the GNUstep tools-make are built
and installed several times: if you try to install again the whole GNUstep on
the same system, weird things begin to happen and the build process will fail
(too many errors in the logs. One reason seems that the PATH to cmake 4
($HOME/.local/bin) which was right the first time was overriden in the
following attempts. I am also guessing about the last GNUstep.sh sourced which
may not be accurate to rebuild...
- I added a test to warn the user about this risk. But what if another script
fails - and really I need often to iterate. So if we cannot reinstall GNUstep,
maybe a removing method should be necessary. I remove the building folders, use
a dirty 'sudo rm -fR /usr/GNUstep'... I clean also ~/GNUstep, ~/.bashrc, log
out and log in again.
I wonder of this issue. I have few installation using libobjc2 because
it is troublesome for me and doesn't compile out-of-the-box or fails to
work properly on several OS-Architectures combination I use.
However in GCC environments I have no issue "reinstalling" tools-make
several times! I often do only incremental builds (make && make install
in make, base, gui, back) and it works.
I source GNUstep.sh "before" installing make.
About the matter to build only with gcc, I am very very curious: I was never able
to make the new ABI (objc2, runtime >= 2) with only gcc. Do you mean you don't
install libdispatch/objc2 and you only use the old ABI (runtime 1.9)? Is the last
release of GWorkspace building on this runtime?
Yes, latest GWorkspace and all software I maintain works with GCC
runtime. It uses threads and processes directly.
libdispatch is needed directly if GCD is used. I don't know though if in
case of GCD presence "normal" threads change. Richard or other more base
experts can tell you perhaps.
I have a multicore proc (`nproc` returns 4 on the pi 400) so I wonder if we
loose the multithreading hability without Libdispatch and if it is a matter of
performance.
Could you please tell us your building environment settings with only gcc and
the config args you use for each GNUstep lib?
I don't precisely know of performance when using one or the other, but
using threads and processes GWorkspace will exploit multi-core or
multi-CPU setups.
With gcc the setup should be very simple, the only changes are in make
and base to make sure the gnu-gnu-gnu runtime is selected and GCC is
used. Should be picked up by default
My setup on Linux is:
make: /configure --with-layout=gnustep --prefix=/
base, gui, back: "configure"
gcc and runtime get picked up automatically for me.
On OpenBSD where clang is the default compiler to "coerence" it to use
GCC I do:
For make: configure --with-layout=gnustep
--with-library-combo=gnu-gnu-gnu CC=egcc CXX=eg++
The rest base, gui, back should be just plain configure && make
Riccardo