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

357 Коммитов

Автор SHA1 Сообщение Дата
Jacek Caban 6e25c2945a Bug 1465798: Create a MinGW-Clang toolchain job r=froydnj
MozReview-Commit-ID: 9OLqKcYtMJi

--HG--
extra : histedit_source : d1e7da6531ffd8d9df869324da07440ce13899cc
2018-07-24 14:04:53 -05:00
Robert Bartlensky 1a56460275 Bug 1473951: Add infer to taskcluster and build. r=gps
MozReview-Commit-ID: BHi3E6J3nuH

--HG--
extra : rebase_source : a59180efe4fed56222d2847d60133739f38c8ca8
2018-07-06 17:37:16 +01:00
Mike Hommey 789f4ba458 Bug 1478919 - Remove the now unused linux64-clang-5 toolchain. r=dmajor
--HG--
extra : rebase_source : 1de38fc2e484ec02bcbe1fb1b58b97f5aba55b43
2018-07-27 15:34:07 +09:00
Mike Hommey 2538ec5e49 Bug 1478917 - Apply upstream patch fixing ld64 crash with LTO. r=dmajor,froydnj
While fiddling with clang (upgrading it and applying some miscompilation
patches), my mac LTO builds started to fail because ld64 would crash
during configure.

It turns out, it was crashing trying to print a warning it shouldn't
even print out, about failure to create a cache path.

This, in turn, is due to a pointer not being initialized in the ld64
code. I sent this upstream, and this was promptly fixed:
https://github.com/tpoechtrager/cctools-port/pull/57

However, since our last update of cctools-port, upstream landed a change
that broke support for tbd files if you don't compile against the new
libtapi library. Doing so is more work than I'm ready to put here,
so we just cherry-pick the fix.

--HG--
extra : rebase_source : 131952a5233bc379943c8eb124d377525f54202f
2018-07-27 15:14:06 +09:00
Andrew Halberstadt 15c53b6d46 Bug 1468812 - [ci] Support MOZ_FETCHES and fetch-content in run-task r=gps
This removes the 'use-artifacts' mechanism in favour of fetches. There are a
few pieces here that need to land atomically:

1. Remove use-artifact related code
2. Call 'fetch-content' from the run-task script
3. Convert existing tasks on top of fetches (jsshell, python unittest)
4. Stop calling 'fetch-content' from toolchain setup tasks (as this now gets handled in run-task)

Depends on D2166.

Differential Revision: https://phabricator.services.mozilla.com/D2167

--HG--
extra : moz-landing-system : lando
2018-07-26 17:13:39 +00:00
Tudor-Gabriel Vîjială 7034598959 Bug 1476165 - Part 2: Update Android Gradle plugin to version 3.1.0. r=nalexander,snorp
MozReview-Commit-ID: LR1OWncvuwt

--HG--
extra : rebase_source : 6de8f8927e801789d559a7c361c7b434ae1f74c4
2018-07-17 13:20:19 +01:00
Sebastian Hengst 943a6cf31a Backed out changeset 61f33f8c8750 (bug 1468812) for Linux ccov mass failures (bug 1478211). a=backout 2018-07-25 18:05:09 +03:00
Andrew Halberstadt a3174ac509 Bug 1468812 - [ci] Support MOZ_FETCHES and fetch-content in run-task r=gps
This removes the 'use-artifacts' mechanism in favour of fetches. There are a
few pieces here that need to land atomically:

1. Remove use-artifact related code
2. Call 'fetch-content' from the run-task script
3. Convert existing tasks on top of fetches (jsshell, python unittest)
4. Stop calling 'fetch-content' from toolchain setup tasks (as this now gets handled in run-task)

Depends on D2166.

Differential Revision: https://phabricator.services.mozilla.com/D2167

