Граф коммитов

5697 Коммитов

Автор SHA1 Сообщение Дата
Mike Hommey 6504260166 Bug 1672306 - Don't enable rust "global" LTO when cross LTO is enabled. r=firefox-build-system-reviewers,dmajor
This avoids a sort of duplication of work between both, because the
linker will eventually LTO-compile everything, so we technically don't
really need the extra step of the rust compiler doing an intermediate
LTO on the static libraries it produces.

Differential Revision: https://phabricator.services.mozilla.com/D94224
2020-10-21 01:20:48 +00:00
Cosmin Sabou b8fd79f461 Backed out 5 changesets (bug 1644624, bug 1671555) for windows shippable bustage.
Backed out changeset fee83fc16940 (bug 1644624)
Backed out changeset afb2a7ff532c (bug 1671555)
Backed out changeset 609ac687f7e3 (bug 1644624)
Backed out changeset d91db0801099 (bug 1644624)
Backed out changeset ce09ad625b53 (bug 1644624)
2020-10-20 06:52:09 +03:00
Mike Hommey 7e240e7af2 Bug 1644624 - Pass LLVM flags from PROFILE_GEN_CFLAGS to the rust compiler. r=firefox-build-system-reviewers,dmajor
Differential Revision: https://phabricator.services.mozilla.com/D93729
2020-10-16 15:45:54 +00:00
Mike Hommey 5afb69830c Bug 1670156 - Use the same prefix/suffix for rust libraries on mingw builds. r=firefox-build-system-reviewers,dmajor
Rustc >= 1.44 changed the file names of the static libraries it
produces with -windows-gnu targets, to match that of mingw clang/gcc.

Considering we still build on 1.43, the best fix would be to derive the
prefix/suffix based on the version of rust, but that actually turns into
a hard-to-solve problem because of configure tests for bindgen also
depending on the prefix/suffix value to be known.

On the other hand, we're soon due to an update to 1.47, so the simpler
solution is to just push mingw builds to require 1.44 (settling for the
smallest upgrade possible for now) and to remove the split between C and
rust library prefix/suffixes.

Differential Revision: https://phabricator.services.mozilla.com/D93726
2020-10-16 16:06:19 +00:00
Narcis Beleuzu d493d96032 Merge autoland to mozilla-central. a=merge 2020-10-20 00:37:32 +03:00
Mozilla Releng Treescript 1319f81f81 Update configs. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release ba=release 2020-10-19 16:39:05 +00:00
Paulo Matias 4dd77eeb91 Bug 1671695 - Fix system icu build; r=zbraniecki
Differential Revision: https://phabricator.services.mozilla.com/D93847
2020-10-19 11:54:20 +00:00
Ricky Stewart 362abcf949 Bug 1670357 - Remove `make` targets for cleaning: `clean`, `realclean`, `clobber`, `distclean`, `clobber_all`, `everything` r=firefox-build-system-reviewers,mhentges
The `clobber` targets are superseded by `mach clobber`, so we don't need them for any reason. The `clean` target is meant to get you to a post-`configure` state, but it doesn't really work, and if it's necessary for you to be in that state for some reason you can just clobber and re-`configure`, so it doesn't seem worth it to get it working again. Instead, delete all of them. Also delete `everything` which is not useful when `clobber` doesn't exist.

Differential Revision: https://phabricator.services.mozilla.com/D93514
2020-10-15 20:37:18 +00:00
Razvan Maries 5fa72e54df Backed out 2 changesets (bug 1440203) for causing bug 1670277. CLOSED TREE
Backed out changeset 0b10bf76fe35 (bug 1440203)
Backed out changeset 468878422866 (bug 1440203)
2020-10-10 03:39:33 +03:00
Jed Davis 3680ce4b19 Bug 1440203 - Support memfd_create in IPC shared memory. r=glandium
This commit also allows `memfd_create` in the seccomp-bpf policy for all
process types.

`memfd_create` is an API added in Linux 3.17 (and adopted by FreeBSD
for the upcoming version 13) for creating anonymous shared memory
not connected to any filesystem.  Supporting it means that sandboxed
child processes on Linux can create shared memory directly instead of
messaging a broker, which is unavoidably slower, and it should avoid
the problems we'd been seeing with overly small `/dev/shm` in container
environments (which were causing serious problems for using Firefox for
automated testing of frontend projects).

`memfd_create` also introduces the related operation of file seals:
irrevocably preventing types of modifications to a file.  Unfortunately,
the most useful one, `F_SEAL_WRITE`, can't be relied on; see the large
comment in `SharedMemory:ReadOnlyCopy` for details.  So we still use
the applicable seals as defense in depth, but read-only copies are
implemented on Linux by using procfs (and see the comments on the
`ReadOnlyCopy` function in `shared_memory_posix.cc` for the subtleties
there).

There's also a FreeBSD implementation, using `cap_rights_limit` for
read-only copies, if the build host is new enough to have the
`memfd_create` function.

Differential Revision: https://phabricator.services.mozilla.com/D90605
2020-10-08 02:25:20 +00:00
Mike Hommey cd3a2d5a79 Bug 1669633 - Remove MOZ_BUILD_ROOT. r=firefox-build-system-reviewers,andi,rstewart
It is only really used in js/src/devtools/rootAnalysis/Makefile.in,
and even there, the way it is used seems wrong, so fix that at the
same time (binaries have been linked into $DIST/bin directly for a
while).

Differential Revision: https://phabricator.services.mozilla.com/D92721
2020-10-07 17:57:38 +00:00
Mike Hommey 228e721068 Bug 1669442 - Fix dependency between libxul and mozgtk after bug 1573566. r=andi,dmajor
Bug 1573566 moved libxul from toolkit/library to toolkit/library/build,
and that should be reflected in config/recurse.mk.

