1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2026-04-25 23:11:02 +02:00
Commit Graph

31 Commits

Author SHA1 Message Date
Martin Geisler 17a04070ed Don’t automatically install recommended packages (#2923)
Co-authored-by: Michael Kerscher <kerscher@google.com>
2025-10-01 20:33:48 +00:00
Martin Geisler 11f2831933 Optimize apt update calls (#2916)
This introduces a new local GitHub action for installing Debian
packages. I noticed that it often takes several minutes to install a few
small packages, and a large part of that time is spent updating the man
page database:

    2025-09-20T11:39:25.3001853Z Setting up yapf3 (0.33.0-1) ...
2025-09-20T11:39:25.3045329Z Processing triggers for libc-bin
(2.39-0ubuntu8.5) ...
2025-09-20T11:39:25.4420933Z Processing triggers for man-db
(2.12.0-4build2) ...
2025-09-20T11:41:42.8522570Z Processing triggers for install-info
(7.1-3build2) ...

Excluding the documentation files should make the man-db run much
faster. Compare these two runs:

*
[Before](https://github.com/google/comprehensive-rust/actions/runs/17879390708/job/50845084995):
2m 41s.
*
[After](https://github.com/google/comprehensive-rust/actions/runs/17880418155/job/50847334471):
11s.
2025-09-22 09:33:42 +02:00
michael-kerscher f4a11a4fc5 Speed up rust crate installs in workflow by using cargo-binstall (#2915)
When cargo xtask install-tools --binstall is used, precompiled binaries
are fetched if available.
Triggers a regular (compilation) install if binary releases do not
exist.

This is now configured to be used by the CI to speed up the build and
deploy workflows where possible.

Currently binary packages exist for:
- mdbook
- mdbook-pandoc
2025-09-19 13:28:03 +02:00
Andrew Walbran fc6e5c7526 Update to Rust 2024 edition. (#2658) 2025-05-23 19:03:03 +01:00
Eric Githinji 91f6de64df Xtask (#2688)
### Background
Comprehensive Rust requires a number of tools to be installed (e.g.
mdbook and mdbook-course). As mentioned in #2509 (and discussed in
#2469) it would be nice to have a cross platform command for installing
these dependencies. Currently these are installed using a shell script
(`install-mdbook.sh`) but this isn't truly cross platform e.g. for
Windows users.

### Xtask

[xtask](https://github.com/matklad/cargo-xtask) outlines an approach for
automating tasks in a Rust project. It involves using cargo's aliasing
feature to allow us to run commands like `cargo xtask <some task>` to
perform adhoc tasks via a Rust binary that we might otherwise need a
shell script for.

In this PR we add support for a `cargo xtask install-tools` command that
will replace the `install-mdbook.sh` script and install the dependent
tools. We can potentially extend it to support for other tasks e.g.
`cargo xtask fmt`.

---------

Co-authored-by: Eric Githinji <egithinji@google.com>
2025-03-14 12:24:08 +01:00
michael-kerscher 715a23e7a8 Create install-mdbook.sh and lock to the current versions used in the CI (#2626)
Move mdbook installation into a script and use exact versions from the
CI.
Update README.md to instruct developers to use the same versions as the
CI to sync both environments.
This is related to #2620 and it fixes #2588
2025-02-05 15:33:28 +01:00
Max Heller bcbe6b0876 Fix incorrectly hidden lines in Rust code blocks in PDFs (#2565)
Upgrades `mdbook-pandoc` to pull in a fix relating to hidden lines in
Rust code blocks. The bug was causing lines like `#[test]` to be hidden
when they should not have been.

## HTML
<img width="500" alt="Screenshot 2025-01-18 at 12 50 26 PM"
src="https://github.com/user-attachments/assets/c3363696-6ab6-4537-8285-fad047cb384f"
/>

## PDF (before)
<img width="500" alt="Screenshot 2025-01-18 at 12 51 25 PM"
src="https://github.com/user-attachments/assets/19539a9b-db24-41c5-98be-87d5a6228423"
/>

## PDF (after)
<img width="500" alt="Screenshot 2025-01-18 at 12 52 25 PM"
src="https://github.com/user-attachments/assets/b19f1e6c-d717-449e-8799-c56d9b5401ca"
/>
2025-01-19 01:45:22 -05:00
Max Heller 9493a8deb7 Fix missing images and Arabic fonts in course PDFs (#2544)
Let's give #2531 another try
- Fixes missing images in PDFs (those specified as <img> elements)
- Configures Arabic fonts

[The
fix](https://github.com/max-heller/mdbook-pandoc/pull/144/files#diff-b17b0f99aa22ee1ccf99778ca74c3c7a27af87f41544194cc95f82c012e8a507)
for the Persian translation issue, if you're curious.
2025-01-14 17:23:30 +01:00
Martin Geisler 76e2cfe53e Revert "Upgrade mdbook-pandoc to fix missing images in PDFs" (#2540)
Reverts google/comprehensive-rust#2531

This accidentally broke the build because the Persian translation
doesn't build with this version.
2025-01-05 11:15:20 -05:00
Max Heller d4cc29ff0e Upgrade mdbook-pandoc to fix missing images in PDFs (#2531)
[`mdbook-pandoc`
0.8](https://github.com/max-heller/mdbook-pandoc/releases/tag/v0.8.0)
now supports `<img>` elements in raw HTML, fixing a few missing images
in the PDF versions of the course.
2025-01-02 08:52:42 +00:00
Max Heller df2076b111 Upgrade mdbook-pandoc and disable it except during CI workflows (#2212)
Implements the approach summarized in
https://github.com/google/mdbook-i18n-helpers/issues/200#issuecomment-2220035461
to disable running `mdbook-pandoc` even if it is available to avoid
dependency-related issues during local rendering.

Should address https://github.com/google/comprehensive-rust/issues/1911
since `mdbook-pandoc` will no longer run locally.
2024-07-18 13:01:25 +02:00
Andrew Walbran d1b82a8e5c Diff translations on every PR (#2214)
This uses a new mode of `i18n-report` to summarise the differences in
translations as an action on each PR.
2024-07-13 12:26:16 +01:00
Andrew Walbran c39b6b01d7 Publish report of translation status. (#2190) 2024-07-08 10:51:14 -04:00
Andrew Walbran 2de95fa2de Fix publish workflow (#2171)
Need to `apt-get update` before `apt-get install`.
2024-06-25 09:42:16 -04:00
Darkhan Kubigenov f337c0f70d Upgrade dependencies in github actions (#2101) 2024-05-28 10:49:12 +02:00
Max Heller 97ac0e7caf set fallback fonts for PDF rendering (#1728)
Once a new version of Pandoc is released that includes
https://github.com/jgm/pandoc/pull/9204 and
https://github.com/jgm/pandoc/pull/9353 (both merged), this will fix the
emoji and symbol rendering issues in #1708.

It doesn't seem to be possible to set fallback fonts with
`luatexja-fontspec` (used to configure CJK fonts), which results in some
missing symbols in the translations but at least renders the emoji
properly.

Closes #1708
2024-03-07 14:37:52 +01:00
Martin Geisler c509dbd9e4 Always install and run mdbook-pandoc (#1713)
Before, we only installed and ran `mdbook-pandoc` when publishing the
course — which means that a PR change could accidentally break the
publish workflow. We now test that it works on every PR.

From a discussion in #1704.
2024-03-04 16:25:58 +01:00
Martin Geisler 0e8d3e77c2 Update mdbook and mdbook-i18n-helpers (#1658)
This also ports over the `mdbook` theme changes between version 0.4.35
and 0.4.36.
2024-01-05 15:56:18 +01:00
Martin Geisler 031cb4fb89 Update to mdbook-i18n-helpers 0.3.0 (#1460)
This version has much improved support for the translation of code
blocks. See https://github.com/google/mdbook-i18n-helpers/issues/95 for
details.

Most PO files won’t need any update since most of them don’t translate
the comments in the code blocks. Those that do, can run
`mdbook-i18n-normalize` when they feel like it.
2023-11-11 16:10:13 +01:00
Martin Geisler 5fafa4842c Update mdbook to version 0.4.35 (#1302)
This also ports over the latest changes to `book.js` and `index.hbs`.

We probably need to come up with a more systematic way of doing this,
e.g., we could store our changes in a patch and automatically attempt to
apply it onto the latest upstream files.
2023-10-13 16:40:40 +02:00
Martin Geisler 1d658ead10 Update to mdbook-i18n-helpers 0.2.4 (#1263)
This is the newest release of mdbook-i18n-helpers, fully backwards
compatible with the old one.
2023-10-01 23:01:22 -07:00
Dustin J. Mitchell 4815264e2d Add mdbook-course to handle parsing frontmatter (#1224)
In v2 of the course, I'd like to include an estimate of the time to be
spent on each segment in the Markdown file. I think a good place for
such metadata is in the frontmatter.

For review purposes, though, I just want to display that information.
So, this is a start at a new mdbook preprocessor that just separates out
the frontmatter and includes it in a `<pre>` block. Eventually, I'd like
to parse it and put the time in the speaker notes.

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2023-09-20 10:01:53 -04:00
Martin Geisler 38557b142a Use latest mdbook-i18n-helpers in action.yml (#1221)
The new release will allow us to skip untranslatable text in the course,
thus reducing the amount of work and churn for our translators.
2023-09-20 10:38:15 +02:00
Martin Geisler 09d1265cbb Add support for right-to-left languages (#1165)
This updates our `mdbook` version to the latest version in Git. I copied
the `index.hbs` file from that version and back-ported our changes into
it. I checked English and Danish locally and they both look fine.

The new version has support for right-to-left languages:
https://github.com/rust-lang/mdBook/pull/1641.

We have an in-progress Persian translation. Download the `fa.zip`
artifact after building the PR to check how it looks. I checked Persian
locally and it looks mirrored like I expect (but we will need someone
who can read Persian to actually verify this).

Fixes #1164.
2023-09-07 09:50:44 +02:00
Martin Geisler b6d51a7f22 Update mdbook-i18n-helpers to latest version (#1115)
I have created PRs to normalize all PO files to the new version of
mdbook-i18n-helpers. Simultaneously, we need to update the version used
to publish the course.

This is indirectly part of #330.
2023-08-23 12:34:12 -04:00
Martin Geisler 2e92da7acd Update mdbook to 0.4.34 (#1066)
I also updated `book.js` and `index.hbs` to the latest versions while
keeping our local modifications.

I tested this locally with `mdbook serve` for both English and
Brazilian Portuguese and everything seems to work fine.
2023-08-11 15:40:01 +02:00
Andrew Walbran b6f5ba1af0 Run exerciser as mdbook renderer. 2023-04-05 16:28:07 +01:00
Martin Geisler 49bf110b31 Use mdbook-i18n-helpers crate (#552)
The i18n-helpers are now available as a stand-alone crate:
https://crates.io/crates/mdbook-i18n-helpers.

Because we cache the Rust binaries in our GitHub workflows, I bumped
the cache prefix to ensure we use a clean cache. Otherwise, Cargo
won’t install the new binaries in mdbook-i18n-helpers because it sees
the old ones from this repository.
2023-04-05 16:08:11 +02:00
Martin Geisler e366d833d0 Update mdbook to 0.4.28 (#480)
* Update mdbook to 0.4.28

This version contains https://github.com/rust-lang/mdBook/pull/1986 which will allow us to test the code in each translation.

* Fix formatting in Korean translation

The extra code block made `mdbook test` fail.
2023-03-07 10:14:26 +01:00
Martin Geisler 5c03394b31 Lock mdbook and mdbook-svgbob version numbers (#398)
This will help avoid breakage[1] when mdbook and mdbook-svgbob are out
of sync with each other.

[1]: https://github.com/boozook/mdbook-svgbob/issues/25.
2023-02-16 13:39:19 +01:00
Martin Geisler 1f37933b8b Extract common build steps to composite actions (#242)
* Extract common build steps to composite actions

This allows us to repeat ourselves less across the different jobs.

I also tested using a “reusable workflow” to factor out the common
steps. However, this starts a separate job without a shared
filesystem, which in turn requires us to upload/download artifacts
when we want to use them in several jobs. The artifacts are downloaded
one-by-one and this adds delays and extra steps to all jobs.

* Move Rust cache setup to its own build step

This made it easy to consistently setup the caching of our nested
projects via the “workspacs” config key.
2023-01-23 17:08:29 +01:00