--HG--
extra : moz-landing-system : lando
2018-07-24 13:11:25 +00:00
Marco Castelluccio 73ba2e4524 Bug 1471339 - Introduce clang 7 toolchain build. r=glandium
--HG--
extra : rebase_source : 1609a57558151f11b9cdf3422c67ad4c3f695e12
2018-07-11 10:44:39 +02:00
Andrew Halberstadt e8a36b30d0 Bug 1468812 - [fetch-content] Implement ability to specify a per-fetch subdirectory to extract into r=gps
Currently 'fetch' artifacts are all extracted in the same directory, this could
make the extdir messy, or in the worst case, cause file name collisions.

Some artifacts are ok to extract into the same directory as they're already
bundled within the archive. But other artifacts are not. This patch keeps the
default behaviour (extracting everything into the same directory), but allows
task authors to specify per-artifact directories to extract into.

The syntax is:
path[>dest]@<task>

The 'dest' value will be a subdirectory of the MOZ_FETCHES_DIR environment
variable.

Depends on D2102.

Differential Revision: https://phabricator.services.mozilla.com/D2166

--HG--
extra : moz-landing-system : lando
2018-07-18 17:52:43 +00:00
Tudor-Gabriel Vîjială f5b27fe2be Bug 1334940 - Re-enable SCCACHE for linux64-ccov. r=ted
MozReview-Commit-ID: 6BQt984Rl39

--HG--
extra : rebase_source : b92e2bd0daab858f49eefd1b07dd251346524649
2018-07-13 15:02:21 +01:00
Eric Rahm 6079cec11e Bug 1464501 - Part 1: Add rust-size toolchain. r=glandium
--HG--
extra : rebase_source : 104dc6ef69f288684b2bc3d95361dc9090de0c1a
extra : source : e891ab259427a65b92a880478d6884abf0d4a281
extra : histedit_source : 8e8d263b4a55a59e7b15e4861dd7b38cf016249b
2018-06-07 16:47:58 -07:00
Mike Hommey 75a0990a1d Bug 1467658 - Update the macosx clang toolchain (for bootstrap) to version 6. r=chmanchester
--HG--
extra : rebase_source : 104b34102202fe0598d73d351de7b7ce0689f5ac
2018-06-08 13:37:48 +09:00
Mike Hommey a7e6de776d Bug 1467658 - Use clang 6 for coverage builds. r=chmanchester,marco
Instead of clang 4, which they were the last to use, so remove the
clang 4 toolchain.

--HG--
extra : rebase_source : d03a083e9217aeb6c1d2c91decb978426f0e8d1a
2018-06-08 10:48:06 +09:00
Mike Hommey 03b4a0d6e0 Bug 1462498 - Update clang 6 pre to clang 6 final on linux and mac. r=gps 2018-06-08 09:25:49 +09:00
Gregory Szorc 8922082362 Bug 1460777 - Taskgraph tasks for retrieving remote content; r=dustin, glandium
Currently, many tasks fetch content from the Internets. A problem with
that is fetching from the Internets is unreliable: servers may have
outages or be slow; content may disappear or change out from under us.

The unreliability of 3rd party services poses a risk to Firefox CI.
If services aren't available, we could potentially not run some CI tasks.
In the worst case, we might not be able to release Firefox. That would
be bad. In fact, as I write this, gmplib.org has been unavailable for
~24 hours and Firefox CI is unable to retrieve the GMP source code.
As a result, building GCC toolchains is failing.

A solution to this is to make tasks more hermetic by depending on
fewer network services (which by definition aren't reliable over time
and therefore introduce instability).

This commit attempts to mitigate some external service dependencies
by introducing the *fetch* task kind.

The primary goal of the *fetch* kind is to obtain remote content and
re-expose it as a task artifact. By making external content available
as a cached task artifact, we allow dependent tasks to consume this
content without touching the service originally providing that
content, thus eliminating a run-time dependency and making tasks more
hermetic and reproducible over time.

We introduce a single "fetch-url" "using" flavor to define tasks that
fetch single URLs and then re-expose that URL as an artifact. Powering
this is a new, minimal "fetch" Docker image that contains a
"fetch-content" Python script that does the work for us.

We have added tasks to fetch source archives used to build the GCC
toolchains.

Fetching remote content and re-exposing it as an artifact is not
very useful by itself: the value is in having tasks use those
artifacts.

