Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trying to build in TrueOS/FreeBSD12 #9

Open
dszidi opened this issue Feb 17, 2018 · 8 comments
Open

Trying to build in TrueOS/FreeBSD12 #9

dszidi opened this issue Feb 17, 2018 · 8 comments

Comments

@dszidi
Copy link

dszidi commented Feb 17, 2018

Hi, first of all thanks for your work on these patches. Getting these apps to work on FreeBSD is a big win. I'm running TrueOS which is FreeBSD12 under the hood. I'm getting the following error when trying to build just electron from the repo's electron directory:

  • script/update -t x64 --skip_gclient
    Warning: No "*.patch" files found in the "~/Electron-VSCode-Atom-For-FreeBSD/electron/libchromiumcontent/patches/third_party" folder.
    Traceback (most recent call last):
    File "script/update", line 396, in
    sys.exit(main())
    File "script/update", line 93, in main
    run_gn(target_arch, args.defines))
    File "script/update", line 335, in run_gn
    subprocess.call([gn, 'gen', os.path.relpath(output_dir, SRC_DIR)],
    UnboundLocalError: local variable 'gn' referenced before assignment

I went through and replaced all mention of freebsd11 with freebsd12 in

  • electron_vendor_libchromiumcontentv1.diff
  • electron_110.diff
  • electron_111.diff

If you could offer any guidance I'd be very grateful.

@prash-wghats
Copy link
Owner

prash-wghats commented Feb 18, 2018

Have you changed the freebsd versions in libchromiumcontent_111.diff?.

@dszidi
Copy link
Author

dszidi commented Feb 18, 2018

I have not. I'm going to look through all the files again to make sure I didn't miss anything

@dszidi
Copy link
Author

dszidi commented Feb 28, 2018

The good news is that the latest binary releases are working in TrueOS/FreeBSD 12. Unfortunately I still can't seem to get it to build after just changing the freebsd version numbers. Here are the errors generated...

             ^

16 errors generated.
[9888/15783] CXX obj/net/net/quartc_session.o
FAILED: obj/net/net/quartc_session.o
clang++40 -MMD -MF obj/net/net/quartc_session.o.d -DV8_DEPRECATION_WARNINGS -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DNO_TCMALLOC -DDISABLE_NACL -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DCR_CLANG_REVISION="307486-1" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DDLOPEN_KERBEROS -DNET_IMPLEMENTATION -DUSE_KERBEROS -DENABLE_BUILT_IN_DNS -DUSE_GCONF -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DHAVE_PTHREAD -DUSE_GIO -DGLIB_DISABLE_DEPRECATION_WARNINGS -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DUCHAR_TYPE=uint16_t -I../.. -Igen -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -I/usr/local/include/gconf/2 -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include -I/usr/local/include/orbit-2.0 -I../../third_party/protobuf/src -Igen/protoc_out -I../../third_party/protobuf/src -I../../third_party/boringssl/src/include -I/usr/local/include/nss -I/usr/local/include/nss/nss -I/usr/local/include/nspr -I../../sdch/open-vcdiff/src -I../../third_party/zlib -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include -I../../third_party/ced/src -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -I../../third_party/brotli/include -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -funwind-tables -fPIC -pipe -fcolor-diagnostics -m64 -march=x86-64 -Wall -Werror -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-user-defined-warnings -O2 -fno-ident -fdata-sections -ffunction-sections -fomit-frame-pointer -g0 -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wexit-time-destructors -DORBIT2=1 -Wno-header-guard -std=c++11 -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -Wno-deprecated-register -I/usr/local/include -c ../../net/quic/quartc/quartc_session.cc -o obj/net/net/quartc_session.o
In file included from ../../net/quic/quartc/quartc_session.cc:5:
In file included from ../../net/quic/quartc/quartc_session.h:9:
In file included from ../../net/quic/core/quic_crypto_server_stream.h:15:
In file included from ../../net/quic/core/crypto/quic_crypto_server_config.h:23:
gen/net/quic/core/proto/cached_network_parameters.pb.h:17:2: error: This file was generated by an older version of protoc which is
#error This file was generated by an older version of protoc which is
^
gen/net/quic/core/proto/cached_network_parameters.pb.h:18:2: error: incompatible with your Protocol Buffer headers. Please
#error incompatible with your Protocol Buffer headers. Please
^
gen/net/quic/core/proto/cached_network_parameters.pb.h:19:2: error: regenerate this file with a newer version of protoc.
#error regenerate this file with a newer version of protoc.
^
gen/net/quic/core/proto/cached_network_parameters.pb.h:66:1: error: too many arguments to function call, expected 0, have 1
&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/google/protobuf/arenastring.h:225:3: note: 'GetNoArena' declared here
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
In file included from ../../net/quic/quartc/quartc_session.cc:5:
In file included from ../../net/quic/quartc/quartc_session.h:9:
In file included from ../../net/quic/core/quic_crypto_server_stream.h:15:
In file included from ../../net/quic/core/crypto/quic_crypto_server_config.h:23:
gen/net/quic/core/proto/cached_network_parameters.pb.h:259:35: error: too many arguments to function call, expected 0, have 1
return serving_region_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/google/protobuf/arenastring.h:225:3: note: 'GetNoArena' declared here
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
In file included from ../../net/quic/quartc/quartc_session.cc:5:
In file included from ../../net/quic/quartc/quartc_session.h:9:
In file included from ../../net/quic/core/quic_crypto_server_stream.h:15:
In file included from ../../net/quic/core/crypto/quic_crypto_server_config.h:24:
gen/net/quic/core/proto/source_address_token.pb.h:17:2: error: This file was generated by an older version of protoc which is
#error This file was generated by an older version of protoc which is
^
gen/net/quic/core/proto/source_address_token.pb.h:18:2: error: incompatible with your Protocol Buffer headers. Please
#error incompatible with your Protocol Buffer headers. Please
^
gen/net/quic/core/proto/source_address_token.pb.h:19:2: error: regenerate this file with a newer version of protoc.
#error regenerate this file with a newer version of protoc.
^
gen/net/quic/core/proto/source_address_token.pb.h:58:1: error: too many arguments to function call, expected 0, have 1
&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/google/protobuf/arenastring.h:225:3: note: 'GetNoArena' declared here
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
In file included from ../../net/quic/quartc/quartc_session.cc:5:
In file included from ../../net/quic/quartc/quartc_session.h:9:
In file included from ../../net/quic/core/quic_crypto_server_stream.h:15:
In file included from ../../net/quic/core/crypto/quic_crypto_server_config.h:24:
gen/net/quic/core/proto/source_address_token.pb.h:193:1: error: too many arguments to function call, expected 0, have 1
&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/google/protobuf/arenastring.h:225:3: note: 'GetNoArena' declared here
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
In file included from ../../net/quic/quartc/quartc_session.cc:5:
In file included from ../../net/quic/quartc/quartc_session.h:9:
In file included from ../../net/quic/core/quic_crypto_server_stream.h:15:
In file included from ../../net/quic/core/crypto/quic_crypto_server_config.h:24:
gen/net/quic/core/proto/source_address_token.pb.h:309:23: error: too many arguments to function call, expected 0, have 1
return ip_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/google/protobuf/arenastring.h:225:3: note: 'GetNoArena' declared here
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
In file included from ../../net/quic/quartc/quartc_session.cc:5:
In file included from ../../net/quic/quartc/quartc_session.h:9:
In file included from ../../net/quic/core/quic_crypto_server_stream.h:15:
In file included from ../../net/quic/core/crypto/quic_crypto_server_config.h:24:
gen/net/quic/core/proto/source_address_token.pb.h:396:34: error: allocating an object of abstract class type '::net::CachedNetworkParameters'
cached_network_parameters_ = new ::net::CachedNetworkParameters;
^
/usr/local/include/google/protobuf/message_lite.h:359:18: note: unimplemented pure virtual method 'ByteSizeLong' in 'CachedNetworkParameters'
virtual size_t ByteSizeLong() const = 0;
^
In file included from ../../net/quic/quartc/quartc_session.cc:5:
In file included from ../../net/quic/quartc/quartc_session.h:9:
In file included from ../../net/quic/core/quic_crypto_server_stream.h:15:
../../net/quic/core/crypto/quic_crypto_server_config.h:60:23: error: field type 'net::SourceAddressTokens' is an abstract class
SourceAddressTokens source_address_tokens;
^
/usr/local/include/google/protobuf/message_lite.h:359:18: note: unimplemented pure virtual method 'ByteSizeLong' in 'SourceAddressTokens'
virtual size_t ByteSizeLong() const = 0;
^
In file included from ../../net/quic/quartc/quartc_session.cc:5:
In file included from ../../net/quic/quartc/quartc_session.h:9:
In file included from ../../net/quic/core/quic_crypto_server_stream.h:15:
../../net/quic/core/crypto/quic_crypto_server_config.h:98:29: error: field type 'net::CachedNetworkParameters' is an abstract class
CachedNetworkParameters cached_network_params;
^
In file included from ../../net/quic/quartc/quartc_session.cc:5:
In file included from ../../net/quic/quartc/quartc_session.h:9:
../../net/quic/core/quic_crypto_server_stream.h:386:23: error: field type 'net::SourceAddressTokens' is an abstract class
SourceAddressTokens previous_source_address_tokens_;
^
In file included from ../../net/quic/quartc/quartc_session.cc:5:
In file included from ../../net/quic/quartc/quartc_session.h:9:
In file included from ../../net/quic/core/quic_crypto_server_stream.h:15:
In file included from ../../net/quic/core/crypto/quic_crypto_server_config.h:23:
In file included from gen/net/quic/core/proto/cached_network_parameters.pb.h:22:
/usr/local/include/google/protobuf/arena.h:343:18: error: allocating an object of abstract class type 'net::SourceAddressToken'
return new T();
^
/usr/local/include/google/protobuf/arena.h:652:12: note: in instantiation of function template specialization 'google::protobuf::Arena::Createnet::SourceAddressToken' requested here
return Create(arena);
^
/usr/local/include/google/protobuf/arena.h:657:12: note: in instantiation of function template specialization 'google::protobuf::Arena::CreateMaybeMessagenet::SourceAddressToken' requested here
return CreateMaybeMessage(arena, is_arena_constructable());
^
/usr/local/include/google/protobuf/repeated_field.h:609:39: note: in instantiation of function template specialization 'google::protobuf::Arena::CreateMaybeMessagenet::SourceAddressToken' requested here
return ::google::protobuf::Arena::CreateMaybeMessage(arena);
^
/usr/local/include/google/protobuf/repeated_field.h:639:10: note: in instantiation of member function 'google::protobuf::internal::GenericTypeHandlernet::SourceAddressToken::New' requested here
return New(arena);
^
/usr/local/include/google/protobuf/repeated_field.h:1509:20: note: in instantiation of member function 'google::protobuf::internal::GenericTypeHandlernet::SourceAddressToken::NewFromPrototype' requested here
TypeHandler::NewFromPrototype(prototype, arena_);
^
/usr/local/include/google/protobuf/repeated_field.h:1926:32: note: in instantiation of function template specialization 'google::protobuf::internal::RepeatedPtrFieldBase::Add<google::protobuf::RepeatedPtrFieldnet::SourceAddressToken::TypeHandler>' requested here
return RepeatedPtrFieldBase::Add();
^
gen/net/quic/core/proto/source_address_token.pb.h:440:16: note: in instantiation of member function 'google::protobuf::RepeatedPtrFieldnet::SourceAddressToken::Add' requested here
return tokens_.Add();
^
/usr/local/include/google/protobuf/message_lite.h:359:18: note: unimplemented pure virtual method 'ByteSizeLong' in 'SourceAddressToken'
virtual size_t ByteSizeLong() const = 0;
^
16 errors generated.
[9889/15783] CXX obj/net/net/sdch_owner.o
[9890/15783] CXX obj/net/net/socket_posix.o
[9891/15783] CXX obj/net/net/socks5_client_socket.o
[9892/15783] CXX obj/net/net/client_socket_pool_base.o
[9893/15783] CXX obj/net/net/socks_client_socket.o
[9894/15783] CXX obj/net/net/socks_client_socket_pool.o
[9895/15783] CXX obj/net/net/client_socket_pool_manager.o
[9896/15783] CXX obj/net/net/client_socket_pool_manager_impl.o
ninja: build stopped: subcommand failed.

@prash-wghats
Copy link
Owner

Try compiling after removing devel\protobuf or moving /usr/local/include/protobuf. The chromium build comes with its own version of google protobuf.

@hbowden
Copy link

hbowden commented Aug 27, 2018

@dszidi @prash-wghats Any luck getting this to work on FreeBSD 12?

@prash-wghats
Copy link
Owner

Not tried compiling it. But the release build https://github.com/prash-wghats/Electron-VSCode-Atom-For-FreeBSD/releases/download/electron_v2.0.1/electron-v2.0.1-freebsd-x64.zip works in FreeBSD12-current.

@lapo-luchini
Copy link

There's also an attempt at producing an official FreeBSD Port in this other project (based mostly on prash's good work).

