ungoogled-software / ungoogled-chromium-debian

Debian, Ubuntu, and others packaging for ungoogled-chromium
386 stars 49 forks source link

Build issue with jsoncpp on Ubuntu #292

Closed jolly-jump closed 2 years ago

jolly-jump commented 2 years ago

Hi,

System

Description

when I follow your README.md how to build ungoogled-chromium-debian packages it fails here:

INFO: Path has no substitutions: tools/md_browser/base.css
cp /data/ungoogled-chromium-debian/debian/shims/jsoncpp.gn build/linux/unbundle
build/linux/unbundle/replace_gn_files.py --system-libraries flac fontconfig freetype jsoncpp libdrm libevent libjpeg libpng libwebp libxml libxslt opus re2 snappy zlib 
Unrecognized system libraries requested: jsoncpp
make[1]: *** [debian/rules:140: override_dh_auto_configure] Error 1
make[1]: Leaving directory '/data/ungoogled-chromium-debian'
make: *** [debian/rules:108: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

I have tried that on ubuntu 20.04 and on ubuntu 22.04, failing with same error message.

The package libjsoncpp-dev is installed. On Ubuntu 20.04:

ii  libjsoncpp-dev:amd64               1.7.4-3.1ubuntu2
ii  libjsoncpp1:amd64                  1.7.4-3.1ubuntu2

On ubuntu 22.04 the packages are called differently

ii  libjsoncpp-dev:amd64                 1.9.5-3
ii  libjsoncpp25:amd64                   1.9.5-3 

This comment: https://github.com/ungoogled-software/ungoogled-chromium-debian/issues/286#issuecomment-1057515299 also suggests a weird dependency problem on this library

Also this bug report: https://github.com/ungoogled-software/ungoogled-chromium-debian/issues/278 reports problems with symbols in the library.

Anyone an idea how to circumvent these errors?

Cheers, Tobias

berkley4 commented 2 years ago

It looks to me like either jsoncpp.gn isn't getting copied into build/linux/unbundle, or system-jsoncpp.patch hasn't been applied.

Try ls build/linux/unbundle/jsoncpp.gn and quilt applied | grep 'system-jsoncpp.patch' to see if it's either of these causing the issue.

If you really get stuck, you can simply comment out each line containing 'jsoncpp' in debian/rules to build with the chromium's bundled version.

jolly-jump commented 2 years ago

Hi @berkley4 ,

thanks. Yes, you are right, indeed dpkg-source --before-build . does not apply the patches. Probably a little too naive of me to try and compile the newest version.

Well, I am on it, the first patch fails for some 99-version I tried. I will try to fix the patches for the 100-version to make it at least compile.

Thanks.

jolly-jump commented 2 years ago

OK, after trying a 99-version and a 100-version and modifying debian/patches/* to make it compile, I stranded with the allocator "tcmalloc", which since here: https://chromium-review.googlesource.com/c/chromium/src/+/3372825 is not supported anymore / phased out of chromium. So I tried "use_allocator=partition" which works so far so good up until some point in compilation: networking in case of the 100-try and gpu_mojo_media in case of the 99-try.

Anyway, since this is far off scope of the issue I raised originally, one could close this one as "not relevant for a 98-build", which should work fine btw, but I didn't bother to let it compile to the end.

For completness:

100-try

../../services/network/sct_auditing/sct_auditing_reporter.cc:197:10: error: call to deleted constructor of 'base::Value'
  return value;
         ^~~~~
../../base/values.h:254:3: note: 'Value' has been explicitly marked deleted here
  Value(const Value&) = delete;
  ^
1 warning and 1 error generated.
[26127/49566] CXX obj/services/network/network_service/socket_data_pump.o
ninja: build stopped: subcommand failed.
make[1]: *** [debian/rules:144: override_dh_auto_build] Error 1
make[1]: Leaving directory '/data/ungoogled-chromium-debian-100'

99-try:

In file included from gen/shim_headers/opus_shim/third_party/opus/src/include/opus.h:2:
gen/shim_headers/opus_shim/third_party/opus/src/include/opus.h:2:10: error: 'opus.h' file not found with <angled> include; use "quotes" instead
#include <opus.h>
         ^~~~~~~~
         "opus.h"
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
[28887/49232] CXX obj/media/mojo/services/services/media_service_factory.o
ninja: build stopped: subcommand failed.
make[1]: *** [debian/rules:144: override_dh_auto_build] Error 1
make[1]: Leaving directory '/data/ungoogled-chromium-debian'