rkd77 / elinks

Fork of elinks
Other
335 stars 35 forks source link

'make test' fails on src/protocol/test/uri-test due to gettext definition #218

Open aelmahmoudy opened 1 year ago

aelmahmoudy commented 1 year ago

'make test' fails on src/protocol/test/uri-test due to gettext definition, here's the excerpt from build log:

   [LINK]   src/protocol/test/uri-test
/usr/bin/ld:
../../../src/intl/gettext/lib.o:./src/intl/gettext/./src/intl/gettext/libintl.c:20:
 multiple definition of `current_charset';
uri-test.o:./src/protocol/test/./src/protocol/test/uri-test.c:34: first defined
here
/usr/bin/ld: ../../../src/intl/gettext/lib.o: in function `gettext':
./src/intl/gettext/./src/intl/gettext/intl-compat.c:82: multiple definition of
`gettext'; uri-test.o:./src/protocol/test/./src/protocol/test/uri-test.c:26: first
defined here
collect2: error: ld returned 1 exit status
make[4]: *** [../../.././Makefile.lib:243: uri-test] Error 1
make[4]: Leaving directory
'/builds/aelmahmoudy/elinks/debian/output/source_dir/src/protocol/test'
make[3]: *** [../.././Makefile.lib:284: test-recursive] Error 1
make[3]: Leaving directory
'/builds/aelmahmoudy/elinks/debian/output/source_dir/src/protocol'
make[2]: *** [.././Makefile.lib:284: test-recursive] Error 1
make[2]: Leaving directory
'/builds/aelmahmoudy/elinks/debian/output/source_dir/src'
make[1]: *** [Makefile.lib:284: test-recursive] Error 1
make[1]: Leaving directory '/builds/aelmahmoudy/elinks/debian/output/source_dir'
dh_auto_test: error: make -j2 test "TESTSUITEFLAGS=-j2 --verbose" VERBOSE=1
returned exit code 2

Full build log: https://salsa.debian.org/aelmahmoudy/elinks/-/jobs/4138018/raw

aelmahmoudy commented 1 year ago

I tried building with --enable-gettext, yet 'make test' failed at an earlier stage !

  [CC]   src/mime/backend/mailcap-cache.o
gcc -rdynamic -Wl,-z,relro -Wl,-z,now -Wl,-z,defs  mailcap-cache.o   -o mailcap-cache
/usr/bin/ld: mailcap-cache.o: warning: relocation against `errline' in read-only section `.text'
/usr/bin/ld: mailcap-cache.o: in function `format_command':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:504: undefined reference to `init_string'
/usr/bin/ld: mailcap-cache.o: in function `add_bytes_to_string__':
./src/mime/backend/../../.././src/util/string.h:277: undefined reference to `assert_failed'
/usr/bin/ld: mailcap-cache.o: in function `format_command':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:520: undefined reference to `add_to_string'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:549: undefined reference to `add_char_to_string'
/usr/bin/ld: mailcap-cache.o: in function `add_bytes_to_string__':
./src/mime/backend/../../.././src/util/string.h:277: undefined reference to `assert_failed'
/usr/bin/ld: ./src/mime/backend/../../.././src/util/string.h:277: undefined reference to `errfile'
/usr/bin/ld: ./src/mime/backend/../../.././src/util/string.h:277: undefined reference to `errline'
/usr/bin/ld: ./src/mime/backend/../../.././src/util/string.h:277: undefined reference to `elinks_internal'
/usr/bin/ld: ./src/mime/backend/../../.././src/util/string.h:278: undefined reference to `assert_failed'
/usr/bin/ld: ./src/mime/backend/../../.././src/util/string.h:278: undefined reference to `assert_failed'
/usr/bin/ld: mailcap-cache.o: in function `format_command':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:522: undefined reference to `add_char_to_string'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:541: undefined reference to `add_to_string'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:533: undefined reference to `add_to_string'
/usr/bin/ld: mailcap-cache.o: in function `mem_align_alloc__':
./src/mime/backend/../../.././src/util/memory.h:133: undefined reference to `mem_realloc'
/usr/bin/ld: mailcap-cache.o: in function `format_command':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:529: undefined reference to `done_string'
/usr/bin/ld: mailcap-cache.o: in function `check_entries':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:576: undefined reference to `exe'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:578: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `done_mailcap_entry':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:141: undefined reference to `mem_free'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:142: undefined reference to `mem_free'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:143: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `done_mailcap':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:444: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `set_display':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:687: undefined reference to `assert_failed'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:688: undefined reference to `assert_failed'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:688: undefined reference to `mem_free'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:691: undefined reference to `stracpy'
/usr/bin/ld: mailcap-cache.o: in function `get_mailcap_entry':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:604: undefined reference to `get_hash_item'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:617: undefined reference to `memacpy'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:624: undefined reference to `get_hash_item'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:625: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `set_display':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:720: undefined reference to `mem_free'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:687: undefined reference to `assert_failed'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:687: undefined reference to `errline'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:687: undefined reference to `errfile'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:687: undefined reference to `elinks_internal'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:688: undefined reference to `assert_failed'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:720: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `get_mime_handler_mailcap':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:758: undefined reference to `init_mime_handler'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:761: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `init_mailcap_map':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:405: undefined reference to `init_hash8'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:414: undefined reference to `get_next_path_filename'
/usr/bin/ld: mailcap-cache.o: in function `parse_mailcap_file':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:331: undefined reference to `file_read_line'
/usr/bin/ld: mailcap-cache.o: in function `init_mailcap_entry':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:155: undefined reference to `mem_calloc'
/usr/bin/ld: mailcap-cache.o: in function `parse_optional_fields':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:285: undefined reference to `c_strncasecmp'
/usr/bin/ld: mailcap-cache.o: in function `add_mailcap_entry':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:173: undefined reference to `get_hash_item'
/usr/bin/ld: mailcap-cache.o: in function `set_display':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:720: undefined reference to `mem_free'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:720: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `parse_optional_fields':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:288: undefined reference to `c_strncasecmp'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:291: undefined reference to `c_strncasecmp'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:308: undefined reference to `c_strncasecmp'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:309: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `done_mailcap_entry':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:141: undefined reference to `mem_free'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:142: undefined reference to `mem_free'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:143: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `parse_mailcap_file':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:357: undefined reference to `usrerror'
/usr/bin/ld: mailcap-cache.o: in function `parse_optional_fields':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:295: undefined reference to `mem_free'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:303: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `init_mailcap_map':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:418: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `add_mailcap_entry':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:173: undefined reference to `get_hash_item'
/usr/bin/ld: mailcap-cache.o: in function `done_mailcap_entry':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:141: undefined reference to `mem_free'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:142: undefined reference to `mem_free'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:143: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `add_mailcap_entry':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:175: undefined reference to `mem_alloc'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:181: undefined reference to `safe_strncpy'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:185: undefined reference to `add_hash_item'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:187: undefined reference to `mem_free'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:175: undefined reference to `mem_alloc'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:181: undefined reference to `safe_strncpy'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:185: undefined reference to `add_hash_item'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:187: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `set_display':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:720: undefined reference to `mem_free'
/usr/bin/ld: mailcap-cache.o: in function `get_mailcap_field_text':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:270: undefined reference to `stracpy'
/usr/bin/ld: mailcap-cache.o: in function `done_mailcap':
./src/mime/backend/../../.././src/mime/backend/mailcap.c:447: undefined reference to `free_hash'
/usr/bin/ld: ./src/mime/backend/../../.././src/mime/backend/mailcap.c:447: undefined reference to `free_hash'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status
make[4]: *** [<builtin>: mailcap-cache] Error 1

Full build log: https://salsa.debian.org/aelmahmoudy/elinks/-/jobs/4152257/raw

aelmahmoudy commented 1 year ago

'meson test' reports that there are no tests to be run !

   dh_auto_test -O--buildsystem=meson
        cd obj-x86_64-linux-gnu && LC_ALL=C.UTF-8 MESON_TESTTHREADS=2 meson test
ninja: no work to do.
No tests defined.
rkd77 commented 1 year ago

-Dtest=true must be set at config stage. By default meson builds test program uncoditionally, even if tests were not requested, so this switch.

aelmahmoudy commented 1 year ago

Even with -Dtest=true, I got the same report that there are no tests to run. Build log: https://salsa.debian.org/aelmahmoudy/elinks/-/jobs/4158575/raw

rkd77 commented 1 year ago

In this ^ log I can see that tests were run. This endif was fixed in commit from issue #203

aelmahmoudy commented 1 year ago

Oops sorry, I got deceived by the first message that there are no tests to run. So why do those tests fail when building with autoconf ?

rkd77 commented 1 year ago

Try now. I rarely run these tests.

aelmahmoudy commented 1 year ago

Try now. I rarely run these tests.

Do you mean that you don't ever run the tests, or that you mainly build (& test) using meson ? Anyways the patch fixes the test, only if I compile without system gettext. Yet when I compile with system gettext, the build doesn't even reach that test and fails at an earlier test, as mentioned in the comment: https://github.com/rkd77/elinks/issues/218#issuecomment-1516848941_

Full build log: https://salsa.debian.org/aelmahmoudy/elinks/-/jobs/4170918/raw

rkd77 commented 1 year ago

I'm going to remove autotools support in 0.20. --enable-gettext must come together with --disable-nls . It is not logical, but works like this. I don't know how to cleanly "code" it in configure.ac.