Skip to content

Commit 9046688

Browse files
author
cranko
committed
Release commit created with Cranko.
+++ cranko-release-info-v1 [[projects]] qnames = ["tectonic_xdv", "cargo"] version = "0.2.2+20250814" age = 0 [[projects]] qnames = ["tectonic_errors", "cargo"] version = "0.2.1+20250814" age = 0 [[projects]] qnames = ["tectonic_xetex_format", "cargo"] version = "0.3.2+20250814" age = 0 [[projects]] qnames = ["tectonic_status_base", "cargo"] version = "0.2.1+20250814" age = 0 [[projects]] qnames = ["tectonic_io_base", "cargo"] version = "0.4.3+20250814" age = 0 [[projects]] qnames = ["tectonic_geturl", "cargo"] version = "0.3.2+20250814" age = 0 [[projects]] qnames = ["tectonic_docmodel", "cargo"] version = "0.2.2+20250814" age = 0 [[projects]] qnames = ["tectonic_dep_support", "cargo"] version = "0.1.1+20250814" age = 0 [[projects]] qnames = ["tectonic_cfg_support", "cargo"] version = "0.1.4+20250814" age = 0 [[projects]] qnames = ["tectonic_mac_core", "cargo"] version = "0.0.0+20250814" age = 0 [[projects]] qnames = ["tectonic_bundles", "cargo"] version = "0.3.1+20250814" age = 0 [[projects]] qnames = ["tectonic_bridge_png", "cargo"] version = "0.0.0+20250814" age = 0 [[projects]] qnames = ["tectonic_bridge_icu", "cargo"] version = "0.2.1+20250814" age = 0 [[projects]] qnames = ["tectonic_bridge_graphite2", "cargo"] version = "0.2.2+20250814" age = 0 [[projects]] qnames = ["tectonic_bridge_fontconfig", "cargo"] version = "0.0.0+20250814" age = 0 [[projects]] qnames = ["tectonic_bridge_flate", "cargo"] version = "0.1.7+20250814" age = 0 [[projects]] qnames = ["tectonic_bridge_freetype2", "cargo"] version = "0.2.0+20250814" age = 0 [[projects]] qnames = ["tectonic_bridge_harfbuzz", "cargo"] version = "0.2.9+20250814" age = 0 [[projects]] qnames = ["tectonic_bridge_core", "cargo"] version = "0.4.1+20250814" age = 0 [[projects]] qnames = ["tectonic_xetex_layout", "cargo"] version = "0.2.4+20250814" age = 0 [[projects]] qnames = ["tectonic_pdf_io", "cargo"] version = "0.4.1+20250814" age = 0 [[projects]] qnames = ["tectonic_engine_xetex", "cargo"] version = "0.4.4+20250814" age = 0 [[projects]] qnames = ["tectonic_engine_xdvipdfmx", "cargo"] version = "0.4.1+20250814" age = 0 [[projects]] qnames = ["tectonic_engine_spx2html", "cargo"] version = "0.3.2+20250814" age = 0 [[projects]] qnames = ["tectonic_engine_bibtex", "cargo"] version = "0.2.2+20250814" age = 0 [[projects]] qnames = ["tectonic", "cargo"] version = "0.15.0+20250814" age = 0 +++
2 parents 0a8e2f5 + 09b1c14 commit 9046688

File tree

417 files changed

+25540
-15556
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

417 files changed

+25540
-15556
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
name: 'build-and-test'
2+
description: 'Run tectonic build and test'
3+
inputs:
4+
target:
5+
description: "Compilation target to use"
6+
required: true
7+
features:
8+
description: "Extra feature flags to apply"
9+
required: false
10+
default: ""
11+
publish:
12+
description: "Whether to publish compiled binaries"
13+
required: false
14+
default: 'false'
15+
executable:
16+
description: "The executable to invoke. Normally cargo"
17+
required: false
18+
default: cargo
19+
test-flags:
20+
description: "Extra flags to pass to `cargo test`"
21+
required: false
22+
package-flags:
23+
description: "Extra flags to pass to cranko package-released-binaries"
24+
runs:
25+
using: "composite"
26+
steps:
27+
- name: Set feature flags
28+
shell: bash
29+
id: set-feature-flags
30+
run: |
31+
ffs=
32+
33+
if [[ "${{ inputs.features }}" == "_none_" ]] ; then
34+
# We need to always enable a feature for geturl
35+
ffs="--no-default-features --features reqwest"
36+
elif [[ "${{ inputs.features }}" == "_all_" ]] ; then
37+
ffs="--all-features"
38+
else
39+
ffs="--features \"${{ inputs.features }}\""
40+
fi
41+
42+
echo "Cargo features for this build: $ffs"
43+
echo "cargo-features=$ffs" >> "$GITHUB_OUTPUT"
44+
45+
# OK, these have nothing to do with features, but if a build script fails, it
46+
# can be helpful to get a full backtrace.
47+
echo "RUST_BACKTRACE=full" >> "$GITHUB_ENV"
48+
echo "CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG=true" >> "$GITHUB_ENV"
49+
if [[ -n "${{ runner.debug }}" ]]; then
50+
echo "CARGO_VERBOSE=-v" >> "$GITHUB_ENV"
51+
fi
52+
- name: "cargo build for ${{ inputs.target }}"
53+
shell: bash
54+
run: |
55+
${{ inputs.executable }} build --workspace --target ${{ inputs.target }} --release ${{ steps.set-feature-flags.outputs.cargo-features }} $CARGO_VERBOSE
56+
- name: "cargo test"
57+
shell: bash
58+
run: |
59+
${{ inputs.executable }} test --workspace --target ${{ inputs.target }} ${{ inputs.test-flags }} --release ${{ steps.set-feature-flags.outputs.cargo-features }} $CARGO_VERBOSE
60+
- name: "Package test failure files"
61+
id: package-tests
62+
if: ${{ failure() }}
63+
shell: bash
64+
run: |
65+
artifact_dir="test_failures"
66+
mkdir -p "$artifact_dir"
67+
mv *.observed "$artifact_dir" || true
68+
mv *.expected "$artifact_dir" || true
69+
if [ -n "$(ls -A $artifact_dir)" ]; then
70+
echo "failure-artifacts=true" >> "$GITHUB_OUTPUTS"
71+
fi
72+
- name: "Publish packaged test failures"
73+
if: ${{ steps.package-tests.outputs.failure-artifacts }}
74+
uses: actions/upload-artifact@v4
75+
with:
76+
name: test-failures-${{ inputs.target }}
77+
path: test_failures
78+
- name: "Package binaries"
79+
if: ${{ inputs.publish == 'true' }}
80+
shell: bash
81+
run: |
82+
artifact_dir="binary-${{ inputs.target }}"
83+
mkdir -p "$artifact_dir"
84+
cranko cargo package-released-binaries ${{ inputs.package-flags }} -t ${{ inputs.target }} $artifact_dir -- build --target ${{ inputs.target }} --release
85+
- name: "Publish packaged binary artifact(s)"
86+
if: ${{ inputs.publish == 'true' }}
87+
uses: actions/upload-artifact@v4
88+
with:
89+
path: binary-${{ inputs.target }}
90+
name: binary-${{ inputs.target }}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: 'build-setup'
2+
description: 'Generic setup for all builds'
3+
inputs:
4+
toolchain:
5+
description: "Rust toolchain to use"
6+
required: false
7+
default: "stable"
8+
runs:
9+
using: "composite"
10+
steps:
11+
- uses: r7kamura/rust-problem-matchers@v1
12+
- name: "Set up rust"
13+
shell: bash
14+
run: |
15+
rustup set profile minimal
16+
rustup component remove --toolchain=${{ inputs.toolchain }} rust-docs || echo "already removed"
17+
rustup update --no-self-update ${{ inputs.toolchain }}
18+
rustup default ${{ inputs.toolchain }}
19+
# Log versions
20+
rustup -V
21+
rustc -Vv
22+
cargo -V
23+
- name: Install latest Cranko (Ubuntu/macOS)
24+
if: ${{ runner.os != 'Windows' }}
25+
shell: bash
26+
run: |
27+
d="$(mktemp -d /tmp/cranko.XXXXXX)"
28+
cd "$d"
29+
curl --proto '=https' --tlsv1.2 -sSf https://pkgw.github.io/cranko/fetch-latest.sh | sh
30+
echo "PATH=$d:$PATH" >> "$GITHUB_ENV"
31+
- name: Install latest Cranko (Windows)
32+
if: ${{ runner.os == 'Windows' }}
33+
shell: pwsh
34+
run: |
35+
$d = Join-Path $Env:Temp cranko-$(New-Guid)
36+
[void][System.IO.Directory]::CreateDirectory($d)
37+
cd $d
38+
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
39+
iex ((New-Object System.Net.WebClient).DownloadString('https://pkgw.github.io/cranko/fetch-latest.ps1'))
40+
Add-Content -Value "PATH=${d};$Env:PATH" -Path $Env:GITHUB_ENV -Encoding utf8
41+
- name: Install release artifact
42+
uses: actions/download-artifact@v4
43+
with:
44+
name: release-bundle
45+
path: ${{ github.workspace }}/release-bundle
46+
- name: Restore release commit
47+
shell: bash
48+
run: |
49+
git switch -c release
50+
git pull --ff-only $GITHUB_WORKSPACE/release-bundle/release.bundle
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: 'deploy-setup'
2+
description: 'Generic setup for deployment jobs'
3+
inputs:
4+
is-dev:
5+
description: "Whether we're running a dev deployment"
6+
required: true
7+
is-release:
8+
description: "Whether we're running a release deployment"
9+
required: true
10+
setup-git:
11+
description: "Whether to set up git actions"
12+
required: false
13+
default: 'false'
14+
outputs:
15+
top-level:
16+
description: "Whether we're continuous, rc, or a new version"
17+
value: ${{ steps.set-toplevel.outputs.top-level }}
18+
runs:
19+
using: "composite"
20+
steps:
21+
- name: Install all artifacts
22+
uses: actions/download-artifact@v4
23+
- name: Restore release commit
24+
shell: bash
25+
run: |
26+
git switch -c release
27+
git pull --ff-only $GITHUB_WORKSPACE/release-bundle/release.bundle
28+
- name: Install latest Cranko (Ubuntu)
29+
if: ${{ runner.os == 'Linux' }}
30+
shell: bash
31+
run: |
32+
d="$(mktemp -d /tmp/cranko.XXXXXX)"
33+
cd "$d"
34+
curl --proto '=https' --tlsv1.2 -sSf https://pkgw.github.io/cranko/fetch-latest.sh | sh
35+
echo "PATH=$d:$PATH" >> "$GITHUB_ENV"
36+
# We determine a "toplevel" release mode that affects things like updates to the
37+
# book. The `top-level` variable has three settings:
38+
#
39+
# - "latest" if this is continuous deployment/delivery, i.e. a push to the
40+
# `master` branch. In this case we update things like the book under the
41+
# version code "latest"
42+
# - "skip" if this is an RC update that does *not* update the main `tectonic`
43+
# project. In this case we do not update things.
44+
# - Otherwise, the text of the variable is the version string of a new official
45+
# release of the `tectonic` project. Things like the book should be updated
46+
# with a real version number.
47+
#
48+
# The boolean parameters stringify to `True` or `False`
49+
- name: "Set toplevel release mode"
50+
id: set-toplevel
51+
shell: bash
52+
run: |
53+
if [[ -z $GITHUB_TOKEN ]] ; then
54+
>&2 echo '$GITHUB_TOKEN is unset, skipping deployment'
55+
version_text=skip
56+
elif [[ "$IS_DEV" == "true" ]] ; then
57+
version_text=latest
58+
elif cranko show if-released --exit-code tectonic ; then
59+
version_text="$(cranko show version tectonic)"
60+
else
61+
version_text=skip
62+
fi
63+
64+
echo "toplevel version: $IS_DEV, $IS_RELEASE => $version_text"
65+
66+
# `set -x` messes up `setvariable` behavior:
67+
set +x
68+
echo "top-level=$version_text" >> "$GITHUB_OUTPUT"
69+
env:
70+
IS_DEV: ${{ inputs.is-dev }}
71+
IS_RELEASE: ${{ inputs.is-release }}
72+
- name: "Set up Git actions"
73+
shell: bash
74+
run: |
75+
cranko github install-credential-helper
76+
git config --global user.email "[email protected]"
77+
git config --global user.name "Tectonic CI"
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: 'pkgconfig-deps'
2+
description: 'Install Tectonic pkg-config dependencies'
3+
inputs:
4+
install-all-deps:
5+
description: "Whether to install harfbuzz and other possibly-vendored dependencies"
6+
required: false
7+
default: 'false'
8+
runs:
9+
using: "composite"
10+
steps:
11+
- name: "Install pkg-config dependencies (Ubuntu)"
12+
if: ${{ runner.os == 'Linux' }}
13+
shell: bash
14+
run: |
15+
# libfuse2 here is to support the AppImage build associated with
16+
# the "primary" Linux artifact.
17+
pkgs="
18+
libgraphite2-dev
19+
libfontconfig1-dev
20+
libfuse2
21+
libicu-dev
22+
libssl-dev
23+
openssl
24+
zlib1g-dev"
25+
if [[ "${{ inputs.install-all-deps }}" == "true" ]] ; then
26+
pkgs="$pkgs libharfbuzz-dev"
27+
fi
28+
29+
sudo apt-get update
30+
sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y $pkgs
31+
- name: "Install pkg-config dependencies (macOS)"
32+
if: ${{ runner.os == 'macOS' }}
33+
shell: bash
34+
run: |
35+
pkgs="
36+
freetype
37+
graphite2
38+
icu4c
39+
libpng
40+
openssl"
41+
if [[ $INSTALL_ALL_DEPS == True ]] ; then
42+
pkgs="$pkgs harfbuzz"
43+
fi
44+
45+
brew install $pkgs
46+
cellar=$(brew --cellar)
47+
icupcdir="$(echo $cellar/icu4c*/*/lib/pkgconfig)"
48+
echo "PKG_CONFIG_PATH=$icupcdir" >> "$GITHUB_ENV"
49+
- name: "Set MSYS64 paths (Windows)"
50+
if: ${{ runner.os == 'Windows' }}
51+
shell: pwsh
52+
run: Add-Content -Value "PATH=C:\msys64\usr\bin;C:\msys64\mingw64\bin;$Env:PATH" -Path $Env:GITHUB_ENV -Encoding utf8
53+
- name: "Install pkg-config dependencies (Windows)"
54+
if: ${{ runner.os == 'Windows' }}
55+
shell: bash
56+
run: |
57+
pacman -S --noconfirm \
58+
mingw-w64-x86_64-toolchain \
59+
mingw-w64-x86_64-pkgconf \
60+
mingw-w64-x86_64-fontconfig \
61+
mingw-w64-x86_64-freetype \
62+
mingw-w64-x86_64-icu
63+
# Format file locking issue workaround:
64+
echo "RUST_TEST_THREADS=1" >> "$GITHUB_ENV"
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: 'vcpkg-deps'
2+
description: 'Install Tectonic vcpkg dependencies'
3+
inputs:
4+
target:
5+
description: "Compilation target"
6+
required: true
7+
vcpkg_cache:
8+
description: "Root directory for vcpkg cache"
9+
required: false
10+
default: ${{ github.workspace }}/target/vcpkg-cache
11+
runs:
12+
using: "composite"
13+
steps:
14+
- name: "Add target ${{ inputs.target }}"
15+
shell: bash
16+
run:
17+
rustup target add ${{ inputs.target }}
18+
- name: "Install vcpkg dependencies (Ubuntu)"
19+
if: ${{ runner.os == 'Linux' }}
20+
shell: bash
21+
run: |
22+
sudo apt-get update
23+
sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y \
24+
autoconf-archive
25+
- name: "Install vcpkg dependencies (macOS)"
26+
if: ${{ runner.os == 'macOS' }}
27+
shell: bash
28+
run: brew install autoconf-archive automake libtool pkg-config
29+
- name: "Install cargo vcpkg"
30+
shell: bash
31+
run: cargo install --git https://github.com/mcgoo/cargo-vcpkg --branch master cargo-vcpkg
32+
- name: "Load vcpkg cache"
33+
uses: actions/cache@v4
34+
with:
35+
path: ${{ inputs.vcpkg_cache }}
36+
key: ${{ runner.os }}-${{ inputs.target }}-${{ hashFiles('Cargo.toml') }}
37+
restore-keys: |
38+
${{ runner.os }}-${{ inputs.target }}-
39+
- name: "Ensure cache dir exists"
40+
shell: bash
41+
run: |
42+
mkdir -p "${{ inputs.vcpkg_cache }}"
43+
- name: "Build vcpkg deps"
44+
shell: bash
45+
run: cargo vcpkg -v build --target ${{ inputs.target }}
46+
env:
47+
VCPKG_DEFAULT_BINARY_CACHE: ${{ inputs.vcpkg_cache }}

0 commit comments

Comments
 (0)