[tor-commits] [tor-browser-build/master] Bug 40314: Add commands to check for needed toolchain updates

sysrqb at torproject.org sysrqb at torproject.org
Fri Jul 2 17:46:06 UTC 2021


commit 7b518eaf06e16537fd8447f0a0cf0fc42efa1c98
Author: Nicolas Vigier <boklm at torproject.org>
Date:   Wed Jun 23 17:43:07 2021 +0200

    Bug 40314: Add commands to check for needed toolchain updates
    
    The following commands can be used to check needed toolchain updates to
    build Firefox for Linux, Windows or macOS:
    
      make list_toolchain_updates-firefox-linux
      make list_toolchain_updates-firefox-windows
      make list_toolchain_updates-firefox-macos
---
 Makefile                                       |   9 ++
 projects/firefox/config                        |  10 ++
 projects/firefox/list_toolchain_updates_checks | 194 +++++++++++++++++++++++++
 projects/macosx-toolchain/config               |   6 +-
 4 files changed, 216 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 94010c1..42ac282 100644
--- a/Makefile
+++ b/Makefile
@@ -204,6 +204,15 @@ dmg2mar-alpha: submodule-update
 list_toolchain_updates-fenix: submodule-update
 	$(rbm) build fenix --step list_toolchain_updates --target nightly --target torbrowser-android-armv7
 
+list_toolchain_updates-firefox-linux: submodule-update
+	$(rbm) build firefox --step list_toolchain_updates --target nightly --target torbrowser-linux-x86_64
+
+list_toolchain_updates-firefox-windows: submodule-update
+	$(rbm) build firefox --step list_toolchain_updates --target nightly --target torbrowser-windows-x86_64
+
+list_toolchain_updates-firefox-macos: submodule-update
+	$(rbm) build firefox --step list_toolchain_updates --target nightly --target torbrowser-osx-x86_64
+
 list_toolchain_updates-android-components: submodule-update
 	$(rbm) build android-components --step list_toolchain_updates --target nightly --target torbrowser-android-armv7
 
diff --git a/projects/firefox/config b/projects/firefox/config
index e5ba431..f99ecef 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -39,6 +39,16 @@ steps:
       nightly:
         version: '[% c("abbrev") %]'
 
+  list_toolchain_updates:
+    git_url: https://github.com/mozilla/gecko-dev.git
+    # < 91.0a1
+    git_hash: f351e19360729b351bfc7c1386d6e4ca4ea676e2
+    tag_gpg_id: 0
+    input_files: []
+    var:
+      container:
+        use_container: 0
+
 targets:
   release:
     var:
