Removing --enable-debug requires a clobber
Categories
(Firefox Build System :: General, defect, P3)
Tracking
(Not tracked)
People
(Reporter: joshuacmarshall, Unassigned)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
|
44.48 KB,
text/plain
|
Details |
My config file usually looks like:
ac_add_options --enable-application=browser
ac_add_options --enable-profiling
ac_add_options --enable-optimize="-Og"
ac_add_options --disable-optimize --enable-debug --enable-debug-symbols
ac_add_options --disable-unified-build
If I build, remove --enable-debug, then build without clobber, I get errors (attached). Clobbering fixes things.
Updated•2 years ago
|
Comment 1•11 months ago
|
||
I had the same issue today. I changed from non-debug+opt to debug+non-opt, and this is the error I get:
2:14.78 Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 00s
2:14.80 In file included from Unified_cpp_sandbox_common0.cpp:11:
2:14.80 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:80:21: error: no member named 'SendInitSandboxTesting' in 'mozilla::dom::ContentParent'
2:14.80 80 | Unused << aActor->SendInitSandboxTesting(std::move(sandboxTestingChildEnd));
2:14.80 | ~~~~~~ ^
2:14.80 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:155:11: note: in instantiation of function template specialization 'mozilla::InitializeSandboxTestingActors<mozilla::dom::ContentParent>' requested here
2:14.80 155 | InitializeSandboxTestingActors(parents[0], processPromise);
2:14.80 | ^
2:14.80 third_party/libwebrtc/rtc_base/platform_thread_types_gn
2:14.81 third_party/libwebrtc/rtc_base/race_checker_gn
2:14.81 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:80:21: error: no member named 'SendInitSandboxTesting' in 'mozilla::gfx::GPUChild'
2:14.81 80 | Unused << aActor->SendInitSandboxTesting(std::move(sandboxTestingChildEnd));
2:14.81 | ~~~~~~ ^
2:14.81 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:167:11: note: in instantiation of function template specialization 'mozilla::InitializeSandboxTestingActors<mozilla::gfx::GPUChild>' requested here
2:14.81 167 | InitializeSandboxTestingActors(gpuChild, processPromise);
2:14.81 | ^
2:14.81 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:80:21: error: no member named 'SendInitSandboxTesting' in 'mozilla::RDDChild'
2:14.81 80 | Unused << aActor->SendInitSandboxTesting(std::move(sandboxTestingChildEnd));
2:14.81 | ~~~~~~ ^
2:14.82 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:181:24: note: in instantiation of function template specialization 'mozilla::InitializeSandboxTestingActors<mozilla::RDDChild>' requested here
2:14.82 181 | return InitializeSandboxTestingActors(rddChild, processPromise);
2:14.82 | ^
2:14.82 third_party/libwebrtc/rtc_base/random_gn
2:14.82 third_party/libwebrtc/rtc_base/rate_limiter_gn
2:14.82 third_party/libwebrtc/rtc_base/rate_statistics_gn
2:14.83 third_party/libwebrtc/rtc_base/rate_tracker_gn
2:14.83 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:80:21: error: no member named 'SendInitSandboxTesting' in 'mozilla::gmp::GMPContentParent'
2:14.83 80 | Unused << aActor->SendInitSandboxTesting(std::move(sandboxTestingChildEnd));
2:14.83 | ~~~~~~ ^
2:14.83 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:219:28: note: in instantiation of function template specialization 'mozilla::InitializeSandboxTestingActors<mozilla::gmp::GMPContentParent>' requested here
2:14.83 219 | return InitializeSandboxTestingActors(parent.get(),
2:14.83 | ^
2:14.84 third_party/libwebrtc/rtc_base/rtc_event_gn
2:14.84 third_party/libwebrtc/rtc_base/rtc_numerics_gn
2:14.84 In file included from Unified_cpp_webrtc_vp9_gn0.cpp:11:
2:14.85 /home/canova/projects/gecko/third_party/libwebrtc/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc:283:7: warning: field 'enable_svc_for_simulcast_' will be initialized after field 'num_cores_' [-Wreorder-ctor]
2:14.85 283 | enable_svc_for_simulcast_(
2:14.85 | ^~~~~~~~~~~~~~~~~~~~~~~~~~
2:14.85 | num_cores_(0)
2:14.85 284 | !env.field_trials().IsDisabled("WebRTC-VP9-SvcForSimulcast")),
2:14.85 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2:14.85 285 | num_cores_(0),
2:14.85 | ~~~~~~~~~~~~~
2:14.85 third_party/libwebrtc/rtc_base/sample_counter_gn
2:14.86 third_party/libwebrtc/rtc_base/socket_address_gn
2:14.86 third_party/libwebrtc/rtc_base/socket_gn
2:14.86 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:80:21: error: no member named 'SendInitSandboxTesting' in 'mozilla::net::SocketProcessParent'
2:14.86 80 | Unused << aActor->SendInitSandboxTesting(std::move(sandboxTestingChildEnd));
2:14.86 | ~~~~~~ ^
2:14.87 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:248:20: note: in instantiation of function template specialization 'mozilla::InitializeSandboxTestingActors<mozilla::net::SocketProcessParent>' requested here
2:14.87 248 | return InitializeSandboxTestingActors(parent.get(), processPromise);
2:14.87 | ^
2:14.87 third_party/libwebrtc/rtc_base/stringutils_gn
2:14.87 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:80:21: error: no member named 'SendInitSandboxTesting' in 'mozilla::ipc::UtilityProcessParent'
2:14.87 80 | Unused << aActor->SendInitSandboxTesting(std::move(sandboxTestingChildEnd));
2:14.87 | ~~~~~~ ^
2:14.87 /home/canova/projects/gecko/security/sandbox/common/test/SandboxTest.cpp:267:28: note: in instantiation of function template specialization 'mozilla::InitializeSandboxTestingActors<mozilla::ipc::UtilityProcessParent>' requested here
2:14.87 267 | return InitializeSandboxTestingActors(utilityParent.get(),
2:14.87 | ^
2:14.88 third_party/libwebrtc/rtc_base/synchronization/sequence_checker_internal_gn
2:14.88 third_party/libwebrtc/rtc_base/synchronization/yield_gn
2:14.88 third_party/libwebrtc/rtc_base/synchronization/yield_policy_gn
2:14.88 third_party/libwebrtc/rtc_base/system/file_wrapper_gn
2:14.88 third_party/libwebrtc/rtc_base/task_utils/repeating_task_gn
2:14.90 third_party/libwebrtc/rtc_base/third_party/base64/base64_gn
2:14.90 third_party/libwebrtc/rtc_base/third_party/sigslot/sigslot_gn
2:14.92 third_party/libwebrtc/rtc_base/threading_gn
2:14.94 third_party/libwebrtc/rtc_base/timeutils_gn
2:14.94 6 errors generated.
2:14.96 third_party/libwebrtc/rtc_base/weak_ptr_gn
2:14.99 third_party/libwebrtc/rtc_base/zero_memory_gn
2:15.01 third_party/libwebrtc/system_wrappers/denormal_disabler_gn
2:15.02 third_party/libwebrtc/system_wrappers/field_trial_gn
2:15.02 third_party/libwebrtc/system_wrappers/metrics_gn
2:15.02 third_party/libwebrtc/system_wrappers/system_wrappers_gn
2:15.03 third_party/libwebrtc/test/network/simulated_network_gn
2:15.04 third_party/libwebrtc/third_party/crc32c/crc32c_arm64_gn
2:15.04 gmake[4]: *** [/home/canova/projects/gecko/config/rules.mk:676: Unified_cpp_sandbox_common0.o] Error 1
2:15.04 gmake[3]: *** [/home/canova/projects/gecko/config/recurse.mk:72: security/sandbox/common/target-objects] Error 2
2:15.04 gmake[3]: *** Waiting for unfinished jobs....
2:15.36 In file included from Unified_cpp_metrics_gn0.cpp:2:
2:15.36 /home/canova/projects/gecko/third_party/libwebrtc/system_wrappers/source/metrics.cc:68:44: warning: returning variable 'info_' by reference requires holding mutex 'mutex_' [-Wthread-safety-reference-return]
2:15.36 68 | const std::string& name() const { return info_.name; }
2:15.36 | ^
2:15.50 1 warning generated.
2:15.91 1 warning generated.
2:17.97 gmake[2]: *** [/home/canova/projects/gecko/config/recurse.mk:34: compile] Error 2
2:17.97 gmake[1]: *** [/home/canova/projects/gecko/config/rules.mk:359: default] Error 2
2:17.97 gmake: *** [client.mk:60: build] Error 2
2:18.07 W 268 compiler warnings present.
It throws errors like: error: no member named 'SendInitSandboxTesting' in 'mozilla::dom::ContentParent' when compiling the tests. So it might be something related to the sandbox testing, or more generic thing that just surfaced here.
I always hit this issue and I have to clobber to get around it. Thankfully my clobber builds are quick, but it's still annoying to do it.
Comment 3•2 months ago
|
||
Why not fix it? 'mach build' turns into 'make' in the obj directory; good that it is nothing complicated but it is still a headache, as usual. It does not have to be this way. Before make, straight-out shell scripts would have been used. Shell scripts are inherently easy to write and follow since they need only list calls to the compiler in a logical order. We can still do it that way, only that every call to the compiler should be tested for being unnecessary if outputs already exist and are up to date with respect to inputs. It is not difficult to that by wrapping a compile call in a shell function.
It is not necessary or appropriate to submit a patch to change the build system over in that way but it would make sense to build up an alternative to make outside the codebase and perhaps one-day make it mainstream.
~
Description
•