We introduce a taskgraph transform that allows tasks to define an
array of "fetches." Each entry corresponds to the name of a "fetch"
task kind. When present, the corresponding "fetch" task is added as a
dependency. And the task ID and artifact path from that "fetch" task
is added to the MOZ_FETCHES environment variable of the task depending
on it. Our "fetch-content" script has a "task-artifacts"
sub-command that tasks can execute to perform retrieval of all
artifacts listed in MOZ_FETCHES.

To prove all of this works, the code for fetching dependencies when
building GCC toolchains has been updated to use `fetch-content`. The
now-unused legacy code has been deleted.

This commit improves the reliability and efficiency of GCC toolchain
tasks. Dependencies now all come from task artifacts and should always
be available in the common case. In addition, `fetch-content` downloads
and extracts files concurrently. This makes it faster than the serial
application which we were previously using.

There are some things I don't like about this commit.

First, a new Docker image and Python script for downloading URLs feels
a bit heavyweight. The Docker image is definitely overkill as things
stand. I can eventually justify it because I want to implement support
for fetching and repackaging VCS repositories and for caching Debian
packages. These will require more packages than what I'm comfortable
installing on the base Debian image, therefore justifying a dedicated
image.

The `fetch-content static-url` sub-command could definitely be
implemented as a shell script. But Python is readily available and
is more pleasant to maintain than shell, so I wrote it in Python.

`fetch-content task-artifacts` is more advanced and writing it in
Python is more justified, IMO. FWIW, the script is Python 3 only,
which conveniently gives us access to `concurrent.futures`, which
facilitates concurrent download.

`fetch-content` also duplicates functionality found elsewhere.
generic-worker's task payload supports a "mounts" feature which
facilitates downloading remote content, including from a task
artifact. However, this feature doesn't exist on docker-worker.
So we have to implement downloading inside the task rather than
at the worker level. I concede that if all workers had generic-worker's
"mounts" feature and supported concurrent download, `fetch-content`
wouldn't need to exist.

`fetch-content` also duplicates functionality of
`mach artifact toolchain`. I probably could have used
`mach artifact toolchain` instead of writing
`fetch-content task-artifacts`. However, I didn't want to introduce
the requirement of a VCS checkout. `mach artifact toolchain` has its
origins in providing a feature to the build system. And "fetching
artifacts from tasks" is a more generic feature than that. I think
it should be implemented as a generic feature and not something that is
"toolchain" specific.

I think the best place for a generic "fetch content" feature is in
the worker, where content can be defined in the task payload. But as
explained above, that feature isn't universally available. The next
best place is probably run-task. run-task already performs generic,
very-early task preparation steps, such as performing a VCS checkout.
I would like to fold `fetch-content` into run-task and make it all
driven by environment variables. But run-task is currently Python 2
and achieving concurrency would involve a bit of programming (or
adding package dependencies). I may very well port run-task to Python
3 and then fold fetch-content into it. Or maybe we leave
`fetch-content` as a standalone script.

MozReview-Commit-ID: AGuTcwNcNJR

--HG--
extra : source : 0b941cbdca76fb2fbb98dc5bbc1a0237c69954d0
extra : histedit_source : a3e43bdd8a9a58550bef02fec3be832ca304ea93
2018-06-06 14:37:49 -07:00
Gregory Szorc cf83defe06 Bug 1460777 - Extract GPG keys to standalone files; r=glandium
After this change, we consistently import GPG keys from files in
the GCC build scripts.

MozReview-Commit-ID: BcyvCQoGbMS

--HG--
extra : source : 5fce34a460b51e45ac280a9f0cb8bad896fbcff1
extra : histedit_source : 01621ea8111315c251a9493a11efca72c2ba3c7d
2018-05-11 10:38:35 -07:00
Gurzau Raul 53a10471cf Backed out 2 changesets (bug 1460777) for Toolchains failure on a CLOSED TREE
Backed out changeset 52ef9348401d (bug 1460777)
Backed out changeset 60ed097650b8 (bug 1460777)
2018-06-06 20:57:29 +03:00
Gregory Szorc 2f189264b9 Bug 1460777 - Taskgraph tasks for retrieving remote content; r=dustin,glandium
Currently, many tasks fetch content from the Internets. A problem with
that is fetching from the Internets is unreliable: servers may have
outages or be slow; content may disappear or change out from under us.