@prash-wghats
Copy link
Owner

@hbowden Replace https://github.com/prash-wghats/Electron-VSCode-Atom-For-FreeBSD/tree/master/electron/chromium_make.diff with

--- a/Makefile	2018-08-30 17:47:06.762547000 +0400
+++ b/Makefile	2018-08-30 19:54:21.193361000 +0400
@@ -23,7 +23,6 @@
 BUILD_DEPENDS+=	gperf:devel/gperf \
 		clang40:devel/llvm40 \
 		yasm:devel/yasm \
-		ffmpeg>=3.2.2,1:multimedia/ffmpeg \
 		flock:sysutils/flock \
 		node:www/node \
 		${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
@@ -42,13 +41,10 @@
 		libjsoncpp.so:devel/jsoncpp \
 		libpci.so:devel/libpci \
 		libnspr4.so:devel/nspr \
-		libre2.so:devel/re2 \
 		libcairo.so:graphics/cairo \
 		libdrm.so:graphics/libdrm \
 		libexif.so:graphics/libexif \
 		libpng.so:graphics/png \
-		libwebp.so:graphics/webp \
-		libavcodec.so:multimedia/ffmpeg \
 		libcups.so:print/cups \
 		libharfbuzz.so:print/harfbuzz \
 		libharfbuzz-icu.so:print/harfbuzz-icu \
@@ -81,8 +77,8 @@
 CPE_PRODUCT=	chrome
 USE_LDCONFIG=	${DATADIR}
 USE_PERL5=	build
-USE_XORG=	scrnsaverproto x11 xcb xcomposite xcursor xext xdamage xfixes xi \
-		xproto xrandr xrender xscrnsaver xtst
+USE_XORG=	x11 xcb xcomposite xcursor xext xdamage xfixes xi \
+		xorgproto xrandr xrender xscrnsaver xtst
 USE_GNOME=	atk dconf glib20 gtk30 libxml2 libxslt
 SHEBANG_FILES=	chrome/tools/build/linux/chrome-wrapper
 ALL_TARGET=	chrome
@@ -233,7 +229,7 @@
 	#./build/linux/unbundle/remove_bundled_libraries.py [list of preserved]
 	cd ${WRKSRC} && ${PYTHON_CMD} \
 		./build/linux/unbundle/replace_gn_files.py --system-libraries \
-		ffmpeg flac harfbuzz-ng libwebp libxml libxslt snappy yasm || ${FALSE}
+		 flac harfbuzz-ng libxml libxslt snappy yasm || ${FALSE}
 .endif
 
 do-configure:

Rest worked as is. sh build_electron.sh. Electron built in FreeBSD 12.0-CURRENT #0 r337160

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants