diff options
-rw-r--r-- | .github/workflows/linux.yml | 8 | ||||
-rw-r--r-- | .github/workflows/mac.yml | 8 | ||||
-rw-r--r-- | .github/workflows/windows.yml | 8 | ||||
-rw-r--r-- | python/servo/build_commands.py | 4 | ||||
-rw-r--r-- | python/servo/testing_commands.py | 39 |
5 files changed, 46 insertions, 21 deletions
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index d38b88acdce..57c3cb36812 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -78,6 +78,14 @@ jobs: - name: Unit tests if: ${{ inputs.unit-tests }} run: python3 ./mach test-unit --release --with-${{ env.LAYOUT }} + - name: Rename build timing + run: cp -r target/cargo-timings target/cargo-timings-linux-${{ env.LAYOUT }} + - name: Archive build timing + uses: actions/upload-artifact@v3 + with: + name: cargo-timings + # Using a wildcard here ensures that the archive includes the path. + path: target/cargo-timings-*-${{ env.LAYOUT }} - name: Lockfile check run: ./etc/ci/lockfile_changed.sh - name: Package diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index c169df3693f..038bd2d8174 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -70,6 +70,14 @@ jobs: run: python3 ./mach package --release - name: Package smoketest run: ./etc/ci/macos_package_smoketest.sh target/release/servo-tech-demo.dmg + - name: Rename build timing + run: cp -r target/cargo-timings target/cargo-timings-macos-${{ env.LAYOUT }} + - name: Archive build timing + uses: actions/upload-artifact@v3 + with: + name: cargo-timings + # Using a wildcard here ensures that the archive includes the path. + path: target/cargo-timings-*-${{ env.LAYOUT }} - name: Upload package uses: actions/upload-artifact@v3 with: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 2175ead5f58..db6f5c76856 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -72,6 +72,14 @@ jobs: - name: Unit tests if: ${{ inputs.unit-tests }} run: python mach test-unit --release --with-${{ env.LAYOUT }} + - name: Rename build timing + run: cp C:\a\servo\servo\target\cargo-timings C:\a\servo\servo\target\cargo-timings-windows-${{ env.LAYOUT }} -Recurse + - name: Archive build timing + uses: actions/upload-artifact@v3 + with: + name: cargo-timings + # Using a wildcard here ensures that the archive includes the path. + path: target/cargo-timings-*-${{ env.LAYOUT }} - name: Package run: python mach package --release - name: Upload Package diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py index 30d6618f19b..1cf23237807 100644 --- a/python/servo/build_commands.py +++ b/python/servo/build_commands.py @@ -393,9 +393,7 @@ class MachCommands(CommandBase): expr = "s#libdir=.*#libdir=%s#g" % gst_lib_path subprocess.call(["perl", "-i", "-pe", expr, pc]) - # https://internals.rust-lang.org/t/exploring-crate-graph-build-times-with-cargo-build-ztimings/10975 - # Prepend so that e.g. `-Ztimings` (which means `-Ztimings=info,html`) - # given on the command line can override it + # Gather Cargo build timings (https://doc.rust-lang.org/cargo/reference/timings.html). opts = ["--timings"] + opts if very_verbose: diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 291a00b15c0..1090ec65cab 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -245,24 +245,27 @@ class MachCommands(CommandBase): packages.discard('stylo') - if len(packages) > 0 or len(in_crate_packages) > 0: - args = [] - for crate in packages: - args += ["-p", "%s_tests" % crate] - for crate in in_crate_packages: - args += ["-p", crate] - args += test_patterns - - if nocapture: - args += ["--", "--nocapture"] - - err = self.run_cargo_build_like_command("bench" if bench else "test", - args, - env=self.build_env(test_unit=True), - with_layout_2020=with_layout_2020, - **kwargs) - if err: - return err + # Return if there is nothing to do. + if len(packages) == 0 and len(in_crate_packages) == 0: + return 0 + + # Gather Cargo build timings (https://doc.rust-lang.org/cargo/reference/timings.html). + args = ["--timings"] + for crate in packages: + args += ["-p", "%s_tests" % crate] + for crate in in_crate_packages: + args += ["-p", crate] + args += test_patterns + + if nocapture: + args += ["--", "--nocapture"] + + return self.run_cargo_build_like_command( + "bench" if bench else "test", + args, + env=self.build_env(test_unit=True), + with_layout_2020=with_layout_2020, + **kwargs) @Command('test-content', description='Run the content tests', |