It's amazing the race condition hasn't caused problems earlier than now.

Differential Revision: https://phabricator.services.mozilla.com/D92708
2020-10-07 12:17:56 +00:00
Razvan Maries 75a5750a87 Backed out 5 changesets (bug 1662564, bug 1664922, bug 1440203) for Valgrind bustages. CLOSED TREE
Backed out changeset 9366b15ee97c (bug 1440203)
Backed out changeset bb512f5fdeda (bug 1440203)
Backed out changeset be90d6aec690 (bug 1664922)
Backed out changeset f6527a1d0f14 (bug 1662564)
Backed out changeset 3a2941fa7d4b (bug 1662564)
2020-10-07 08:38:13 +03:00
Jed Davis c4968e6653 Bug 1440203 - Support memfd_create in IPC shared memory. r=glandium
This commit also allows `memfd_create` in the seccomp-bpf policy for all
process types.

`memfd_create` is an API added in Linux 3.17 (and adopted by FreeBSD
for the upcoming version 13) for creating anonymous shared memory
not connected to any filesystem.  Supporting it means that sandboxed
child processes on Linux can create shared memory directly instead of
messaging a broker, which is unavoidably slower, and it should avoid
the problems we'd been seeing with overly small `/dev/shm` in container
environments (which were causing serious problems for using Firefox for
automated testing of frontend projects).

`memfd_create` also introduces the related operation of file seals:
irrevocably preventing types of modifications to a file.  Unfortunately,
the most useful one, `F_SEAL_WRITE`, can't be relied on; see the large
comment in `SharedMemory:ReadOnlyCopy` for details.  So we still use
the applicable seals as defense in depth, but read-only copies are
implemented on Linux by using procfs (and see the comments on the
`ReadOnlyCopy` function in `shared_memory_posix.cc` for the subtleties
there).

There's also a FreeBSD implementation, using `cap_rights_limit` for
read-only copies, if the build host is new enough to have the
`memfd_create` function.

Differential Revision: https://phabricator.services.mozilla.com/D90605
2020-10-06 19:20:29 +00:00
Christian Holler 0215dcbfc4 Bug 1659392 - Only enable rust fuzzing code with libFuzzer. r=truber
Differential Revision: https://phabricator.services.mozilla.com/D87228
2020-08-18 13:32:15 +00:00
Mozilla Releng Treescript 5aa7b6ef9e Update configs. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release ba=release 2020-09-21 14:12:25 +00:00
Nico Grunbaum b6b3c20d6f Bug 1654189 - Move sipcc SDP to third_party;r=dminor
Differential Revision: https://phabricator.services.mozilla.com/D89943
2020-09-11 20:19:42 +00:00
Mike Hommey 8d261dbd4e Bug 1663850 - Remove unused variables in config/config.mk. r=firefox-build-system-reviewers,rstewart
Differential Revision: https://phabricator.services.mozilla.com/D89551
2020-09-09 23:50:38 +00:00
Mike Hommey a34742d98f Bug 1620133 - Allow generated file rules to run in parallel in a given directory. r=firefox-build-system-reviewers,rstewart
Bug 1645986 solved the problem for most generated files by moving their
rules to the top-level, but we're going to add rules that will end up in
subdirectories, so we have to solve the same problem again, in the
subdirectories.

Differential Revision: https://phabricator.services.mozilla.com/D88389
2020-08-28 01:58:48 +00:00
Cosmin Sabou 3dbaa1483b Merge mozilla-central to autoland. CLOSED TREE 2020-08-25 01:10:32 +03:00
Mozilla Releng Treescript ccbc59dff5 Update configs. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release ba=release 2020-08-24 14:18:41 +00:00
Nathan Froyd 527a3cabb9 Bug 1660828 - move `HAVE_AS_X86_64_UNWIND_SECTION_TYPE` to be x86-64 Unix-specific; r=firefox-build-system-reviewers,rstewart
Somehow we have had it be a general define, but it has not mattered...at
least it won't matter until we upgrade to clang 11, at which point the
compiler will start to complain at us about the codepaths this define
activates.