The unreliability of 3rd party services poses a risk to Firefox CI.
If services aren't available, we could potentially not run some CI tasks.
In the worst case, we might not be able to release Firefox. That would
be bad. In fact, as I write this, gmplib.org has been unavailable for
~24 hours and Firefox CI is unable to retrieve the GMP source code.
As a result, building GCC toolchains is failing.

A solution to this is to make tasks more hermetic by depending on
fewer network services (which by definition aren't reliable over time
and therefore introduce instability).

This commit attempts to mitigate some external service dependencies
by introducing the *fetch* task kind.

The primary goal of the *fetch* kind is to obtain remote content and
re-expose it as a task artifact. By making external content available
as a cached task artifact, we allow dependent tasks to consume this
content without touching the service originally providing that
content, thus eliminating a run-time dependency and making tasks more
hermetic and reproducible over time.

We introduce a single "fetch-url" "using" flavor to define tasks that
fetch single URLs and then re-expose that URL as an artifact. Powering
this is a new, minimal "fetch" Docker image that contains a
"fetch-content" Python script that does the work for us.

We have added tasks to fetch source archives used to build the GCC
toolchains.

Fetching remote content and re-exposing it as an artifact is not
very useful by itself: the value is in having tasks use those
artifacts.

We introduce a taskgraph transform that allows tasks to define an
array of "fetches." Each entry corresponds to the name of a "fetch"
task kind. When present, the corresponding "fetch" task is added as a
dependency. And the task ID and artifact path from that "fetch" task
is added to the MOZ_FETCHES environment variable of the task depending
on it. Our "fetch-content" script has a "task-artifacts"
sub-command that tasks can execute to perform retrieval of all
artifacts listed in MOZ_FETCHES.

To prove all of this works, the code for fetching dependencies when
building GCC toolchains has been updated to use `fetch-content`. The
now-unused legacy code has been deleted.

This commit improves the reliability and efficiency of GCC toolchain
tasks. Dependencies now all come from task artifacts and should always
be available in the common case. In addition, `fetch-content` downloads
and extracts files concurrently. This makes it faster than the serial
application which we were previously using.

There are some things I don't like about this commit.

First, a new Docker image and Python script for downloading URLs feels
a bit heavyweight. The Docker image is definitely overkill as things
stand. I can eventually justify it because I want to implement support
for fetching and repackaging VCS repositories and for caching Debian
packages. These will require more packages than what I'm comfortable
installing on the base Debian image, therefore justifying a dedicated
image.

The `fetch-content static-url` sub-command could definitely be
implemented as a shell script. But Python is readily available and
is more pleasant to maintain than shell, so I wrote it in Python.

`fetch-content task-artifacts` is more advanced and writing it in
Python is more justified, IMO. FWIW, the script is Python 3 only,
which conveniently gives us access to `concurrent.futures`, which
facilitates concurrent download.

`fetch-content` also duplicates functionality found elsewhere.
generic-worker's task payload supports a "mounts" feature which
facilitates downloading remote content, including from a task
artifact. However, this feature doesn't exist on docker-worker.
So we have to implement downloading inside the task rather than
at the worker level. I concede that if all workers had generic-worker's
"mounts" feature and supported concurrent download, `fetch-content`
wouldn't need to exist.

`fetch-content` also duplicates functionality of
`mach artifact toolchain`. I probably could have used
`mach artifact toolchain` instead of writing
`fetch-content task-artifacts`. However, I didn't want to introduce
the requirement of a VCS checkout. `mach artifact toolchain` has its
origins in providing a feature to the build system. And "fetching
artifacts from tasks" is a more generic feature than that. I think
it should be implemented as a generic feature and not something that is
"toolchain" specific.

I think the best place for a generic "fetch content" feature is in
the worker, where content can be defined in the task payload. But as
explained above, that feature isn't universally available. The next
best place is probably run-task. run-task already performs generic,
very-early task preparation steps, such as performing a VCS checkout.
I would like to fold `fetch-content` into run-task and make it all
driven by environment variables. But run-task is currently Python 2
and achieving concurrency would involve a bit of programming (or
adding package dependencies). I may very well port run-task to Python
3 and then fold fetch-content into it. Or maybe we leave
`fetch-content` as a standalone script.

MozReview-Commit-ID: AGuTcwNcNJR

--HG--
extra : rebase_source : 4918b8c3bac53d63665006802054038bfbca0314
2018-06-06 09:37:38 -07:00
Gregory Szorc 43e801ae60 Bug 1460777 - Extract GPG keys to standalone files; r=glandium
After this change, we consistently import GPG keys from files in
the GCC build scripts.

MozReview-Commit-ID: BcyvCQoGbMS

--HG--
extra : rebase_source : 657ccce8e242cabdfaff396fd0d6439754a3f364
2018-05-11 10:38:35 -07:00
Andrew Halberstadt cedce1ff81 Bug 1466660 - Remove use-artifact directory from run-task workers after task has finished r=jmaher
Right now artifacts from previous tasks are left lying around. We should clean these up
in case a task accidentally uses an artifact from the wrong dependency.

Ideally we'd cache these properly based on the taskId they came from, but that can be
follow-up fodder.

MozReview-Commit-ID: HUgvNlqyFav

--HG--
extra : rebase_source : fb9c6723598223619993c2695fb588ead3325edb
2018-06-04 16:36:28 -04:00
Mike Hommey e680be2ec4 Bug 1466060 - Upgrade to binutils 2.28.1. r=nalexander
Version 2.25.1's libiberty can choke on some symbols. That was fixed in
2.27. As of writing, the last version is 2.30. Conservatively go with
2.28.1, which is the same major version (2.28) as what is currently in
Debian stable.

--HG--
extra : rebase_source : 9e5ba94421a1568f662cfd98af7168ea1c890934
2018-06-01 17:48:41 +09:00
Andrew Halberstadt 8320b86def Bug 1465181 - [run-task] Remove requirement to run as root on POSIX systems, r=gps
There is a superficial check in the run-task script which requires root. Simply
removing this check allows a native-engine task (which isn't running as root)
to proceed.

MozReview-Commit-ID: 44XavXAwxxn

--HG--
extra : rebase_source : bd1f01ce1c2feb4029838e07314493d449a4f46e
2018-05-29 15:58:07 -04:00
Andrew Halberstadt 38e69c76b1 Bug 1465181 - [taskgraph] Stop hardcoding the workdir to /builds/worker in 'job' tasks, r=gps
This adds an optional 'workdir' key to all job schemas. It still defaults to
/builds/worker, but can be overriden by individual tasks or schema
implementations.

MozReview-Commit-ID: LY20xfBhbCP

--HG--
extra : rebase_source : 7ac76ebf55d33d30c2aad73484421c6b4002cd33
2018-05-29 16:05:35 -04:00
Mike Shal 30eff40930 Bug 1377524 - Update tup toolchain to v0.7.6; r=chmanchester
MozReview-Commit-ID: cdVkPSToXs

--HG--
extra : rebase_source : faeef5ede130545570256534588b2d74c117ea39
2018-05-24 14:53:15 -04:00
Andrew Halberstadt dbbfae76db Bug 1461980 - [taskgraph] Add ability to download artifacts from dependencies in run-task script, r=dustin
This adds a 'use-artifacts' key to the run_task schema. Tasks can specify artifacts to download like this:

run:
    using: run-task
    use_artifacts:
        build:
            - target.tar.bz2
            - target.common.tests.zip
            - target.mochitest.tests.zip

This will cause the run-task script to download those three artifacts from the task's 'build' dependency.
If the task doesn't have a 'build' dependency, taskgraph generation will error. The artifacts will be
downloaded into $USE_ARTIFACT_PATH. It is up to the task to do whatever extracting/setup may be required.
E.g this setup could go in the task's command.

At this time, only 'run-task' tasks using docker-worker are supported.

MozReview-Commit-ID: 3f02oCys62i

--HG--
extra : rebase_source : e8a85040e45042b537d4119334c4a8b7280b295c
2018-05-17 10:04:23 -04:00
Chris AtLee abedb6c83d Bug 1237182: remove mock(chroot) support r=Callek
--HG--
extra : source : 806b003761cee8d8f0bc1da6405caf8000708be9
extra : intermediate-source : bbf1842aa32ec180664a714e415775947e39849c
2018-05-16 12:31:33 -04:00
Gregory Szorc fdb1c18e80 Bug 1460470 - Make run-task Python 3.5+ only; r=mshal
A try push converting run-task to Python 3 seemed to complete without
error.

Since it is annoying writing code that needs to work on both Python
2 and 3, let's require Python 3 and remove code for supporting Python 2.

We implement a version check enforcing Python 3.5+. This is because
we're supposed to be standardizing on 3.5+ everywhere. I want to
prevent accidental usage of older Python 3 versions.

MozReview-Commit-ID: 4vATLZ6Si2e

--HG--
extra : source : 94a9641c5a018cfe729ebe748e75a7c4373e4322
2018-05-11 10:19:53 -07:00
Gregory Szorc d10cd93f47 Bug 1460470 - Change run-task to use Python 3 by default; r=mshal
Python 3 is the future.

MozReview-Commit-ID: APuu4Q3mimj

--HG--
extra : source : 33fe8423f88cb8158559bc736d89b4849b57d315
2018-05-09 17:26:40 -07:00
Gregory Szorc f661f06851 Bug 1460470 - More run-task Python 3 porting; r=mshal
Mostly normalization of str and bytes. Python 3 is annoying for
systems level code where most things are bytes.

MozReview-Commit-ID: KpvZGegBkYn

--HG--
extra : source : 4902cab3ce5dab2d1756cf0cd5c95f40603c0a0e
2018-05-09 21:15:36 -07:00
Gregory Szorc 64d4b487a4 Bug 1460470 - Make run-task somewhat usable on Python 3; r=mshal
This required a lot of attention to bytes versus strings.

The hacks around handling process output are somewhat gross. Apparently
readline() doesn't work on bytes streams in Python 3?! So we install a
custom stream decoder so we can have nice things.

There are still some failures in run-task on Python 3. But we're a big
step closer.

MozReview-Commit-ID: 4FJlTn3q9Ai

--HG--
extra : source : 19fe5702cf6d018b743108b35e86d1750f205a76
2018-05-16 11:06:36 -07:00
Gregory Szorc 526949a0ad Bug 1460470 - Make run-task compile on Python 3; r=mshal
The file failed to compile due to octal syntax and missing imports.
After this change, we get a run-time error, which is strictly better.

MozReview-Commit-ID: nY9A13Pt3E

--HG--
extra : source : ef477a048b575958be74287a2273830813b385f1
2018-05-16 13:57:08 -07:00
Ciure Andrei 5c13bf1ff4 Backed out 5 changesets (bug 1460470) for toolchains bustages a=backout CLOSED TREE
Backed out changeset 94a9641c5a01 (bug 1460470)
Backed out changeset 33fe8423f88c (bug 1460470)
Backed out changeset 4902cab3ce5d (bug 1460470)
Backed out changeset 19fe5702cf6d (bug 1460470)
Backed out changeset ef477a048b57 (bug 1460470)
2018-05-17 01:04:29 +03:00
Gregory Szorc 0023204ad1 Bug 1460470 - Make run-task Python 3.5+ only; r=mshal
A try push converting run-task to Python 3 seemed to complete without
error.

Since it is annoying writing code that needs to work on both Python
2 and 3, let's require Python 3 and remove code for supporting Python 2.

We implement a version check enforcing Python 3.5+. This is because
we're supposed to be standardizing on 3.5+ everywhere. I want to
prevent accidental usage of older Python 3 versions.

MozReview-Commit-ID: 4vATLZ6Si2e

--HG--
extra : rebase_source : d1450979e636387a5fdbd80ba19a92ec4fd31088
extra : histedit_source : 62910e29cc2fff0a1db0e9521cc58b200406d393
2018-05-11 10:19:53 -07:00
Gregory Szorc 9b265e41ee Bug 1460470 - Change run-task to use Python 3 by default; r=mshal
Python 3 is the future.

MozReview-Commit-ID: APuu4Q3mimj

--HG--
extra : rebase_source : 79839dc7f3ec130e467f1d0aa268bf3912cc1c8f
extra : histedit_source : 4be41658b5debaa6165228f60f09a9d1bf53ddbb
2018-05-09 17:26:40 -07:00
Gregory Szorc 84b3320347 Bug 1460470 - More run-task Python 3 porting; r=mshal
Mostly normalization of str and bytes. Python 3 is annoying for
systems level code where most things are bytes.

MozReview-Commit-ID: KpvZGegBkYn

--HG--
extra : rebase_source : aa50a6cd1337fe604015131b053234a2db642e57
extra : histedit_source : 8481b23bde4f408a59c623b8be43ee0611492afd
2018-05-09 21:15:36 -07:00
Gregory Szorc b300a4a11d Bug 1460470 - Make run-task somewhat usable on Python 3; r=mshal
This required a lot of attention to bytes versus strings.

The hacks around handling process output are somewhat gross. Apparently
readline() doesn't work on bytes streams in Python 3?! So we install a
custom stream decoder so we can have nice things.

There are still some failures in run-task on Python 3. But we're a big
step closer.

MozReview-Commit-ID: 4FJlTn3q9Ai

--HG--
extra : rebase_source : 1a45b158fb625c7fd86701736b16da8df122218d
extra : histedit_source : f66fb22e86caf9b6b3cb301bedeab0b709685ef3
2018-05-16 11:06:36 -07:00
Gregory Szorc 247b0d8be5 Bug 1460470 - Make run-task compile on Python 3; r=mshal
The file failed to compile due to octal syntax and missing imports.
After this change, we get a run-time error, which is strictly better.

MozReview-Commit-ID: nY9A13Pt3E

--HG--
extra : rebase_source : 074cbf7daaed820bd330b6850d28acd766b3801a
extra : histedit_source : e10c0a14f55148dd3e57a194d262ded41c038ee5
2018-05-16 13:57:08 -07:00
Tom Ritter 65a58e425c Bug 1460668 Bump MinGW to capture the CD3D11_BLEND_DESC fix r=froydnj
MozReview-Commit-ID: 83igqfjKm6O

--HG--
extra : rebase_source : 1f800310e562b5d1ba76bc5693e648eb63a44fac
2018-05-16 13:43:29 -05:00
Ciure Andrei e2adc25ccb Backed out 5 changesets (bug 1460470) for gps: image build failures a=backout CLOSED TREE
Backed out changeset 07a3e76abc8c (bug 1460470)
Backed out changeset 94c3b68ccc48 (bug 1460470)
Backed out changeset 88324086394e (bug 1460470)
Backed out changeset 16d15b4b97fa (bug 1460470)
Backed out changeset ebd569c9d870 (bug 1460470)
2018-05-16 22:29:17 +03:00
Gregory Szorc b3529e86ca Bug 1460470 - Make run-task Python 3.5+ only; r=mshal
A try push converting run-task to Python 3 seemed to complete without
error.

Since it is annoying writing code that needs to work on both Python
2 and 3, let's require Python 3 and remove code for supporting Python 2.

We implement a version check enforcing Python 3.5+. This is because
we're supposed to be standardizing on 3.5+ everywhere. I want to
prevent accidental usage of older Python 3 versions.

MozReview-Commit-ID: 4vATLZ6Si2e

--HG--
extra : rebase_source : bbf3a0bd6cc881002d38c58eef64636c5efa6712
2018-05-11 10:19:53 -07:00
Gregory Szorc abb76d95f9 Bug 1460470 - Change run-task to use Python 3 by default; r=mshal
Python 3 is the future.

MozReview-Commit-ID: APuu4Q3mimj

--HG--
extra : rebase_source : f204a712466f10149b35e125d9ceb181e0f420b7
2018-05-09 17:26:40 -07:00
Gregory Szorc 836b5bdad3 Bug 1460470 - More run-task Python 3 porting; r=mshal
Mostly normalization of str and bytes. Python 3 is annoying for
systems level code where most things are bytes.

MozReview-Commit-ID: KpvZGegBkYn

--HG--
extra : rebase_source : 6bda98911cf32ce1bc3d651805b473aff18bf1f9
2018-05-09 21:15:36 -07:00
Gregory Szorc dd1809c1fd Bug 1460470 - Make run-task somewhat usable on Python 3; r=mshal
This required a lot of attention to bytes versus strings.

The hacks around handling process output are somewhat gross. Apparently
readline() doesn't work on bytes streams in Python 3?! So we install a
custom stream decoder so we can have nice things.

There are still some failures in run-task on Python 3. But we're a big
step closer.

MozReview-Commit-ID: 4FJlTn3q9Ai

--HG--
extra : rebase_source : 38d5626574d924c25e3fb4eecf29d379c2678e0d
2018-05-16 11:06:36 -07:00
Gregory Szorc 65a310206f Bug 1460470 - Make run-task compile on Python 3; r=mshal
The file failed to compile due to octal syntax and missing imports.
After this change, we get a run-time error, which is strictly better.

MozReview-Commit-ID: nY9A13Pt3E

--HG--
extra : rebase_source : b13d859ffaa2d10795312ff5a0f3ebbd5ca06835
2018-05-09 16:14:28 -07:00
Geoff Brown bd4f5cfdbf Bug 1460411 - Add kvm to desktop1604-test image; r=jmaher
Our normal ubuntu 16.04 test image is suitable for hosting an Android x86
emulator with these minor updates: Install kvm and make sure /dev/kvm
rw permissions are open for everyone. Note that /dev/kvm is generally
only visible when running docker with --privileged; its permissions
cannot be modified in the Dockerfile, only at run-time: run-task is the
first opportunity.
2018-05-15 09:57:27 -06:00
Gregory Szorc f1f60ea6e5 Bug 1459737 - Assert that volumes aren't used on Windows; r=dustin
Volumes are a docker-worker concept. They shouldn't be encountered on
Windows, which uses generic-worker.

MozReview-Commit-ID: KUdSxVHVJQ

--HG--
extra : rebase_source : ff54131d471ae2ae2465b11ca5ba6e787f5d11de
2018-05-04 18:02:54 -07:00
Gregory Szorc d427f004f7 Bug 1459737 - Move volume configuration to standalone function; r=dustin
Do to volumes what we did to caches.

MozReview-Commit-ID: 7s4nYPC27nk

--HG--
extra : rebase_source : 8c71459a4854a9de0f74469eb3655d8293554cfd
2018-05-04 18:00:44 -07:00
Gregory Szorc b21421f3de Bug 1459737 - Move cache configuration to standalone function; r=dustin
main() is quite long. And the control flow will become more complicated
as we support Windows.

Let's move the bulk of the cache configuration code into a standalone
function so main() is less cluttered.

MozReview-Commit-ID: xredCubr1E

--HG--
extra : rebase_source : 385fe6fe9e083cf585edc922b1fa26355d580c02
2018-05-04 17:54:07 -07:00
Gregory Szorc 389a573533 Bug 1459737 - Require to run on root on POSIX platforms; r=dustin
The code for cache and volume normalization makes assumptions that uid
and gid are defined. They are not defined if not running as root and
Python would crash in these code paths.

So, presumably this means that all tasks using run-task are running as
root. Let's codify that requirement.

This requirement is arbitrary. But let's not scope bloat run-task to
support scenarios until we need them.

MozReview-Commit-ID: 2uW4OSovzWi

--HG--
extra : rebase_source : 56ced8ecbd0eef3a55dc68413f4eab7601756cc0
2018-05-04 17:47:09 -07:00