This merge commit joins a Mercurial conversion of the Servo Git
repository with the mainline of the Firefox repository.
The converted Git history was obtained by running the following command
on revision e0c5a75dfaa6a9f8d23daa54438e987554cafe82 of the
version-control-tools repository:
$ linearize-git-to-hg \
--exclude-dir src/test/wpt \
--exclude-dir src/test/ref \
--exclude-dir tests/ref \
--exclude-dir tests/wpt \
--summary-prefix servo: \
--remove-reviewable \
--source-repo-key Source-Repo \
--source-revision-key Source-Revision \
--normalize-github-merge-message \
--committer-action use-author \
--use-p2-author \
--with-hg ~/bin/hg \
--copy-similarity 75 \
--find-copies-harder \
--skip-submodules \
--move-to-subdir servo \
--github-username <redacted> \
--github-token <redacted> \
https://github.com/servo/servo master servo-git-source servo-hg-dest
This command obtained a clone of the Servo Git repo and converted it to
Mercurial. Along the way, it:
* Collapsed all commits in merge commits into a single squashed commit,
producing a linear history
* excluded WPT files (because there are tens of thousands of them)
* excluded "ref" tests (because they aren't wanted)
* prefixed commit message summary line with "servo:"
* removed reviewable.io text from commit messages
* added links to the original repo and revision in the commit message
* rewrote commit messages so pull request messages are consistently
formatted
* replaced the Git "committer" with the "author" so they always agree
* used the author of the 2nd parent of a merge commit as the author of
the "squashed" commit
* reparented all files into a "servo" subdirectory
* applied aggressive copy detection (find copies by looking at files
that didn't change)
* marked copies if contents were at least 75% similar
The result of that conversion was pulled into the Firefox repo with
`hg pull --force` (--force was needed to allow a new root changeset).
Then, this head was merged into the mainline by running
`hg merge -t :remote`. A merge tool was specified because there was
an existing dummy geckoservo crate defined, which we wanted to overwrite
with the real thing.
The Mercurial version used was 4.1 (4.1 is necessary because of new
features in `hg convert`).
IGNORE BAD COMMIT MESSAGES (to bypass commit message hook)
a=release (to bypass WebIDL hook)
MozReview-Commit-ID: LSQNMdsZmee
--HG--
extra : rebase_source : 067cb266da2fc64e1cbf0a460be98889232fca67
I want to get Servo vendored into servo/. The previous plan was to
replace the dummy geckolib with the real deal when the vendoring is
done. Unfortunately, this will require a significant `cargo vendor`
change, which we want to punt on for a bit.
So, this commit moves our dummy geckolib outside of servo/ so we
don't need to `cargo update` or `cargo vendor` when the real servo/
is installed.
The change to toolkit/library/rust/shared/Cargo.toml can be reverted
in the stylo repo to allow it to use the real geckolib.
We also update the taskgraph code for detecting Servo. Previously,
it looked for a file in the possibly-vendored servo/ directory. Once
the vendoring happens, this check will always pass. But without the
real geckolib, the Servo builds will fail. So, we change the check
to look for the real geckolib. This is implemented a bit hackily.
But it will be short-lived until we run `cargo vendor`.
MozReview-Commit-ID: CxGTwy6bK9j
--HG--
rename : servo/ports/geckolib/Cargo.toml => toolkit/library/geckolib/Cargo.toml
rename : servo/ports/geckolib/lib.rs => toolkit/library/geckolib/lib.rs
extra : rebase_source : c0e9c867ae74c4eb124e72dc481fd8dc814e65e7
Our version of the palette support library crashes for certain icons on x86 systems.
MozReview-Commit-ID: E6eEyFXd4uK
--HG--
extra : rebase_source : fe2e3d55ff7744d480c8a6318aba09bb2c519a13
-w, --taskcluster-worker: schedule taskcluster-worker jobs.
This is necessary to relieve the load of the small pool of data center
machines.
MozReview-Commit-ID: IiOLHUs2ALi
--HG--
extra : rebase_source : 96acbbd40aef856f68c7ab94ae23bcee4f2f078d
Removing the exported symbols is straightforward enough.
The only wrinkle is that PeerConnectionCtx.cpp gets compiled with and
without MOZILLA_INTERNAL_API. When compiling without
MOZILLA_INTERNAL_API, mozilla::services::Get*Service was redirected to
the _external_* symbol variants. But as the _external_* symbols no
longer exist, PeerConnectionCtx.cpp's code no longer worked.
Fortunately, PeerConnectionCtx.cpp already contains a few #ifdef
MOZILLA_INTERNAL_API blocks to handle internal/external compilation;
fixing this newest issue was just a matter of extending existing blocks
and adding new ones. The key observation is that we never added any
observers when compiling without MOZILLA_INTERNAL_API, so we can #ifdef
out the removals of observers, as those would have no effect, and simply
skip getting the observer service for the observer additions if we're
compiling without MOZILLA_INTERNAL_API.
This ensures that we correctly link against /usr/lib/libc++.1.dylib.
With this flag left in LDFLAGS, the linker would find libc++.1.dylib in
clang/lib, which would cause us to link against @rpath/libc++.1.dylib.