Differential Revision: https://phabricator.services.mozilla.com/D88056
2020-08-24 19:31:43 +00:00
Mike Hommey ff764980c5 Bug 1659066 - Move base C/C++ compiler flags for cc-rs to CFLAGS_*/CXXFLAGS_. r=firefox-build-system-reviewers,rstewart
Differential Revision: https://phabricator.services.mozilla.com/D87051
2020-08-22 22:46:12 +00:00
Razvan Maries 60aa2d1349 Backed out 3 changesets (bug 1659066) for build bustages. CLOSED TREE
Backed out changeset e8fdf9f3a551 (bug 1659066)
Backed out changeset 0d9c38d87d51 (bug 1659066)
Backed out changeset bdecbe65a90e (bug 1659066)
2020-08-23 01:39:26 +03:00
Mike Hommey c47d050d59 Bug 1659066 - Move base C/C++ compiler flags for cc-rs to CFLAGS_*/CXXFLAGS_. r=firefox-build-system-reviewers,rstewart
Differential Revision: https://phabricator.services.mozilla.com/D87051
2020-08-21 20:18:22 +00:00
Mike Hommey 81f76824b7 Bug 1659906 - Upgrade libffi to version 3.3. r=froydnj
All the patches previously applied, except the one from bug 1279096,
are either irrelevant (as pertaining to changes to the upstream build
system we don't use anymore), were applied upstream, or the issue they
fixed were fixed differently upstream.

Two additional patches, sent upstream as
https://github.com/libffi/libffi/pull/579 and
https://github.com/libffi/libffi/pull/580, are needed to fix our build
with, respectively, mingw-clang and GCC.

Our build system is adjusted according to upstream's configure.ac
and configure.host.

Differential Revision: https://phabricator.services.mozilla.com/D87824
2020-08-22 22:02:22 +00:00
Bogdan Tara 50dacc36d7 Backed out 2 changesets (bug 1659906) for asan failures CLOSED TREE
Backed out changeset 40edcd06d482 (bug 1659906)
Backed out changeset 08a1c02d93e4 (bug 1659906)
2020-08-22 09:26:23 +03:00
Mike Hommey d27ed90b47 Bug 1659906 - Upgrade libffi to version 3.3. r=froydnj
All the patches previously applied, except the one from bug 1279096,
are either irrelevant (as pertaining to changes to the upstream build
system we don't use anymore), were applied upstream, or the issue they
fixed were fixed differently upstream.

Two additional patches, sent upstream as
https://github.com/libffi/libffi/pull/579 and
https://github.com/libffi/libffi/pull/580, are needed to fix our build
with, respectively, mingw-clang and GCC.

Our build system is adjusted according to upstream's configure.ac
and configure.host.

Differential Revision: https://phabricator.services.mozilla.com/D87824
2020-08-21 21:54:32 +00:00
Ricky Stewart 9719a9a5a9 Bug 1636797 - In `hash.py`, enumerate files from the VCS rather than searching the filesystem directly r=ahal
This resolves a long-standing issue in development where `mach artifact` (and therefore `mach bootstrap`) would fail unpredictably if you had dirty, but ignored, files in your checkout. Resolving this problem often required unwieldy `hg purge`/`git ignore` incantations that are easy to get wrong.

This patch addresses the problem by doing what we "should" have been doing all along, and consulting the VCS to list tracked files rather than listing EVERY file on disk and applying heuristics to determine whether they should be included in the hash.

Differential Revision: https://phabricator.services.mozilla.com/D86780
2020-08-17 15:19:34 +00:00
Mike Hommey 4661c85ec0 Bug 1657863 - Skip adding manifests automatically on mingw builds. r=froydnj
This wasn't happening before bug 1656141 and apparently causes problems.
So until we can sort them out...

Differential Revision: https://phabricator.services.mozilla.com/D86638
2020-08-11 13:42:24 +00:00
Mike Hommey 748bff0a39 Bug 1658434 - Replace replace_malloc.mk with a mozbuild file. r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D86639
2020-08-11 00:05:38 +00:00
Mike Hommey 527e667296 Bug 1537703 - Use llvm-rc instead of rc.exe. r=mhentges,froydnj
This makes us use one less tool from MSVC, and removes one more use of wine
in cross builds.

We replace the call to either rc/llvm-rc or windres with a wrapper script.
While the script is not strictly needed for the latter, we use a wrapper
in that case anyway because it's one step towards fixing bug 1498414.
For llvm-rc, however, we need a wrapper because llvm-rc doesn't preprocess
on its own, so the wrapper does that too.

The wrapper script also allows to deal with the default flags passed to
llvm-rc or windres, rather than inherit them from old-configure.

We also need to explicitly pass the codepage to llvm-rc, which was not
necessary with rc (presumably, llvm-rc has a different default).

While here, remove the unused WINDRES subst from js/src/old-configure.in.
Also, while here, we remove --use-temp-file, because as described in the
linked bug and in the windres manual page, it was used to work around bugs
on Windows 98 and earlier.

Differential Revision: https://phabricator.services.mozilla.com/D86312
2020-08-08 21:02:04 +00:00
Mike Hommey cb9be65521 Bug 1656141 - Stop using MT to insert manifests in binaries. r=firefox-build-system-reviewers,rstewart
We are currently relying on two different ways to insert side-by-side
manifests in binaries on Windows: through resource files, or through
the use of MT. The latter is not supported on mingw builds, which is
not great.

Link.exe has options to add a manifest at link time without relying on
either method above, but that's not supported on mingw either.

So the best we can do is to move everything to using resource files.
This also avoids using MT, which, on cross builds, requires using wine.

Ideally, the manifests would be declared in moz.build, but that
complicates things for cases like TestDllInterceptor, where there are
multiple binaries in the same directory, but only one of them needs the
manifest. This keeps the status quo of getting the manifest
automatically from the source directory.

Differential Revision: https://phabricator.services.mozilla.com/D85382
2020-08-07 00:55:16 +00:00
Mike Hommey e26b1ff8ab Bug 1656141 - Remove support for manifests on host programs. r=firefox-build-system-reviewers,rstewart
We're currently not using the feature, and host programs ought only
to be used during the build, so I don't expect the feature to ever
be necessary.

Differential Revision: https://phabricator.services.mozilla.com/D86167
2020-08-06 22:51:49 +00:00
Mike Hommey 5919ab86af Bug 1656141 - Create res and rc files based on the name of the binary they are linked into. r=firefox-build-system-reviewers,rstewart
This will allow creating separate res files for e.g. SIMPLE_PROGRAMS.

Differential Revision: https://phabricator.services.mozilla.com/D86155
2020-08-07 00:50:50 +00:00
Mike Hommey 5a5a1edd0e Bug 1656141 - Remove RESFILE. r=firefox-build-system-reviewers,rstewart
The resource file is always generated so being able to configure its name
is not useful. On the other hand, the way things are currently implemented,
the lack of RESFILE also makes RCFILE ignored, which we fix at the same
time.

And remove a spurious RESFILE in widget/windows/moz.build, where no binary
is produced, which means RESFILE had no meaning.

Differential Revision: https://phabricator.services.mozilla.com/D86154
2020-08-06 22:51:59 +00:00
Mike Hommey 22179736a6 Bug 1656141 - Rename version_win.py to create_rc.py. r=firefox-build-system-reviewers,mhentges,rstewart
Because while the original perl script was added to add version info
to Windows binaries, it does more and will do even more with upcoming
changes.

Differential Revision: https://phabricator.services.mozilla.com/D86153
2020-08-06 22:52:01 +00:00
Mike Hommey ee6a08868d Bug 1656141 - Remove EMBED_MANIFEST_AT. r=froydnj
It was only ever set to the same value as its default, except in
comm-central, where it is unset, but in directories that now don't link
anything (they did back when binary components were a thing).

Differential Revision: https://phabricator.services.mozilla.com/D85381
2020-08-06 22:52:08 +00:00
Mihai Alexandru Michis c4e805857f Backed out 9 changesets (bug 1656141) for causing multiple failures.
CLOSED TREE

Backed out changeset 9033b0400339 (bug 1656141)
Backed out changeset e43dd57dc61a (bug 1656141)
Backed out changeset eb450457a9b7 (bug 1656141)
Backed out changeset 194a994cf9c9 (bug 1656141)
Backed out changeset ce6831acb5e3 (bug 1656141)
Backed out changeset 29653ea85d49 (bug 1656141)
Backed out changeset 704f28486bda (bug 1656141)
Backed out changeset de8899453150 (bug 1656141)
Backed out changeset 4b133eda46aa (bug 1656141)
2020-08-07 01:48:45 +03:00
Mike Hommey dc4ee999b0 Bug 1656141 - Stop using MT to insert manifests in binaries. r=firefox-build-system-reviewers,rstewart
We are currently relying on two different ways to insert side-by-side
manifests in binaries on Windows: through resource files, or through
the use of MT. The latter is not supported on mingw builds, which is
not great.

Link.exe has options to add a manifest at link time without relying on
either method above, but that's not supported on mingw either.

So the best we can do is to move everything to using resource files.
This also avoids using MT, which, on cross builds, requires using wine.

Ideally, the manifests would be declared in moz.build, but that
complicates things for cases like TestDllInterceptor, where there are
multiple binaries in the same directory, but only one of them needs the
manifest. This keeps the status quo of getting the manifest
automatically from the source directory.

Differential Revision: https://phabricator.services.mozilla.com/D85382
2020-08-06 16:00:40 +00:00
Mike Hommey b8f0039ca8 Bug 1656141 - Remove support for manifests on host programs. r=firefox-build-system-reviewers,rstewart
We're currently not using the feature, and host programs ought only
to be used during the build, so I don't expect the feature to ever
be necessary.

Differential Revision: https://phabricator.services.mozilla.com/D86167
2020-08-06 15:52:47 +00:00
Mike Hommey 63984026bb Bug 1656141 - Create res and rc files based on the name of the binary they are linked into. r=firefox-build-system-reviewers,rstewart
This will allow creating separate res files for e.g. SIMPLE_PROGRAMS.

Differential Revision: https://phabricator.services.mozilla.com/D86155
2020-08-06 15:57:42 +00:00
Mike Hommey afe0ac845a Bug 1656141 - Remove RESFILE. r=firefox-build-system-reviewers,rstewart
The resource file is always generated so being able to configure its name
is not useful. On the other hand, the way things are currently implemented,
the lack of RESFILE also makes RCFILE ignored, which we fix at the same
time.

And remove a spurious RESFILE in widget/windows/moz.build, where no binary
is produced, which means RESFILE had no meaning.

Differential Revision: https://phabricator.services.mozilla.com/D86154
2020-08-06 15:59:02 +00:00
Mike Hommey d6565296c3 Bug 1656141 - Rename version_win.py to create_rc.py. r=firefox-build-system-reviewers,mhentges,rstewart
Because while the original perl script was added to add version info
to Windows binaries, it does more and will do even more with upcoming
changes.

Differential Revision: https://phabricator.services.mozilla.com/D86153
2020-08-06 15:59:09 +00:00
Mike Hommey afec638391 Bug 1656141 - Remove EMBED_MANIFEST_AT. r=froydnj
It was only ever set to the same value as its default, except in
comm-central, where it is unset, but in directories that now don't link
anything (they did back when binary components were a thing).

Differential Revision: https://phabricator.services.mozilla.com/D85381
2020-08-06 07:05:36 +00:00
Mike Hommey 53979f7c8a Bug 1657420 - Use single quotes instead of double quotes for the version_win.py command. r=dmajor
On Windows, with the double quotes, the command goes through the msys
shell, which then alters the command line such that empty arguments are
transformed into \ when they reach python.

With the single quotes, make invokes the command directly, without going
through the msys shell, and empty arguments are preserved.

Differential Revision: https://phabricator.services.mozilla.com/D86097
2020-08-05 22:48:45 +00:00
Mike Hommey cd31cb1f77 Bug 1116553 - Rewrite version_win.pl in Python. r=firefox-build-system-reviewers,rstewart
This is not a feature-for-feature rewrite. The python version removes
unused things, and simplifies some others:

- Only two command line arguments are taken in, and all the others are
  dropped and the corresponding values are gotten from the buildconfig
  module instead. The command line arguments are also taken as
  positional arguments rather than going with a full argument parser.

- Variable expansion in module.ver used to be limited to one specific
  variable to expand for a given value, which is now replaced with the
  possibility to expand any of the variables that are allowed in
  module.ver.

- The perl version was adding a RT_MANIFEST entry on its own if a
  manifest file existed in the objdir for the given binary, but if such
  a file existed, the build would fail after linking from the changes in
  bug 1613799.

- The perl version was defaulting the module name to the binary name in
  a branch that was never taken because the module name was assigned to
  an empty string before that.

The output from the new script has been validated to being identical to
the output from the perl script, except for one extra whitespace at the
end of a comment.

Differential Revision: https://phabricator.services.mozilla.com/D85817
2020-08-04 22:21:01 +00:00
Nathan Froyd 623f837bed Bug 1655929 - run `cargo update` and `mach vendor rust` for rlbox + lucet updates; r=firefox-build-system-reviewers,rstewart
As the commit title suggests, this is a manual update, but we need to also
update `config/rules.mk` for the changed location of the wasi bindings.

Depends on D85408

Differential Revision: https://phabricator.services.mozilla.com/D85409
2020-07-30 15:54:20 +00:00
Jeff Walden 1de5dca426 Bug 1654927 - Move js.msg and js::GetErrorMessage into a new js/public/friend directory so users of them don't have to depend on all of jsfriendapi.h. r=mgaudet
Differential Revision: https://phabricator.services.mozilla.com/D84756
2020-07-29 04:44:50 +00:00
Mike Hommey 2e54d6bcc3 Bug 1655583 - Don't close fds in run-and-prefix.py. r=firefox-build-system-reviewers,rstewart
run-and-prefix.py is used as a wrapper of MAKE in moz-automation.mk, so
that the output is more clearly attributed to what part of the build is
happening, for everything that is post-build (e.g. package, upload,
etc.)

Ever since the switch to python 3, when it re-invokes MAKE, the
jobserver file descriptors would be closed and the sub-make wouldn't be
able to use it.

Differential Revision: https://phabricator.services.mozilla.com/D85051
2020-07-27 21:51:13 +00:00
Mike Hommey 2a4eb30ed4 Bug 1654465 - Set -Cembed-bitcode=yes instead of CARGO_PROFILE_RELEASE_LTO. r=firefox-build-system-reviewers,rstewart
It turns out setting CARGO_PROFILE_RELEASE_LTO has unwanted side
effects.

First it's not actually strictly equivalent to using `cargo rustc --
-Clto`. For instance, it apparently also enables cross-language LTO in
newer versions of cargo.

Second, it changes the rust computed hash for all the dependencies of
the crate being built with the variable set, which makes them diverge
from when the same dependencies are built through another crate in the
tree that is not LTOed. This effectively makes us build a _lot_ of
crates twice, many of which are not cacheable.

Since the original problem is that cargo >= 1.45 passes extra flags (`-C
embed-bitcode=no`) to rustc that are incompatible with `-Clto`, and while
it knows to adjust based on the `lto` setting in the build profile
(which CARGO_PROFILE_RELEASE_LTO overrides the default of), cargo
ignores flags passed via `cargo rustc -- ...` when making those
adjustments.

So, we need to override with `-C embed-bitcode=yes` on our own at the
same time we pass `-Clto`. But doing that through `cargo rustc -- ...`
is not enough because all the dependencies of the crate built with
`-Clto` need to be built with `-C embed-bitcode=yes`. So we need to
override with `RUSTFLAGS`, which will affect all the dependencies.
But we also need to do this consistently across all crates, not only the
dependencies of crates built with `-Clto`, otherwise we'd still end up
building crates twice (once with and once without the override).

Unfortunately, the `-C embed-bitcode=*` flag is also not supported in
versions older than 1.45, so we have to avoid adding it on older
versions.

We unfortunately support a large range of versions of rustc (albeit only
for tools/crashreporter), but we actually need to upgrade the smaller
supported version because rustc < 1.38 doesn't support our top-level
Cargo.lock. This makes the version check slightly less awful.

Differential Revision: https://phabricator.services.mozilla.com/D84652
2020-07-27 21:23:57 +00:00
Mozilla Releng Treescript e0a22e8714 Update configs. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release ba=release 2020-07-27 17:45:43 +00:00
Mike Hommey 268a226874 Bug 1654182 - Only look at the dynamic symbols table for the version checks. r=froydnj
The main reason we look at the complete symbols table is that before bug
1541792, we needed to look at that table for _NSModule symbols.

In bug 1516228, we also made everything llvm-objdump to limit the
differences cross-platform, but that's not necessary anymore per the
previous change.

llvm-objdump doesn't support getting only the dynamic symbols table, so
we go back to what we were using before bug 1516228, namely readelf,
while preserving a code path to use the complete symbols table for the
networking test on libgkrust.a, which doesn't have a dynamic symbols
table.

With this change, check_binary goes from 45s to 0.2s on my machine.

Differential Revision: https://phabricator.services.mozilla.com/D84305
2020-07-22 04:09:39 +00:00
Mike Hommey 3a2a805477 Bug 1653909 - Use the stub file for the icu data file dependencies. r=froydnj
The rules we create in the backend for generated files use a stub file
for the real file generation, and we do need dependencies on that
specific target for the changes in bug 1264836 to work without races.

Differential Revision: https://phabricator.services.mozilla.com/D84311
2020-07-21 13:13:02 +00:00
Mike Hommey cb5b458548 Bug 1640982 - Set CARGO_PROFILE_RELEASE_LTO=true when enabling rust LTO. r=firefox-build-system-reviewers,rstewart
Differential Revision: https://phabricator.services.mozilla.com/D84098
2020-07-20 16:05:36 +00:00
Mike Hommey 7eb905c213 Bug 1264836 - Automatically convert the little-endian ICU data file for big-endian builds. r=firefox-build-system-reviewers,rstewart
Differential Revision: https://phabricator.services.mozilla.com/D83857
2020-07-17 22:25:57 +00:00
Butkovits Atila 1b5a008148 Backed out changeset cfaeba06ee87 (bug 1264836) for bustages at AccessibleRole.h. CLOSED TREE 2020-07-18 02:57:28 +03:00
Mike Hommey 7661e8879a Bug 1264836 - Automatically convert the little-endian ICU data file for big-endian builds. r=firefox-build-system-reviewers,rstewart
Differential Revision: https://phabricator.services.mozilla.com/D83857
2020-07-17 22:25:57 +00:00
Narcis Beleuzu bef8fd0583 Backed out changeset d3004626988d (bug 1264836) for breaking the Gecko Decision Task. CLOSED TREE 2020-07-18 00:42:05 +03:00
Mike Hommey f1ffe803dd Bug 1264836 - Automatically convert the little-endian ICU data file for big-endian builds. r=firefox-build-system-reviewers,rstewart
Differential Revision: https://phabricator.services.mozilla.com/D83857
2020-07-17 20:06:42 +00:00
Mike Hommey 0ebe2bbd8f Bug 1652448 - Use the same codegen-units numbers on host and target rust builds. r=firefox-build-system-reviewers,rstewart
Otherwise, crates that are shared between host and target are always
rebuilt because of the difference in rust flags.

Differential Revision: https://phabricator.services.mozilla.com/D83412
2020-07-13 22:24:59 +00:00
Nathan Froyd bddb48ea03 Bug 1625281 - force make to update timestamp caches when building rust programs; r=firefox-build-system-reviewers,rstewart
Doing this means that make will correctly understand that the underlying
program has changed and therefore it needs to trigger install rules.

Differential Revision: https://phabricator.services.mozilla.com/D83326
2020-07-13 19:01:40 +00:00
Mike Hommey ee3002aa4e Bug 1651287 - Hook the pre-compile pseudo-tier in the compile graph. r=nalexander
This makes dir/target, dir/target-objects, etc. depend on
dir/pre-compile, which ensures all items in the pre-compile pseudo-tier
are built before entering in the directory they are defined in, during
the compile tier. This removes the need for EXTRA_DEPS hacks.

Differential Revision: https://phabricator.services.mozilla.com/D83036
2020-07-10 21:03:41 +00:00
Mike Hommey c4e1894f04 Bug 1651287 - Add a pre-compile pseudo-tier. r=firefox-build-system-reviewers,rstewart
Generated files marked as "required during compile" are limited to a
number of extensions, most of which are source file types, so they get
generated when compiling the corresponding object file. Other types,
though, are currently handled via EXTRA_DEPS, which is clunky.

As of now, these other types are limited to link-related items, but more
would be useful (e.g. .inc files, which are only included in one
location).

This however works against the static analysis tasks (coverity and
clang-tidy), which currently rely on everything they need being created
via the export tier. That excludes using EXTRA_DEPS-based hacks.

We create a "pre-compile" tier, that is not used during a normal build,
but can be invoked manually, which the static analysis tasks will do.

Differential Revision: https://phabricator.services.mozilla.com/D83035
2020-07-11 22:18:25 +00:00
Mike Hommey b979f62e15 Bug 1648680 - Do not build w95sock.c as part of a unified compilation unit. r=dmajor
Differential Revision: https://phabricator.services.mozilla.com/D81290
2020-07-10 20:32:25 +00:00
Mike Hommey df18e17e18 Bug 1651608 - Remove leftovers from bug 1557788. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D82866
2020-07-09 12:19:58 +00:00
Tom Prince 204d796929 Bug 1651731: [lint] Python and shell files without `#!` should not be executable; r=linter-reviewers,perftest-reviewers,geckoview-reviewers,agi,sylvestre,sparky
Differential Revision: https://phabricator.services.mozilla.com/D82954
2020-07-09 20:29:18 +00:00
Ricky Stewart 51a23a4ba2 Bug 1651641 - `servo/components/style/build.rs` reads `PYTHON3` configuration value in addition to environment variable r=glandium
The previous logic would check the value of the `PYTHON3` environment variable, which is not set by the Firefox build system, so this build script tends to just use the `python3` at the tip of the `PATH`, regardless of which value you've configured for it. Instead, it should prefer to read from the `OBJDIR` if one is present.

Differential Revision: https://phabricator.services.mozilla.com/D82981
2020-07-09 22:03:23 +00:00
Kris Maglione b18c12677e Bug 1464542: Part 1 - Generate symbolic names for XPT interfaces and add lookup function. r=nika,froydnj
This makes it much simpler for the for the static JS services cache to store
and lookup interface IDs for components.

Differential Revision: https://phabricator.services.mozilla.com/D81416
2020-07-09 20:42:49 +00:00
Mike Hommey 2808f56f12 Bug 1651207 - Build the ICU data through an assembly file. r=froydnj
... instead of a C file. This avoids issues with sccache (via dist or
caching), because sccache doesn't do anything with assembly files,
but with a C file, it doesn't know about the incbin-included data file.

This has the unfortunate side effect of requiring some manual work to
mark the file for safeseh on 32-bits Windows.

Differential Revision: https://phabricator.services.mozilla.com/D82814
2020-07-09 12:20:56 +00:00
Csoregi Natalia b355fcc4bf Backed out 6 changesets (bug 1464542) for xpcshell failures on test_Services.js. CLOSED TREE
Backed out changeset b50af9005851 (bug 1464542)
Backed out changeset 9d3a0ea2cf65 (bug 1464542)
Backed out changeset 71c3475fcbc2 (bug 1464542)
Backed out changeset 51ff93220a95 (bug 1464542)
Backed out changeset e84de1547c09 (bug 1464542)
Backed out changeset bbecc16d08eb (bug 1464542)
2020-07-09 23:19:26 +03:00
Andrew Halberstadt 0d3d8d4744 Bug 1640902 - [python-test] Add ability to mark tests as "slow" and an arugment to run them, r=raphael
This creates a general pytest plugin under "config/mozunit" which implements
the ability to mark tests as "slow". Slow tests will be skipped by default
unless "--run-slow" is passed in.

Differential Revision: https://phabricator.services.mozilla.com/D81402
2020-07-09 17:46:07 +00:00
Kris Maglione 55b68bde08 Bug 1464542: Part 1 - Generate symbolic names for XPT interfaces and add lookup function. r=nika,froydnj
This makes it much simpler for the for the static JS services cache to store
and lookup interface IDs for components.

Differential Revision: https://phabricator.services.mozilla.com/D81416
2020-07-09 17:59:09 +00:00
Axel Hecht ac4d08312c Bug 1614941, add more date formats to dsb and hsb, r=jwalden
Differential Revision: https://phabricator.services.mozilla.com/D62732
2020-07-07 11:46:05 +00:00
Nick Alexander b41ff18a94 Bug 1641291 - Part 2: Make NSDISTMODE=copy impact install manifests. r=glandium
This is strictly a quality of life improvement when cross-compiling to
Windows targets.  A common scenario is mounting an object directory
into a Windows VM, which requires additional VM configuration to
handle (absolute) symlinks.  With this patch, `export NSDISTMODE=copy`
in a mozconfig sidesteps any such symlink issues.

Differential Revision: https://phabricator.services.mozilla.com/D77118
2020-07-07 02:16:12 +00:00
Mike Hommey f801a642f4 Bug 1650592 - Disable ICU dynamic loading. r=jwalden
For a while, now, ICU data has been stored as raw read-only data in rather
than a separate loadable library. This means the parts of ICU that can load
such a module are not necessary.

Differential Revision: https://phabricator.services.mozilla.com/D82262
2020-07-07 00:24:37 +00:00
Mike Hommey e1f7ae82ed Bug 1650299 - Unify the inclusion of the ICU data file. r=froydnj
All the supported compilers support a GNU AS-like syntax, with only a
few details varying. It means we can use a single, simpler, way to
include the ICU data file, instead of 3 different ways, including one
that uses armasm64.exe, possibly wrapped with Wine.

Differential Revision: https://phabricator.services.mozilla.com/D82144
2020-07-06 22:57:53 +00:00
André Bargull 1f92968bc6 Bug 1496584 - Part 2: Include previously disabled date-interval formatters. r=jwalden
Differential Revision: https://phabricator.services.mozilla.com/D79318
2020-07-01 11:19:52 +00:00
Mike Hommey 9c264b7cf2 Bug 1240930 - Move jar_maker to the misc tier. r=firefox-build-system-reviewers,geckoview-reviewers,rstewart,agi
Because jar_maker is not in the libs tier, we also rename the libs-%
targets for l10n repacks to l10n-%, which make it clearer what they are
for.

And because multilocale.txt is both a GeneratedFile and a file that is
generated (and installed) via manual build rules, keeping it in the misc
target actually breaks building in toolkit/locales during l10n repacks,
so move it to libs for now.

Differential Revision: https://phabricator.services.mozilla.com/D81766
2020-06-30 21:34:32 +00:00
Mozilla Releng Treescript f6180a922b Update configs. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release ba=release 2020-06-29 15:15:46 +00:00
Emilio Cobos Álvarez 7c995807da Bug 1646936 - Generate a single metadata file in the objdir, and feed it to cbindgen. r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D80360
2020-06-26 10:41:26 +00:00
Coroiu Cristina 302c2fa31a Backed out changeset 8f948dd74aba (bug 1646936) for SM and Toolchain failures on a CLOSED TREE 2020-06-26 13:08:09 +03:00
Emilio Cobos Álvarez 9c7c03bf30 Bug 1646936 - Generate a single metadata file in the objdir, and feed it to cbindgen. r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D80360
2020-06-26 09:37:16 +00:00
Mike Hommey 382cebd8f2 Bug 1648575 - Fix Android artifact builds after bug 1645986. r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D81240
2020-06-25 22:31:02 +00:00
Mike Hommey a87a1c3b54 Bug 1645986 - Move most GeneratedFile generation to top-level backend.mk. r=firefox-build-system-reviewers,rstewart
While ideally we'd just move all of them at the top-level, there are
other things that depend on them that wouldn't then get the right
dependencies. One of them is install steps in dist/something, but there
are others, and that's a rather long pole of things requiring many
changes along with chances to break things.

So instead, we go with a simpler and more limited approach, where we
still recurse into directories to run their export tier (to run whatever
else than GeneratedFiles they have), but ensure the GeneratedFiles we
moved at the top-level are built before recursing by making
directory/export depend on them.

Differential Revision: https://phabricator.services.mozilla.com/D80608
2020-06-24 04:23:02 +00:00
Mike Hommey 9820df71e8 Bug 1645986 - Avoid relative paths in GeneratedFile targets. r=firefox-build-system-reviewers,rstewart
Differential Revision: https://phabricator.services.mozilla.com/D80605
2020-06-24 04:23:09 +00:00
Dorel Luca fdb71d7688 Backed out 4 changesets (bug 1645986) for Valgrid failure. CLOSED TREE
Backed out changeset 602ea804234f (bug 1645986)
Backed out changeset c43f9360b0a5 (bug 1645986)
Backed out changeset fe1142397e72 (bug 1645986)
Backed out changeset faf6de9409f9 (bug 1645986)
2020-06-24 07:16:13 +03:00
Mike Hommey 8a86310ac3 Bug 1645986 - Move most GeneratedFile generation to top-level backend.mk. r=firefox-build-system-reviewers,rstewart
While ideally we'd just move all of them at the top-level, there are
other things that depend on them that wouldn't then get the right
dependencies. One of them is install steps in dist/something, but there
are others, and that's a rather long pole of things requiring many
changes along with chances to break things.

So instead, we go with a simpler and more limited approach, where we
still recurse into directories to run their export tier (to run whatever
else than GeneratedFiles they have), but ensure the GeneratedFiles we
moved at the top-level are built before recursing by making
directory/export depend on them.

Differential Revision: https://phabricator.services.mozilla.com/D80608
2020-06-24 00:45:25 +00:00
Mike Hommey eccc2c2c6b Bug 1645986 - Avoid relative paths in GeneratedFile targets. r=firefox-build-system-reviewers,rstewart
Differential Revision: https://phabricator.services.mozilla.com/D80605
2020-06-24 00:45:32 +00:00
Dorel Luca b159956383 Backed out 4 changesets (bug 1645986) for Build bustage
Backed out changeset ac871b2f34dc (bug 1645986)
Backed out changeset 07b14b6a0b91 (bug 1645986)
Backed out changeset fdd319bdbfa7 (bug 1645986)
Backed out changeset ce213e6bbc1f (bug 1645986)
2020-06-24 03:42:47 +03:00
Mike Hommey f6fcdd8d5c Bug 1645986 - Move most GeneratedFile generation to top-level backend.mk. r=firefox-build-system-reviewers,rstewart
While ideally we'd just move all of them at the top-level, there are
other things that depend on them that wouldn't then get the right
dependencies. One of them is install steps in dist/something, but there
are others, and that's a rather long pole of things requiring many
changes along with chances to break things.

So instead, we go with a simpler and more limited approach, where we
still recurse into directories to run their export tier (to run whatever
else than GeneratedFiles they have), but ensure the GeneratedFiles we
moved at the top-level are built before recursing by making
directory/export depend on them.

Differential Revision: https://phabricator.services.mozilla.com/D80608
2020-06-23 16:07:26 +00:00
Mike Hommey f1eea6d9e3 Bug 1645986 - Avoid relative paths in GeneratedFile targets. r=firefox-build-system-reviewers,rstewart
Differential Revision: https://phabricator.services.mozilla.com/D80605
2020-06-23 16:19:21 +00:00
Mike Hommey 39efc5bc7b Bug 1646653 - Remove dependencies on xpcom/xpidl/export. r=froydnj
They were necessary some time ago, but:
- there is no js/xpconnect/src/export target anymore,
- accessibility/xpcom/export had a dependency on xpcom/xpidl/export for
  the ply cache files, but they're not used as of bug 1633156.
- the recursive make backend was adding automatic dependencies on
  xpcom/xpidl/export for the ply cache files.

Differential Revision: https://phabricator.services.mozilla.com/D80150
2020-06-18 11:02:46 +00:00
Ricky Stewart 09750d5dab Bug 1646190 - Remove pymake from tree r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D79920
2020-06-18 21:06:32 +00:00
Ted Campbell 6aa5132146 Bug 1645464 - Use a shared ProfilingCategoryList.h r=gerald,froydnj
Replace the duplicate lists in mozglue/baseprofiler/public and js/public with
a shared list. Add this list to both moz.build files so it is published twice
which simplifies supporting different standalone configurations.

Differential Revision: https://phabricator.services.mozilla.com/D79520
2020-06-15 13:59:55 +00:00
Geoff Brown e1d05bdc1d Bug 1644228 - Remove support for IMPACTED_TESTS; r=remote-protocol-reviewers,firefox-build-system-reviewers,rstewart,whimboo
IMPACTED_TESTS was added in bug 1184405, but is under-utilized in current moz.build
annotations; also bug 1516847 removed use of IMPACTED_TESTS in 'mach test'. This
patch removes remaining support for IMPACTED_TESTS.

Differential Revision: https://phabricator.services.mozilla.com/D79141
2020-06-12 08:04:08 +00:00
André Bargull 3d23887ba7 Bug 1636984 - Part 2: Reimport ICU to generate the data file. r=jwalden
Differential Revision: https://phabricator.services.mozilla.com/D74682
2020-06-12 12:50:04 +00:00
Coroiu Cristina 3cce853af2 Backed out 4 changesets (bug 1641291) for build bustages and SM failures on a CLOSED TREE
Backed out changeset 9c0a44614576 (bug 1641291)
Backed out changeset 0dcf604b880e (bug 1641291)
Backed out changeset d830bee40b5c (bug 1641291)
Backed out changeset fe38c82c2dad (bug 1641291)
2020-06-03 22:09:52 +03:00
Nick Alexander e3368880ab Bug 1641291 - Part 3: Ensure that paths are considered paths when compiling. r=glandium
Extremely common file paths on macOS like `/Users/...` are interpreted
as `/U...` flags by `clang-cl`.  This is so common that there's a
`-Wslash-u-filename` warning.  Ensure that file paths are considered
paths when compiling by terminating options with `--`.

This commit handles everything except assembler invocations, because
at least `nasm` doesn't handle `--`.

Differential Revision: https://phabricator.services.mozilla.com/D77119
2020-06-03 18:18:32 +00:00
Nick Alexander 26518d1bde Bug 1641291 - Part 2: Make NSDISTMODE=copy impact install manifests. r=glandium
This is strictly a quality of life improvement when cross-compiling to
Windows targets.  A common scenario is mounting an object directory
into a Windows VM, which requires additional VM configuration to
handle (absolute) symlinks.  With this patch, `export NSDISTMODE=copy`
in a mozconfig sidesteps any such symlink issues.

Differential Revision: https://phabricator.services.mozilla.com/D77118
2020-06-03 18:18:23 +00:00