diff --git a/projects/firefox/list_toolchain_updates_checks b/projects/firefox/list_toolchain_updates_checks
new file mode 100644
index 0000000..6c8b88e
--- /dev/null
+++ b/projects/firefox/list_toolchain_updates_checks
@@ -0,0 +1,194 @@
+#!/bin/bash
+
+# rust
+[% IF c("var/linux");
+     SET toolchain_alias='linux64-rust';
+   ELSIF c("var/windows");
+     SET toolchain_alias='mingw32-rust';
+   ELSIF c("var/osx");
+     SET toolchain_alias='linux64-rust-macos';
+   END; %]
+read -d '' p << 'EOF' || true
+my $d = YAML::XS::LoadFile('taskcluster/ci/toolchain/rust.yml');
+foreach my $t (keys %$d) {
+  if ($d->{$t}{run}{'toolchain-alias'} eq '[% toolchain_alias %]') {
+    my $channel;
+    foreach my $arg (@{$d->{$t}{run}{arguments}}) {
+      if ($arg eq '--channel') {
+        $channel = 1;
+        next;
+      }
+      if ($channel) {
+        print $arg;
+        exit;
+      }
+    }
+  }
+}
+EOF
+needed=$(perl -MYAML::XS -e "$p")
+current='[% pc("rust", "version") %]'
+check_update_needed rust "$needed" "$current"
+
+# cbindgen
+read -d '' p << 'EOF' || true
+if (m/^\\s*cbindgen_min_version\\s*=\\s*Version\\("([^"]+)"\\)/) {
+  print $1;
+  exit;
+}
+EOF
+needed=$(cat build/moz.configure/bindgen.configure | perl -ne "$p")
+current='[% pc("cbindgen", "version") %]'
+check_update_needed cbindgen "$needed" "$current"
+
+
+# nasm
+read -d '' p << 'EOF' || true
+if (m/^\\s*MODERN_NASM_VERSION\\s*=\\s*LooseVersion\\("([^"]+)"\\)/) {
+  print $1;
+  exit;
+}
+EOF
+needed=$(cat python/mozboot/mozboot/base.py | perl -ne "$p")
+current='2.14'
+check_update_needed nasm "$needed" "$current"
+
+
+# clang
+[% IF c("var/linux");
+     SET toolchain_alias='linux64-clang';
+   ELSIF c("var/windows");
+     SET toolchain_alias='linux64-clang-mingw-x64';
+   ELSIF c("var/osx");
+     SET toolchain_alias='macosx64-clang';
+   END; %]
+read -d '' p << 'EOF' || true
+my $d = YAML::XS::LoadFile('taskcluster/ci/toolchain/clang.yml');
+my $clang_toolchain;
+foreach my $t (keys %$d) {
+  if ($d->{$t}{run}{'toolchain-alias'} eq '[% toolchain_alias %]') {
+    foreach my $fetch (@{$d->{$t}{fetches}{fetch}}) {
+      $clang_toolchain = $fetch if $fetch =~ m/^clang-.*/;
+    }
+    last;
+  }
+}
+
+if (!$clang_toolchain) {
+  print STDERR "Error: could not find clang toolchain";
+  exit 1;
+}
+
+my $fetch = YAML::XS::LoadFile('taskcluster/ci/fetch/toolchains.yml');
+print $fetch->{$clang_toolchain}{fetch}{revision};
+EOF
+needed=$(perl -MYAML::XS -e "$p")
+current='[% pc("llvm-project", "git_hash") %]'
+check_update_needed clang "$needed" "$current"
+
+
+# node
+read -d '' p << 'EOF' || true
+if (m/^\\s*NODE_MIN_VERSION\\s*=\\s*StrictVersion\\("([^"]+)"\\)/) {
+  print $1;
+  exit;
+}
+EOF
+needed=$(cat python/mozbuild/mozbuild/nodeutil.py | perl -ne "$p")
+current='[% pc("node", "version") %]'
+check_update_needed node "$needed" "$current"
+
+
+# python
+read -d '' p << 'EOF' || true
+if (m/find_python3_executable\\(min_version\\s*=\\s*"([^"]+)"/) {
+  print $1;
+  exit;
+}
+EOF
+needed=$(cat build/moz.configure/init.configure | perl -ne "$p")
+current=3.6.0
+check_update_needed python "$needed" "$current"
+
+
+[% IF c("var/osx") %]
+# macosx-sdk
+read -d '' p << 'EOF' || true
+my $d = YAML::XS::LoadFile('taskcluster/ci/toolchain/clang.yml');
+my $clang_toolchain;
+foreach my $t (keys %$d) {
+  if ($d->{$t}{run}{'toolchain-alias'} eq 'macosx64-clang') {
+    foreach my $toolchain (@{$d->{$t}{fetches}{toolchain}}) {
+      if ($toolchain =~ m/^macosx64-sdk-(.+)$/) {
+        print $1;
+        exit;
+      }
+    }
+    last;
+  }
+}
+EOF
+needed=$(perl -MYAML::XS -e "$p")
+current='[% pc("macosx-toolchain", "version") %]'
+check_update_needed macos-sdk "$needed" "$current"
+
+# End of macOS checks
+[% END -%]
+
+
+[% IF c("var/windows") %]
+# mingw-w64
+read -d '' p << 'EOF' || true
+my $d = YAML::XS::LoadFile('taskcluster/ci/fetch/toolchains.yml');
+print $d->{'mingw-w64'}{fetch}{revision};
+EOF
+needed=$(perl -MYAML::XS -e "$p")
+current='[% pc("mingw-w64", "git_hash") %]'
+check_update_needed mingw-w64 "$needed" "$current"
+
+
+# llvm-mingw
+read -d '' p << 'EOF' || true
+my $d = YAML::XS::LoadFile('taskcluster/ci/fetch/toolchains.yml');
+print $d->{'llvm-mingw'}{fetch}{revision};
+EOF
+needed=$(perl -MYAML::XS -e "$p")
+current='[% pc("llvm-mingw", "git_hash") %]'
+check_update_needed llvm-mingw "$needed" "$current"
+
+
+# fxc2
+read -d '' p << 'EOF' || true
+my $d = YAML::XS::LoadFile('taskcluster/ci/fetch/toolchains.yml');
+print $d->{fxc2}{fetch}{revision};
+EOF
+needed=$(perl -MYAML::XS -e "$p")
+current='[% pc("fxc2", "git_hash") %]'
+check_update_needed fxc2 "$needed" "$current"
+
+# End of Windows checks
+[% END -%]
+
+
+[% IF c("var/rlbox") %]
+# wasi-sdk
+read -d '' p << 'EOF' || true
+my $d = YAML::XS::LoadFile('taskcluster/ci/fetch/toolchains.yml');
+print $d->{'wasi-sdk'}{fetch}{revision};
+EOF
+needed=$(perl -MYAML::XS -e "$p")
+current='[% pc("wasi-sysroot", "git_hash") %]'
+check_update_needed wasi-sdk "$needed" "$current"
+
+
+# lucetc
+read -d '' p << 'EOF' || true
+my $d = YAML::XS::LoadFile('taskcluster/ci/fetch/toolchains.yml');
+print $d->{'lucetc-source'}{fetch}{revision};
+EOF
+needed=$(perl -MYAML::XS -e "$p")
+current='[% pc("lucetc", "git_hash") %]'
+check_update_needed lucetc "$needed" "$current"
+
+# End RLBox
+[% END -%]
diff --git a/projects/macosx-toolchain/config b/projects/macosx-toolchain/config
index 95f650b..5f9a109 100644
--- a/projects/macosx-toolchain/config
+++ b/projects/macosx-toolchain/config
@@ -1,6 +1,6 @@
 # vim: filetype=yaml sw=2
-filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
-version: 10.11-1
+filename: '[% project %]-[% c("version") %]-1-[% c("var/build_id") %].tar.gz'
+version: 10.11
 var:
   container:
     use_container: 1
@@ -29,7 +29,7 @@ input_files:
   # Instructions on how to create the SDK tarball can be found at:
   # build/macosx/cross-mozconfig.common
   - name: SDK
-    URL: https://people.torproject.org/~gk/mirrors/sources/MacOSX10.11.sdk.tar.bz2
+    URL: 'https://people.torproject.org/~gk/mirrors/sources/MacOSX[% c("version") %].sdk.tar.bz2'
     sha256sum: d11e410d757d023be66d2fe7eaa85a1d232da3ac04f177eff3d8b8275cd9ffca
   - name: clang-source
     project: clang-source





More information about the tor-commits mailing list