calcium <[email protected]> writes:

>> Hi Calcium, could you provide the full guix shell commands you tried?
>
> Sure, my lastest version was:
>
> ```
> #!/usr/bin/env bash
> set -ex
> exec guix shell --verbosity=3 --container --network --preserve='^DISPLAY$' \
> --preserve='^XAUTHORITY$' --expose=$XAUTHORITY --preserve='^DBUS_' 
> --expose=/var/run/dbus \
> --expose=/dev/dri --share=/dev/snd/seq --share=/dev/shm 
> --expose=/sys/class/input \
> --expose=/sys/devices --expose=/sys/dev --expose=/sys/bus/pci 
> --expose=/run/user/$UID \
> --share=/tmp/.X11-unix \
> --preserve='XDG_RUNTIME_DIR' --manifest="$0"
> !#
>
> ;; commented out, bc its introduces glibc for-fhs, mess things up
> ;; --emulate-fhs
>
> ;; export JAVA_HOME=
> ;; export LD_LIBRARY_PATH=$GUIX_ENVIRONMENT/lib
>
> (concatenate-manifests
>   (list (specifications->manifest (list
>                                    "python" "openjdk@11:jdk" ;; no need for 
> "clojure"
>                                    "bash" "nss-certs" "coreutils" "curl"
>                                    "git" "mesa" "fontconfig" "libxcursor"
>                                    "libxi" "libglvnd" "libxrandr"
>                                    "mesa-utils"
>                                    "cmake" "ninja"
>                                    "util-linux" ;; helps to set java home 
> JAVA_HOME=$(dirname $(dirname $(whereis java)))
>                                    "clang-toolchain"
>                                    "libx11" "libxext" "xorgproto"))
>         (package->development-manifest (specification->package 
> "clang-toolchain"))))
> ```
>
> On 10/20/25 22:24, Noé Lopez wrote:
>> calcium <[email protected]> writes:
>> 
>>> Got lots of error in that style, be it using gcc or clang in a guix shell 
>>> --container (by calling a pyhton script, more specifically to build 
>>> https://github.com/HumbleUI/JWM)
>>>
>>>
>>> How to solve this ???
>> 
>> Hi Calcium, could you provide the full guix shell commands you tried?
>> 
>> Have a nice day,
>> Noé
>> 
>>>
>>> I just wanna compile, but seems like gcc 's include doesn't even works,
>>> like why suggest to add "#include <cstddef>" to gcc's include files, when 
>>> they are supposed to work without having to modify them
>>>
>>>
>>>
>>> /gnu/store/4rj89rrw3c5gzr97z8cik34ahm305cc8-profile/include/bits/types/cookie_io_functions_t.h:28:43:
>>>  error: ‘size_t’ has not been declared
>>>      28 |                                           size_t __nbytes);
>>>         |                                           ^~~~~~
>>> /gnu/store/4rj89rrw3c5gzr97z8cik34ahm305cc8-profile/include/bits/types/cookie_io_functions_t.h:1:1:
>>>  note: ‘size_t’ is defined in header ‘<cstddef>’; this is probably fixable 
>>> by adding ‘#include <cstddef>’
>>>     +++ |+#include <cstddef>
>>>       1 | /* Copyright (C) 1991-2025 Free Software Foundation, Inc.
>>> /gnu/store/4rj89rrw3c5gzr97z8cik34ahm305cc8-profile/include/bits/types/cookie_io_functions_t.h:37:44:
>>>  error: ‘size_t’ has not been declared
>>>      37 |                                            size_t __nbytes);
>>>         |                                            ^~~~~~
>>> /gnu/store/4rj89rrw3c5gzr97z8cik34ahm305cc8-profile/include/bits/types/cookie_io_functions_t.h:37:44:
>>>  note: ‘size_t’ is defined in header ‘<cstddef>’; this is probably fixable 
>>> by adding ‘#include <cstddef>’
>>> /gnu/store/4rj89rrw3c5gzr97z8cik34ahm305cc8-profile/include/stdio.h:314:35: 
>>> error: ‘size_t’ has not been declared
>>>     314 | extern FILE *fmemopen (void *__s, size_t __len, const char 
>>> *__modes)
>>>         |                                   ^~~~~~
>>>
>>>
>>>
>>>
>>> In file included from 
>>> /gnu/store/4rj89rrw3c5gzr97z8cik34ahm305cc8-profile/include/c++/ext/string_conversions.h:48:
>>> /gnu/store/4rj89rrw3c5gzr97z8cik34ahm305cc8-profile/include/c++/ext/string_conversions.h:
>>>  In constructor ‘__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base 
>>> ...), const char*, const _CharT*, std::size_t*, _Base 
>>> ...)::_Save_errno::_Save_errno()’:
>>> /gnu/store/4rj89rrw3c5gzr97z8cik34ahm305cc8-profile/include/c++/ext/string_conversions.h:67:34:
>>>  error: ‘errno’ was not declared in this scope [-Wtemplate-body]
>>>      67 |         _Save_errno() : _M_errno(errno) { errno = 0; }
>>>         |                                  ^~~~~
>>> /gnu/store/4rj89rrw3c5gzr97z8cik34ahm305cc8-profile/include/c++/ext/string_conversions.h:49:1:
>>>  note: ‘errno’ is defined in header ‘<cerrno>’; this is probably fixable by 
>>> adding ‘#include <cerrno>’
>>>      48 | #include <cerrno>
>>>     +++ |+#include <cerrno>

Hi Calcium,

I was able to reproduce the error using the following commands:

guix shell -C clang-toolchain libxcursor libxrandr cmake libxi ninja
openjdk@11:jdk coreutils mesa
export JAVA_HOME=$GUIX_ENVIRONMENT
cmake -B build -S . -GNinja
cmake --build build

In the future, please provide a list of commands for minimal
reproduction like this, it would make it much easier.

The same error happens with gcc-toolchain.

However something like

#include <cstddef>

int main(void) {
        size_t a = 0;
        return 1;
}

compiles just fine…

As a last test I tried compiling manually:

c++ -std=gnu++14 -Ilinux/cc/ -I shared/cc linux/cc/KeyX11.cc
c++ -std=gnu++14 -Ilinux/cc/ -I shared/cc linux/cc/ILayer.cc

Which works fine (just the linker not finding main).

So I suggest that you figure out which extra compilation argument being
added by the build system is breaking it and what causes it to be there.

Hope that helps,
Noé

Attachment: signature.asc
Description: PGP signature

Reply via email to