Skip to content

Can not reproduce builds on Arch Linux #832

@coldmartian

Description

@coldmartian

Describe the bug

While compiling there were errors building the readlink and libiconv library. The version of libraries used are out dated, they do not include patches which fix compiler errors when using C23. They can be temporarily fixed by downgrading the C version to C11 or C17, but upgrading the libraries Is the best way.

I updated readlink to v8.2, and libiconv to v1.18 In both monero-sys/monero-depends/packages/ and monero-sys/monero/contrib/depends/packages/ . It seemed to have fixed the issue.

I can open a PR for fixing this once It's verified that It happens on other machines too.

Lost/trapped Funds
No

Debug logs

libiconv:

./loop_wchar.h:356:15: error: too many arguments to function 'mbrtowc'; expected 0, have 4 cargo:debug=[make depends] 356 | res = mbrtowc(&wc,buf,bufcount,&state); cargo:debug=[make depends] | ^~~~~~~ ~~~ cargo:debug=[make depends] ./loop_wchar.h:39:17: note: declared here cargo:debug=[make depends] 39 | extern size_t mbrtowc (); cargo:debug=[make depends] | ^~~~~~~

readlink:

unknown-linux-gnu/include -fPIC mbutil.c
  cargo:debug=[make depends] rm -f parse-colors.o
  cargo:debug=[make depends] x86_64-linux-gnu-gcc  -DHAVE_CONFIG_H   -I. -I. -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -DRL_LIBRARY_VERSION='"8.0"' -pipe  -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -fPIC -DREADLINE_LIBRARY -c ./tilde.c
  cargo:debug=[make depends] x86_64-linux-gnu-gcc -c  -DHAVE_CONFIG_H   -I. -I. -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -DRL_LIBRARY_VERSION='"8.0"' -pipe  -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -fPIC colors.c
  cargo:debug=[make depends] x86_64-linux-gnu-gcc -c  -DHAVE_CONFIG_H   -I. -I. -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -DRL_LIBRARY_VERSION='"8.0"' -pipe  -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -fPIC parse-colors.c
  cargo:debug=[make depends] rm -f xmalloc.o
  cargo:debug=[make depends] x86_64-linux-gnu-gcc -c  -DHAVE_CONFIG_H   -I. -I. -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -DRL_LIBRARY_VERSION='"8.0"' -pipe  -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -fPIC xmalloc.c
  cargo:debug=[make depends] rm -f xfree.o
  cargo:debug=[make depends] x86_64-linux-gnu-gcc -c  -DHAVE_CONFIG_H   -I. -I. -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -DRL_LIBRARY_VERSION='"8.0"' -pipe  -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -fPIC xfree.c
  cargo:debug=[make depends] rm -f compat.o
  cargo:debug=[make depends] x86_64-linux-gnu-gcc -c  -DHAVE_CONFIG_H   -I. -I. -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -DRL_LIBRARY_VERSION='"8.0"' -pipe  -I/home/dragon/Projects/core/target/debug/monero-depends/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -fPIC compat.c
  cargo:debug=[make depends] In file included from histexpand.c:43:
  cargo:debug=[make depends] rlmbutil.h: In function ‘_rl_wcwidth’:
  cargo:debug=[make depends] rlmbutil.h:129:1: warning: old-style function definition [-Wold-style-definition]
  cargo:debug=[make depends]   129 | _rl_wcwidth (wc)
  cargo:debug=[make depends]       | ^~~~~~~~~~~
  cargo:debug=[make depends] In file included from text.c:46:
  cargo:debug=[make depends] rlmbutil.h: In function ‘_rl_wcwidth’:
  cargo:debug=[make depends] rlmbutil.h:129:1: warning: old-style function definition [-Wold-style-definition]
  cargo:debug=[make depends]   129 | _rl_wcwidth (wc)
  cargo:debug=[make depends]       | ^~~~~~~~~~~
  cargo:debug=[make depends] In file included from rlprivate.h:29,
  cargo:debug=[make depends]                  from parse-colors.c:51:
  cargo:debug=[make depends] rlmbutil.h: In function ‘_rl_wcwidth’:
  cargo:debug=[make depends] rlmbutil.h:129:1: warning: old-style function definition [-Wold-style-definition]
  cargo:debug=[make depends]   129 | _rl_wcwidth (wc)
  cargo:debug=[make depends]       | ^~~~~~~~~~~
  cargo:debug=[make depends] In file included from misc.c:46:
  cargo:debug=[make depends] rlmbutil.h: In function ‘_rl_wcwidth’:
  cargo:debug=[make depends] rlmbutil.h:129:1: warning: old-style function definition [-Wold-style-definition]
  cargo:debug=[make depends]   129 | _rl_wcwidth (wc)
  cargo:debug=[make depends]       | ^~~~~~~~~~~
  cargo:debug=[make depends] In file included from rlprivate.h:29,
  cargo:debug=[make depends]                  from nls.c:55:
  cargo:debug=[make depends] rlmbutil.h: In function ‘_rl_wcwidth’:
  cargo:debug=[make depends] rlmbutil.h:129:1: warning: old-style function definition [-Wold-style-definition]
  cargo:debug=[make depends]   129 | _rl_wcwidth (wc)
  cargo:debug=[make depends]       | ^~~~~~~~~~~
  cargo:debug=[make depends] In file included from rlprivate.h:29,
  cargo:debug=[make depends]                  from signals.c:47:
  cargo:debug=[make depends] rlmbutil.h: In function ‘_rl_wcwidth’:
  cargo:debug=[make depends] rlmbutil.h:129:1: warning: old-style function definition [-Wold-style-definition]
  cargo:debug=[make depends]   129 | _rl_wcwidth (wc)
  cargo:debug=[make depends]       | ^~~~~~~~~~~
  cargo:debug=[make depends] In file included from mbutil.c:47:
  cargo:debug=[make depends] rlmbutil.h: In function ‘_rl_wcwidth’:
  cargo:debug=[make depends] rlmbutil.h:129:1: warning: old-style function definition [-Wold-style-definition]
  cargo:debug=[make depends]   129 | _rl_wcwidth (wc)
  cargo:debug=[make depends]       | ^~~~~~~~~~~
  cargo:debug=[make depends] signals.c: In function ‘_rl_signal_handler’:
  cargo:debug=[make depends] signals.c:62:36: error: ‘return’ with a value, in function returning void [-Wreturn-mismatch]
  cargo:debug=[make depends]    62 | #  define SIGHANDLER_RETURN return (0)
  cargo:debug=[make depends]       |                                    ^
  cargo:debug=[make depends] signals.c:160:3: note: in expansion of macro ‘SIGHANDLER_RETURN’
  cargo:debug=[make depends]   160 |   SIGHANDLER_RETURN;
  cargo:debug=[make depends]       |   ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c:141:1: note: declared here
  cargo:debug=[make depends]   141 | _rl_signal_handler (int sig)
  cargo:debug=[make depends]       | ^~~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c: In function ‘rl_signal_handler’:
  cargo:debug=[make depends] signals.c:62:36: error: ‘return’ with a value, in function returning void [-Wreturn-mismatch]
  cargo:debug=[make depends]    62 | #  define SIGHANDLER_RETURN return (0)
  cargo:debug=[make depends]       |                                    ^
  cargo:debug=[make depends] signals.c:174:3: note: in expansion of macro ‘SIGHANDLER_RETURN’
  cargo:debug=[make depends]   174 |   SIGHANDLER_RETURN;
  cargo:debug=[make depends]       |   ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c:164:1: note: declared here
  cargo:debug=[make depends]   164 | rl_signal_handler (int sig)
  cargo:debug=[make depends]       | ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c: In function ‘_rl_handle_signal’:
  cargo:debug=[make depends] signals.c:62:36: error: ‘return’ with a value, in function returning void [-Wreturn-mismatch]
  cargo:debug=[make depends]    62 | #  define SIGHANDLER_RETURN return (0)
  cargo:debug=[make depends]       |                                    ^
  cargo:debug=[make depends] signals.c:290:3: note: in expansion of macro ‘SIGHANDLER_RETURN’
  cargo:debug=[make depends]   290 |   SIGHANDLER_RETURN;
  cargo:debug=[make depends]       |   ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c:178:1: note: declared here
  cargo:debug=[make depends]   178 | _rl_handle_signal (int sig)
  cargo:debug=[make depends]       | ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c: In function ‘rl_sigwinch_handler’:
  cargo:debug=[make depends] signals.c:306:32: error: passing argument 2 of ‘rl_set_sighandler’ from incompatible pointer type [-Wincompatible-pointer-types]
  cargo:debug=[make depends]   306 |   rl_set_sighandler (SIGWINCH, rl_sigwinch_handler, &dummy_winch);
  cargo:debug=[make depends]       |                                ^~~~~~~~~~~~~~~~~~~
  cargo:debug=[make depends]       |                                |
  cargo:debug=[make depends]       |                                void (*)(int)
  cargo:debug=[make depends] In file included from rldefs.h:31,
  cargo:debug=[make depends]                  from signals.c:37:
  cargo:debug=[make depends] signals.c:81:51: note: expected ‘void (*)(void)’ but argument is of type ‘void (*)(int)’
  cargo:debug=[make depends]    81 | static SigHandler *rl_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *));
  cargo:debug=[make depends]       |                                                   ^~~~~~~~~~~~
  cargo:debug=[make depends] rlstdc.h:33:28: note: in definition of macro ‘PARAMS’
  cargo:debug=[make depends]    33 | #    define PARAMS(protos) protos
  cargo:debug=[make depends]       |                            ^~~~~~
  cargo:debug=[make depends] signals.c:295:1: note: ‘rl_sigwinch_handler’ declared here
  cargo:debug=[make depends]   295 | rl_sigwinch_handler (int sig)
  cargo:debug=[make depends]       | ^~~~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c:315:6: error: too many arguments to function ‘oh’; expected 0, have 1
  cargo:debug=[make depends]   315 |     (*oh) (sig);
  cargo:debug=[make depends]       |     ~^~~~  ~~~
  cargo:debug=[make depends] signals.c:62:36: error: ‘return’ with a value, in function returning void [-Wreturn-mismatch]
  cargo:debug=[make depends]    62 | #  define SIGHANDLER_RETURN return (0)
  cargo:debug=[make depends]       |                                    ^
  cargo:debug=[make depends] signals.c:318:3: note: in expansion of macro ‘SIGHANDLER_RETURN’
  cargo:debug=[make depends]   318 |   SIGHANDLER_RETURN;
  cargo:debug=[make depends]       |   ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c:295:1: note: declared here
  cargo:debug=[make depends]   295 | rl_sigwinch_handler (int sig)
  cargo:debug=[make depends]       | ^~~~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c: In function ‘rl_set_sighandler’:
  cargo:debug=[make depends] signals.c:343:18: error: assignment to ‘__sighandler_t’ {aka ‘void (*)(int)’} from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types]
  cargo:debug=[make depends]   343 |   act.sa_handler = handler;
  cargo:debug=[make depends]       |                  ^
  cargo:debug=[make depends] In file included from signals.c:30:
  cargo:debug=[make depends] /usr/include/signal.h:72:16: note: ‘__sighandler_t’ declared here
  cargo:debug=[make depends]    72 | typedef void (*__sighandler_t) (int);
  cargo:debug=[make depends]       |                ^~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c:359:15: warning: comparison of distinct pointer types lacks a cast [-Wcompare-distinct-pointer-types]
  cargo:debug=[make depends]   359 |   if (handler != rl_signal_handler || old_handler.sa_handler != rl_signal_handler)
  cargo:debug=[make depends]       |               ^~
  cargo:debug=[make depends] signals.c:362:21: error: returning ‘__sighandler_t’ {aka ‘void (*)(int)’} from a function with incompatible return type ‘void (*)(void)’ [-Wincompatible-pointer-types]
  cargo:debug=[make depends]   362 |   return (ohandler->sa_handler);
  cargo:debug=[make depends]       |                     ^~~~~~~~~~
  cargo:debug=[make depends] /usr/include/signal.h:72:16: note: ‘__sighandler_t’ declared here
  cargo:debug=[make depends]    72 | typedef void (*__sighandler_t) (int);
  cargo:debug=[make depends]       |                ^~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c: In function ‘rl_set_signals’:
  cargo:debug=[make depends] signals.c:441:40: error: passing argument 2 of ‘rl_maybe_set_sighandler’ from incompatible pointer type [-Wincompatible-pointer-types]
  cargo:debug=[make depends]   441 |       rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int);
  cargo:debug=[make depends]       |                                        ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends]       |                                        |
  cargo:debug=[make depends]       |                                        void (*)(int)
  cargo:debug=[make depends] signals.c:368:47: note: expected ‘void (*)(void)’ but argument is of type ‘void (*)(int)’
  cargo:debug=[make depends]   368 | rl_maybe_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler)
  cargo:debug=[make depends]       |                                   ~~~~~~~~~~~~^~~~~~~
  cargo:debug=[make depends] signals.c:164:1: note: ‘rl_signal_handler’ declared here
  cargo:debug=[make depends]   164 | rl_signal_handler (int sig)
  cargo:debug=[make depends]       | ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c:442:41: error: passing argument 2 of ‘rl_maybe_set_sighandler’ from incompatible pointer type [-Wincompatible-pointer-types]
  cargo:debug=[make depends]   442 |       rl_maybe_set_sighandler (SIGTERM, rl_signal_handler, &old_term);
  cargo:debug=[make depends]       |                                         ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends]       |                                         |
  cargo:debug=[make depends]       |                                         void (*)(int)
  cargo:debug=[make depends] signals.c:368:47: note: expected ‘void (*)(void)’ but argument is of type ‘void (*)(int)’
  cargo:debug=[make depends]   368 | rl_maybe_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler)
  cargo:debug=[make depends]       |                                   ~~~~~~~~~~~~^~~~~~~
  cargo:debug=[make depends] signals.c:164:1: note: ‘rl_signal_handler’ declared here
  cargo:debug=[make depends]   164 | rl_signal_handler (int sig)
  cargo:debug=[make depends]       | ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c:444:40: error: passing argument 2 of ‘rl_maybe_set_sighandler’ from incompatible pointer type [-Wincompatible-pointer-types]
  cargo:debug=[make depends]   444 |       rl_maybe_set_sighandler (SIGHUP, rl_signal_handler, &old_hup);
  cargo:debug=[make depends]       |                                        ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends]       |                                        |
  cargo:debug=[make depends]       |                                        void (*)(int)
  cargo:debug=[make depends] signals.c:368:47: note: expected ‘void (*)(void)’ but argument is of type ‘void (*)(int)’
  cargo:debug=[make depends]   368 | rl_maybe_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler)
  cargo:debug=[make depends]       |                                   ~~~~~~~~~~~~^~~~~~~
  cargo:debug=[make depends] signals.c:164:1: note: ‘rl_signal_handler’ declared here
  cargo:debug=[make depends]   164 | rl_signal_handler (int sig)
  cargo:debug=[make depends]       | ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c:447:41: error: passing argument 2 of ‘rl_maybe_set_sighandler’ from incompatible pointer type [-Wincompatible-pointer-types]
  cargo:debug=[make depends]   447 |       rl_maybe_set_sighandler (SIGQUIT, rl_signal_handler, &old_quit);
  cargo:debug=[make depends]       |                                         ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends]       |                                         |
  cargo:debug=[make depends]       |                                         void (*)(int)
  cargo:debug=[make depends] signals.c:368:47: note: expected ‘void (*)(void)’ but argument is of type ‘void (*)(int)’
  cargo:debug=[make depends]   368 | rl_maybe_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler)
  cargo:debug=[make depends]       |                                   ~~~~~~~~~~~~^~~~~~~
  cargo:debug=[make depends] signals.c:164:1: note: ‘rl_signal_handler’ declared here
  cargo:debug=[make depends]   164 | rl_signal_handler (int sig)
  cargo:debug=[make depends]       | ^~~~~~~~~~~~~~~~~
  cargo:debug=[make depends] signals.c:451:40: error: passing argument 2 of ‘rl_set_sighandler’ from incompatible pointer type [-Wincompatible-pointer-types]

Platform:

  • Software Version: Master branch
  • Operating System: Arch Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions