gecko-dev/taskcluster/ci/toolchain/linux.yml

762 строки
22 KiB
YAML
Исходник Обычный вид История

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
job-defaults:
worker:
docker-image: {in-tree: toolchain-build}
linux64-clang-3.9:
description: "Clang 3.9 toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(clang3.9)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux-large
worker:
max-run-time: 7200
run:
using: toolchain-script
script: build-clang-3.9-linux.sh
resources:
- 'build/build-clang/build-clang.py'
- 'build/build-clang/clang-3.9-linux64.json'
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-artifact: public/build/clang.tar.xz
toolchains:
- linux64-gcc-4.9
linux64-clang-6:
description: "Clang 6 toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(clang6)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux-xlarge
worker:
max-run-time: 7200
run:
using: toolchain-script
script: build-clang-6-linux.sh
resources:
- 'build/build-clang/build-clang.py'
- 'build/build-clang/clang-6-linux64.json'
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-alias: linux64-clang
toolchain-artifact: public/build/clang.tar.xz
toolchains:
- linux64-gcc-4.9
linux64-clang-7:
description: "Clang 7 toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(clang7)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux-xlarge
worker:
max-run-time: 7200
run:
using: toolchain-script
script: build-clang-7-linux.sh
resources:
- 'build/build-clang/build-clang.py'
- 'build/build-clang/clang-7-pre-linux64.json'
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-artifact: public/build/clang.tar.xz
toolchains:
- linux64-gcc-4.9
linux64-clang-7-mingw:
description: "MinGW-Clang 7 Pre toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TMW(clang7p)
tier: 2
worker-type: aws-provisioner-v1/gecko-{level}-b-linux-xlarge
worker:
max-run-time: 7200
run:
using: toolchain-script
script: build-clang-7-pre-mingw.sh
resources:
- 'build/build-clang/build-clang.py'
- 'build/build-clang/clang-7-pre-mingw.json'
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-artifact: public/build/clangmingw.tar.xz
toolchains:
- linux64-gcc-4.9
linux64-clang-6-macosx-cross:
description: "Clang 6 toolchain build with MacOS Compiler RT libs"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(clang6-macosx-cross)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 3600
env:
TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/macosx64/cross-clang.manifest"
run:
using: toolchain-script
script: build-clang-6-linux-macosx-cross.sh
resources:
- 'build/build-clang/build-clang.py'
- 'build/build-clang/clang-6-macosx64.json'
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-alias: linux64-clang-macosx-cross
toolchain-artifact: public/build/clang.tar.xz
tooltool-downloads: internal
toolchains:
- linux64-cctools-port
- linux64-clang-6
- linux64-gcc-4.9
linux64-clang-tidy:
description: "Clang-tidy build"
index:
product: static-analysis
job-name: linux64-clang-tidy
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(clang-tidy)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux-large
worker:
max-run-time: 3600
run:
using: toolchain-script
script: build-clang-tidy-linux.sh
resources:
- 'build/clang-plugin/**'
- 'build/build-clang/build-clang.py'
- 'build/build-clang/clang-tidy-linux64.json'
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-artifact: public/build/clang-tidy.tar.xz
run-on-projects:
- trunk
- try
toolchains:
- linux64-gcc-4.9
linux64-infer:
description: "infer build"
index:
product: static-analysis
job-name: linux64-infer
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(infer)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
docker-image: {in-tree: infer-build}
max-run-time: 3600
run:
using: toolchain-script
script: build-infer-linux.sh
resources:
- 'build/build-infer/build-infer.py'
- 'build/build-infer/infer-linux64.json'
toolchain-artifact: public/build/infer.tar.xz
linux64-gcc-4.9:
description: "GCC 4.9 toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(gcc4.9)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 3600
run:
using: toolchain-script
script: build-gcc-4.9-linux.sh
resources:
- 'build/unix/build-gcc/build-gcc.sh'
toolchain-artifact: public/build/gcc.tar.xz
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-07 00:37:49 +03:00
fetches:
fetch:
- binutils-2.25.1
- cloog-0.18.1
- gcc-4.9.4
- gmp-5.1.3
- isl-0.12.2
- mpc-0.8.2
- mpfr-3.1.5
linux64-gcc-6:
description: "GCC 6 toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(gcc6)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 3600
run:
using: toolchain-script
script: build-gcc-6-linux.sh
resources:
- 'build/unix/build-gcc/build-gcc.sh'
toolchain-alias: linux64-gcc
toolchain-artifact: public/build/gcc.tar.xz
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-07 00:37:49 +03:00
fetches:
fetch:
- binutils-2.28.1
- gcc-6.4.0
- gmp-5.1.3
- isl-0.15
- mpc-0.8.2
- mpfr-3.1.5
linux64-gcc-7:
description: "GCC 7 toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(gcc7)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 3600
run:
using: toolchain-script
script: build-gcc-7-linux.sh
resources:
- 'build/unix/build-gcc/build-gcc.sh'
toolchain-artifact: public/build/gcc.tar.xz
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-07 00:37:49 +03:00
fetches:
fetch:
- binutils-2.28.1
- gcc-7.3.0
- gmp-6.1.0
- isl-0.16.1
- mpc-1.0.3
- mpfr-3.1.4
linux64-gcc-sixgill:
description: "sixgill GCC plugin build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(sixgill)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 3600
run:
using: toolchain-script
script: build-gcc-sixgill-plugin-linux.sh
resources:
- 'build/unix/build-gcc/build-gcc.sh'
- 'taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh'
toolchain-artifact: public/build/sixgill.tar.xz
toolchains:
- linux64-gcc-6
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-07 00:37:49 +03:00
fetches:
fetch:
- binutils-2.28.1
- isl-0.15
- gcc-6.4.0
- gmp-5.1.3
- mpc-0.8.2
- mpfr-3.1.5
linux64-llvm-dsymutil:
description: "llvm-dsymutil toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(dsymutil)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 1800
run:
using: toolchain-script
script: build-llvm-dsymutil.sh
toolchain-artifact: public/build/llvm-dsymutil.tar.xz
toolchains:
- linux64-gcc-4.9
linux64-binutils:
description: "Binutils toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(binutil)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 3600
run:
using: toolchain-script
script: build-binutils-linux.sh
resources:
- 'build/unix/build-binutils/build-binutils.sh'
toolchain-artifact: public/build/binutils.tar.xz
linux64-cctools-port:
description: "cctools-port toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(cctools)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 1800
run:
using: toolchain-script
script: build-cctools-port.sh
resources:
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-artifact: public/build/cctools.tar.xz
toolchains:
- linux64-clang-6
linux64-hfsplus:
description: "hfsplus toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(hfs+)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 1800
run:
using: toolchain-script
script: build-hfsplus-linux.sh
resources:
- 'build/unix/build-hfsplus/build-hfsplus.sh'
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-artifact: public/build/hfsplus-tools.tar.xz
toolchains:
- linux64-clang-6
linux64-libdmg:
description: "libdmg-hfsplus toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(libdmg-hfs+)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 1800
run:
using: toolchain-script
script: build-libdmg-hfsplus.sh
toolchain-artifact: public/build/dmg.tar.xz
linux64-node:
description: "Node repack toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(node)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
docker-image: {in-tree: toolchain-build}
max-run-time: 1800
run:
using: toolchain-script
script: repack-node.sh
arguments: ['linux64']
toolchain-artifact: public/build/node.tar.xz
linux64-android-sdk-linux-repack:
description: "Android SDK (Linux) repack toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(android-sdk-linux)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
docker-image: {in-tree: android-build}
max-run-time: 1800
artifacts:
- name: project/gecko/android-sdk
path: /builds/worker/project/gecko/android-sdk/
type: directory
run:
using: toolchain-script
script: repack-android-sdk-linux.sh
resources:
- 'python/mozboot/**/*android*'
toolchain-artifact: project/gecko/android-sdk/android-sdk-linux.tar.xz
toolchain-alias: android-sdk-linux
linux64-android-ndk-linux-repack:
description: "Android NDK (Linux) repack toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(android-ndk-linux)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
docker-image: {in-tree: android-build}
max-run-time: 1800
artifacts:
- name: project/gecko/android-ndk
path: /builds/worker/project/gecko/android-ndk/
type: directory
run:
using: toolchain-script
script: repack-android-ndk-linux.sh
resources:
- 'python/mozboot/**/*android*'
toolchain-artifact: project/gecko/android-ndk/android-ndk.tar.xz
toolchain-alias: android-ndk-linux
linux64-android-gradle-dependencies:
description: "Android Gradle dependencies toolchain task"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(gradle-dependencies)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
docker-image: {in-tree: android-build}
env:
GRADLE_USER_HOME: "/builds/worker/workspace/build/src/mobile/android/gradle/dotgradle-online"
max-run-time: 1800
run:
using: toolchain-script
script: android-gradle-dependencies.sh
sparse-profile: null
resources:
- 'taskcluster/scripts/misc/tooltool-download.sh'
- 'taskcluster/scripts/misc/android-gradle-dependencies/**'
- '*.gradle'
- 'mobile/android/**/*.gradle'
- 'mobile/android/config/mozconfigs/android-api-16-gradle-dependencies/**'
- 'mobile/android/config/mozconfigs/common*'
- 'mobile/android/gradle.configure'
toolchain-artifact: public/build/android-gradle-dependencies.tar.xz
toolchain-alias: android-gradle-dependencies
toolchains:
# Aliases aren't allowed for toolchains depending on toolchains.
- linux64-android-sdk-linux-repack
- linux64-node
linux64-rust-1.27:
description: "rust repack"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(rust-1.27)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 7200
env:
UPLOAD_DIR: artifacts
run:
using: toolchain-script
script: repack_rust.py
arguments: [
'--channel', '1.27.0',
'--host', 'x86_64-unknown-linux-gnu',
'--target', 'x86_64-unknown-linux-gnu',
'--target', 'i686-unknown-linux-gnu',
]
toolchain-artifact: public/build/rustc.tar.xz
linux64-rust-1.28:
description: "rust repack"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(rust)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 7200
env:
UPLOAD_DIR: artifacts
run:
using: toolchain-script
script: repack_rust.py
arguments: [
'--channel', '1.28.0',
'--host', 'x86_64-unknown-linux-gnu',
'--target', 'x86_64-unknown-linux-gnu',
'--target', 'i686-unknown-linux-gnu',
]
toolchain-alias: linux64-rust
toolchain-artifact: public/build/rustc.tar.xz
linux64-rust-nightly:
description: "rust nightly repack"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(rust-nightly)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 7200
env:
UPLOAD_DIR: artifacts
run:
using: toolchain-script
script: repack_rust.py
arguments: [
'--channel', 'nightly-2018-07-18',
'--host', 'x86_64-unknown-linux-gnu',
'--target', 'x86_64-unknown-linux-gnu',
'--target', 'i686-unknown-linux-gnu',
]
toolchain-artifact: public/build/rustc.tar.xz
linux64-rust-macos-1.28:
Bug 1391427 - Package upstream rust in taskcluster. r=glandium Add a toolchain job description which calls the repack_rust.py script to package the requested upstream build of Rust and its standard libraries for use in gecko builds. Links are added to these new toolchains for various build and analysis tasks as appropriate. The base-toolchain tasks use an explicitly-versioned toolchain since those can be different from the current release used for most builds. The corresponding tooltool manifest entries are removed now that taskcluster artifact versions are available. This simplifies the update process since new toolchains can be packaged and used automatically by just updating the versions in the task descriptions. A 'linux64-rust' toolchain can be added to other tasks as a dependency and artifact. It supports linux64- hosted builds of Rust code targeting linux64 or linux32. A 'linux64-rust-macos' toolchain targets linux64-hosted builds of Rust code targeting macOS on x86_64. A 'linux64-rust-android' toolchain targets linux64-hosted builds of Rust code targeting various Android architectures. Two 'win64-rust' and 'win32-rust' toolchain tasks create similar entries for Windows-hosted builds. All our automation builds are hosted on win64, so we could use one artifact with support for both targets, but currently this doesn't work because of cross-compilation issues in some crates. This patch maintains the previous separation between win32 and win64 rust toolchains until that can be addressed. MozReview-Commit-ID: GRiJml8CtzO --HG-- extra : rebase_source : 09a3698ce7f9a8b5f2b5d9b5a1fde9c05dc6b540
2017-09-13 02:30:19 +03:00
description: "rust repack with macos-cross support"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(rust-macos)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 7200
env:
UPLOAD_DIR: artifacts
Bug 1391427 - Package upstream rust in taskcluster. r=glandium Add a toolchain job description which calls the repack_rust.py script to package the requested upstream build of Rust and its standard libraries for use in gecko builds. Links are added to these new toolchains for various build and analysis tasks as appropriate. The base-toolchain tasks use an explicitly-versioned toolchain since those can be different from the current release used for most builds. The corresponding tooltool manifest entries are removed now that taskcluster artifact versions are available. This simplifies the update process since new toolchains can be packaged and used automatically by just updating the versions in the task descriptions. A 'linux64-rust' toolchain can be added to other tasks as a dependency and artifact. It supports linux64- hosted builds of Rust code targeting linux64 or linux32. A 'linux64-rust-macos' toolchain targets linux64-hosted builds of Rust code targeting macOS on x86_64. A 'linux64-rust-android' toolchain targets linux64-hosted builds of Rust code targeting various Android architectures. Two 'win64-rust' and 'win32-rust' toolchain tasks create similar entries for Windows-hosted builds. All our automation builds are hosted on win64, so we could use one artifact with support for both targets, but currently this doesn't work because of cross-compilation issues in some crates. This patch maintains the previous separation between win32 and win64 rust toolchains until that can be addressed. MozReview-Commit-ID: GRiJml8CtzO --HG-- extra : rebase_source : 09a3698ce7f9a8b5f2b5d9b5a1fde9c05dc6b540
2017-09-13 02:30:19 +03:00
run:
using: toolchain-script
script: repack_rust.py
arguments: [
'--channel', '1.28.0',
'--host', 'x86_64-unknown-linux-gnu',
'--target', 'x86_64-unknown-linux-gnu',
'--target', 'x86_64-apple-darwin',
Bug 1391427 - Package upstream rust in taskcluster. r=glandium Add a toolchain job description which calls the repack_rust.py script to package the requested upstream build of Rust and its standard libraries for use in gecko builds. Links are added to these new toolchains for various build and analysis tasks as appropriate. The base-toolchain tasks use an explicitly-versioned toolchain since those can be different from the current release used for most builds. The corresponding tooltool manifest entries are removed now that taskcluster artifact versions are available. This simplifies the update process since new toolchains can be packaged and used automatically by just updating the versions in the task descriptions. A 'linux64-rust' toolchain can be added to other tasks as a dependency and artifact. It supports linux64- hosted builds of Rust code targeting linux64 or linux32. A 'linux64-rust-macos' toolchain targets linux64-hosted builds of Rust code targeting macOS on x86_64. A 'linux64-rust-android' toolchain targets linux64-hosted builds of Rust code targeting various Android architectures. Two 'win64-rust' and 'win32-rust' toolchain tasks create similar entries for Windows-hosted builds. All our automation builds are hosted on win64, so we could use one artifact with support for both targets, but currently this doesn't work because of cross-compilation issues in some crates. This patch maintains the previous separation between win32 and win64 rust toolchains until that can be addressed. MozReview-Commit-ID: GRiJml8CtzO --HG-- extra : rebase_source : 09a3698ce7f9a8b5f2b5d9b5a1fde9c05dc6b540
2017-09-13 02:30:19 +03:00
]
toolchain-alias: linux64-rust-macos
toolchain-artifact: public/build/rustc.tar.xz
linux64-rust-android-1.28:
Bug 1391427 - Package upstream rust in taskcluster. r=glandium Add a toolchain job description which calls the repack_rust.py script to package the requested upstream build of Rust and its standard libraries for use in gecko builds. Links are added to these new toolchains for various build and analysis tasks as appropriate. The base-toolchain tasks use an explicitly-versioned toolchain since those can be different from the current release used for most builds. The corresponding tooltool manifest entries are removed now that taskcluster artifact versions are available. This simplifies the update process since new toolchains can be packaged and used automatically by just updating the versions in the task descriptions. A 'linux64-rust' toolchain can be added to other tasks as a dependency and artifact. It supports linux64- hosted builds of Rust code targeting linux64 or linux32. A 'linux64-rust-macos' toolchain targets linux64-hosted builds of Rust code targeting macOS on x86_64. A 'linux64-rust-android' toolchain targets linux64-hosted builds of Rust code targeting various Android architectures. Two 'win64-rust' and 'win32-rust' toolchain tasks create similar entries for Windows-hosted builds. All our automation builds are hosted on win64, so we could use one artifact with support for both targets, but currently this doesn't work because of cross-compilation issues in some crates. This patch maintains the previous separation between win32 and win64 rust toolchains until that can be addressed. MozReview-Commit-ID: GRiJml8CtzO --HG-- extra : rebase_source : 09a3698ce7f9a8b5f2b5d9b5a1fde9c05dc6b540
2017-09-13 02:30:19 +03:00
description: "rust repack with android-cross support"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(rust-android)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 7200
env:
UPLOAD_DIR: artifacts
Bug 1391427 - Package upstream rust in taskcluster. r=glandium Add a toolchain job description which calls the repack_rust.py script to package the requested upstream build of Rust and its standard libraries for use in gecko builds. Links are added to these new toolchains for various build and analysis tasks as appropriate. The base-toolchain tasks use an explicitly-versioned toolchain since those can be different from the current release used for most builds. The corresponding tooltool manifest entries are removed now that taskcluster artifact versions are available. This simplifies the update process since new toolchains can be packaged and used automatically by just updating the versions in the task descriptions. A 'linux64-rust' toolchain can be added to other tasks as a dependency and artifact. It supports linux64- hosted builds of Rust code targeting linux64 or linux32. A 'linux64-rust-macos' toolchain targets linux64-hosted builds of Rust code targeting macOS on x86_64. A 'linux64-rust-android' toolchain targets linux64-hosted builds of Rust code targeting various Android architectures. Two 'win64-rust' and 'win32-rust' toolchain tasks create similar entries for Windows-hosted builds. All our automation builds are hosted on win64, so we could use one artifact with support for both targets, but currently this doesn't work because of cross-compilation issues in some crates. This patch maintains the previous separation between win32 and win64 rust toolchains until that can be addressed. MozReview-Commit-ID: GRiJml8CtzO --HG-- extra : rebase_source : 09a3698ce7f9a8b5f2b5d9b5a1fde9c05dc6b540
2017-09-13 02:30:19 +03:00
run:
using: toolchain-script
script: repack_rust.py
arguments: [
'--channel', '1.28.0',
'--host', 'x86_64-unknown-linux-gnu',
'--target', 'x86_64-unknown-linux-gnu',
'--target', 'armv7-linux-androideabi',
'--target', 'aarch64-linux-android',
'--target', 'i686-linux-android',
Bug 1391427 - Package upstream rust in taskcluster. r=glandium Add a toolchain job description which calls the repack_rust.py script to package the requested upstream build of Rust and its standard libraries for use in gecko builds. Links are added to these new toolchains for various build and analysis tasks as appropriate. The base-toolchain tasks use an explicitly-versioned toolchain since those can be different from the current release used for most builds. The corresponding tooltool manifest entries are removed now that taskcluster artifact versions are available. This simplifies the update process since new toolchains can be packaged and used automatically by just updating the versions in the task descriptions. A 'linux64-rust' toolchain can be added to other tasks as a dependency and artifact. It supports linux64- hosted builds of Rust code targeting linux64 or linux32. A 'linux64-rust-macos' toolchain targets linux64-hosted builds of Rust code targeting macOS on x86_64. A 'linux64-rust-android' toolchain targets linux64-hosted builds of Rust code targeting various Android architectures. Two 'win64-rust' and 'win32-rust' toolchain tasks create similar entries for Windows-hosted builds. All our automation builds are hosted on win64, so we could use one artifact with support for both targets, but currently this doesn't work because of cross-compilation issues in some crates. This patch maintains the previous separation between win32 and win64 rust toolchains until that can be addressed. MozReview-Commit-ID: GRiJml8CtzO --HG-- extra : rebase_source : 09a3698ce7f9a8b5f2b5d9b5a1fde9c05dc6b540
2017-09-13 02:30:19 +03:00
]
toolchain-alias: linux64-rust-android
toolchain-artifact: public/build/rustc.tar.xz
linux64-sccache:
description: "sccache toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(sccache)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 1800
run:
using: toolchain-script
script: build-sccache.sh
resources:
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-artifact: public/build/sccache2.tar.xz
toolchains:
- linux64-rust-1.28
linux64-rust-size:
description: "rust-size toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(rust-size)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 1800
run:
using: toolchain-script
script: build-rust-size.sh
resources:
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-artifact: public/build/rust-size.tar.xz
toolchains:
- linux64-rust-1.28
linux64-gn:
description: "gn toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(gn)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 1800
run:
using: toolchain-script
script: build-gn-linux.sh
tooltool-downloads: public
resources:
- 'taskcluster/scripts/misc/tooltool-download.sh'
- 'taskcluster/scripts/misc/build-gn-common.sh'
toolchain-artifact: public/build/gn.tar.xz
run-on-projects:
- trunk
- try
toolchains:
- linux64-gcc-4.9
linux64-tup:
description: "tup toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(tup)
tier: 2
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
max-run-time: 3600
run:
using: toolchain-script
script: build-tup-linux.sh
resources:
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-artifact: public/build/tup.tar.xz
run-on-projects:
- trunk
- try
toolchains:
- linux64-gcc-4.9
linux64-upx:
description: "UPX build for MinGW32 Cross Compile"
treeherder:
kind: build
platform: toolchains/opt
symbol: TMW(upx)
tier: 2
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
docker-image: {in-tree: mingw32-build}
max-run-time: 3600
run:
using: toolchain-script
script: build-upx.sh
toolchain-artifact: public/build/upx.tar.xz
linux64-wine:
description: "Wine build for MinGW32 Cross Compile"
treeherder:
kind: build
platform: toolchains/opt
symbol: TMW(wine)
tier: 2
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
docker-image: {in-tree: mingw32-build}
max-run-time: 10800
run:
using: toolchain-script
script: build-wine.sh
toolchain-artifact: public/build/wine.tar.xz
linux64-mingw32-gcc:
description: "GCC toolchain build for MinGW32 Cross Compile"
treeherder:
kind: build
platform: toolchains/opt
symbol: TMW(mingw32-gcc)
tier: 2
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
docker-image: {in-tree: mingw32-build}
max-run-time: 10800
run:
using: toolchain-script
script: build-gcc-mingw32.sh
resources:
- 'build/unix/build-gcc/build-gcc.sh'
toolchain-artifact: public/build/mingw32.tar.xz
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-07 00:37:49 +03:00
fetches:
fetch:
- binutils-2.27
- gcc-6.4.0
- gmp-5.1.3
- isl-0.15
- mpc-0.8.2
- mpfr-3.1.5
linux64-mingw32-nsis:
description: "NSIS build for MinGW32 Cross Compile"
treeherder:
kind: build
platform: toolchains/opt
symbol: TMW(mingw32-nsis)
tier: 2
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
docker-image: {in-tree: mingw32-build}
max-run-time: 3600
run:
using: toolchain-script
script: build-mingw32-nsis.sh
resources:
- 'build/unix/build-gcc/build-gcc.sh'
- 'taskcluster/scripts/misc/build-gcc-mingw32.sh'
toolchain-artifact: public/build/nsis.tar.xz
toolchains:
- linux64-mingw32-gcc
linux64-mingw32-fxc2:
description: "fxc2.exe build for MinGW32 Cross Compile"
treeherder:
kind: build
platform: toolchains/opt
symbol: TMW(mingw32-fxc2)
tier: 2
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
docker-image: {in-tree: mingw32-build}
max-run-time: 1800
run:
using: toolchain-script
script: build-mingw32-fxc2.sh
resources:
- 'build/unix/build-gcc/build-gcc.sh'
- 'taskcluster/scripts/misc/build-gcc-mingw32.sh'
toolchain-artifact: public/build/fxc2.tar.xz
toolchains:
- linux64-mingw32-gcc