mirror of
https://github.com/harvard-edge/cs249r_book.git
synced 2026-04-28 16:48:30 -05:00
chore: bump Quarto to 1.9.27 and R to 4.5.2
- Quarto 1.9.27: Linux (.deb), Windows (direct download; Scoop Extras has 1.8.27) - R 4.5.2: Linux (CRAN jammy-cran40), Windows (Scoop main/r) - Baremetal: quarto-actions/setup for both Linux and Windows - Remove ggrepel version pin (R 4.5.x supports ggrepel 0.9.7) - Update docs: BUILD.md, CONTAINER_BUILDS.md, docker READMEs
This commit is contained in:
6
.github/docker/Dockerfile
vendored
6
.github/docker/Dockerfile
vendored
@@ -1,5 +1,5 @@
|
||||
# Use a base image with R 4.3.2 (supports both ARM64 and AMD64)
|
||||
FROM rocker/r-ver:4.3.2
|
||||
# Use a base image with R 4.5.2 (supports both ARM64 and AMD64)
|
||||
FROM rocker/r-ver:4.5.2
|
||||
# Set non-interactive mode to avoid prompts
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
# ------------------------
|
||||
@@ -18,7 +18,7 @@ RUN apt-get update && apt-get install -y \
|
||||
# 📦 Install Quarto (Auto-detect architecture)
|
||||
# ------------------------
|
||||
RUN ARCH=$(dpkg --print-architecture) && \
|
||||
curl -fsSL "https://github.com/quarto-dev/quarto-cli/releases/download/v1.7.13/quarto-1.7.13-linux-${ARCH}.deb" -o quarto.deb && \
|
||||
curl -fsSL "https://github.com/quarto-dev/quarto-cli/releases/download/v1.9.27/quarto-1.9.27-linux-${ARCH}.deb" -o quarto.deb && \
|
||||
dpkg -i quarto.deb && rm quarto.deb
|
||||
# ------------------------
|
||||
# 🌐 Install Chromium using Quarto's built-in installer
|
||||
|
||||
33
.github/workflows/book-build-baremetal.yml
vendored
33
.github/workflows/book-build-baremetal.yml
vendored
@@ -57,12 +57,12 @@ on:
|
||||
description: 'Version of Quarto to use'
|
||||
required: false
|
||||
type: string
|
||||
default: '1.7.31'
|
||||
default: '1.9.27'
|
||||
r-version:
|
||||
description: 'Version of R to use'
|
||||
required: false
|
||||
type: string
|
||||
default: '4.3.2'
|
||||
default: '4.5.2'
|
||||
quarto-log-level:
|
||||
description: 'Quarto log level'
|
||||
required: false
|
||||
@@ -120,12 +120,12 @@ on:
|
||||
quarto-version:
|
||||
required: false
|
||||
type: string
|
||||
default: '1.7.31'
|
||||
default: '1.9.27'
|
||||
description: 'Version of Quarto to use'
|
||||
r-version:
|
||||
required: false
|
||||
type: string
|
||||
default: '4.3.2'
|
||||
default: '4.5.2'
|
||||
description: 'Version of R to use'
|
||||
artifact_name:
|
||||
required: false
|
||||
@@ -517,29 +517,14 @@ jobs:
|
||||
Write-Output "=== INSTALLING R VIA SCOOP ==="
|
||||
Write-Output "This matches the Windows container setup (Phase 12)"
|
||||
|
||||
Write-Output "📦 Installing R from main bucket..."
|
||||
scoop install main/r
|
||||
Write-Output "📦 Installing R ${{ inputs.r-version }} from main bucket..."
|
||||
scoop install main/r@${{ inputs.r-version }}
|
||||
Write-Output "✅ R installed"
|
||||
|
||||
Write-Output "📊 Verifying R installation..."
|
||||
R.exe --version
|
||||
Write-Output "✅ R installation complete"
|
||||
|
||||
- name: 📦 Install Quarto via Scoop (Windows)
|
||||
if: matrix.enabled && runner.os == 'Windows'
|
||||
shell: pwsh
|
||||
run: |
|
||||
Write-Output "=== INSTALLING QUARTO VIA SCOOP ==="
|
||||
Write-Output "This matches the Windows container setup (Phase 6)"
|
||||
|
||||
Write-Output "📦 Installing Quarto..."
|
||||
scoop install quarto
|
||||
Write-Output "✅ Quarto installed"
|
||||
|
||||
Write-Output "📊 Quarto version:"
|
||||
quarto --version
|
||||
Write-Output "✅ Quarto installation complete"
|
||||
|
||||
- name: 🎨 Install Inkscape via Scoop (Windows)
|
||||
if: matrix.enabled && runner.os == 'Windows'
|
||||
shell: pwsh
|
||||
@@ -588,9 +573,9 @@ jobs:
|
||||
with:
|
||||
python-version: '3.13'
|
||||
|
||||
# === LINUX: Setup Quarto (GitHub Action) ===
|
||||
- name: 📦 Setup Quarto (Linux)
|
||||
if: matrix.enabled && runner.os == 'Linux'
|
||||
# === Setup Quarto (Linux + Windows via quarto-actions) ===
|
||||
- name: 📦 Setup Quarto
|
||||
if: matrix.enabled
|
||||
uses: quarto-dev/quarto-actions/setup@v2
|
||||
with:
|
||||
version: ${{ inputs.quarto-version }}
|
||||
|
||||
@@ -418,17 +418,23 @@ RUN echo "🔄 Verifying TeX Live installation..." && \
|
||||
fi && \
|
||||
echo "✅ TeX Live verification complete (allowing partial failures)"
|
||||
|
||||
# === PHASE 6: R INSTALLATION ===
|
||||
# === PHASE 6: R INSTALLATION (R 4.5 from CRAN) ===
|
||||
RUN echo "🚀 === STARTING R INSTALLATION ===" && \
|
||||
echo "⏰ Estimated time: 1-2 minutes" && \
|
||||
start_time=$(date +%s) && \
|
||||
\
|
||||
echo "📦 Adding CRAN repository for R 4.5..." && \
|
||||
apt-get update && apt-get install -y --no-install-recommends software-properties-common dirmngr && \
|
||||
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc > /dev/null && \
|
||||
add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/" && \
|
||||
apt-get update && \
|
||||
\
|
||||
echo "📦 Installing R and development packages..." && \
|
||||
echo "📋 R packages:" && \
|
||||
echo " - r-base" && \
|
||||
echo " - r-base-dev" && \
|
||||
echo " - r-recommended" && \
|
||||
apt-get update && apt-get install -y \
|
||||
apt-get install -y --no-install-recommends \
|
||||
r-base \
|
||||
r-base-dev \
|
||||
r-recommended && \
|
||||
@@ -526,18 +532,18 @@ RUN echo "🚀 === STARTING QUARTO INSTALLATION ===" && \
|
||||
echo "⏰ Estimated time: 1 minute" && \
|
||||
start_time=$(date +%s) && \
|
||||
\
|
||||
echo "📦 Downloading Quarto 1.7.31..." && \
|
||||
wget -q https://github.com/quarto-dev/quarto-cli/releases/download/v1.7.31/quarto-1.7.31-linux-amd64.deb && \
|
||||
echo "📦 Downloading Quarto 1.9.27..." && \
|
||||
wget -q https://github.com/quarto-dev/quarto-cli/releases/download/v1.9.27/quarto-1.9.27-linux-amd64.deb && \
|
||||
if [ $? -ne 0 ]; then \
|
||||
echo "❌ Failed to download Quarto"; \
|
||||
exit 1; \
|
||||
fi && \
|
||||
echo "📥 Download completed" && \
|
||||
echo "📊 Downloaded file size:" && \
|
||||
ls -lh quarto-1.7.31-linux-amd64.deb && \
|
||||
ls -lh quarto-1.9.27-linux-amd64.deb && \
|
||||
\
|
||||
echo "📦 Installing Quarto..." && \
|
||||
dpkg -i quarto-1.7.31-linux-amd64.deb && \
|
||||
dpkg -i quarto-1.9.27-linux-amd64.deb && \
|
||||
if [ $? -ne 0 ]; then \
|
||||
echo "❌ Failed to install Quarto"; \
|
||||
exit 1; \
|
||||
@@ -545,7 +551,7 @@ RUN echo "🚀 === STARTING QUARTO INSTALLATION ===" && \
|
||||
echo "📦 Quarto installed" && \
|
||||
\
|
||||
echo "🧹 Cleaning up installer..." && \
|
||||
rm quarto-1.7.31-linux-amd64.deb && \
|
||||
rm quarto-1.9.27-linux-amd64.deb && \
|
||||
echo "🧹 Installer cleaned up" && \
|
||||
\
|
||||
end_time=$(date +%s) && \
|
||||
|
||||
@@ -21,7 +21,7 @@ docker/quarto-build/
|
||||
- **TeX Live**: Full distribution (texlive-full)
|
||||
- **R**: R-base with all required packages
|
||||
- **Python**: Python 3.13 with all requirements
|
||||
- **Quarto**: Version 1.7.31
|
||||
- **Quarto**: Version 1.9.27
|
||||
- **Tools**: Inkscape, Ghostscript, fonts
|
||||
- **Dependencies**: All from `tools/dependencies/`
|
||||
|
||||
@@ -94,7 +94,7 @@ The container reduces build times significantly:
|
||||
|
||||
1. **System Dependencies** - Core Ubuntu packages and libraries
|
||||
2. **Inkscape Installation** - SVG to PDF conversion capability
|
||||
3. **Quarto Installation** - Latest Quarto CLI (v1.7.31)
|
||||
3. **Quarto Installation** - Latest Quarto CLI (v1.9.27)
|
||||
4. **TeX Live Installation** - Complete LaTeX distribution
|
||||
5. **Ghostscript Installation** - PDF processing capabilities
|
||||
6. **R Installation** - R base and development packages
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# escape=`
|
||||
# MLSysBook Windows Quarto Build Container (Windows Server 2022)
|
||||
# - PowerShell 7 via ZIP (no MSI)
|
||||
# - Quarto 1.7.31 via ZIP (no MSI)
|
||||
# - Quarto 1.9.27 via Scoop
|
||||
# - Python 3.13.1 + requirements
|
||||
# - Ghostscript + Inkscape (Chocolatey)
|
||||
# - TeX Live 2025.20251008.0+ (pinned version fixes install-tl.zip issue) + packages from tl_packages
|
||||
# - R 4.3.2 + packages via install_packages.R
|
||||
# - R 4.5.2 + packages via install_packages.R
|
||||
# - Verifications: versions, kpsewhich font files, TikZ smoke test
|
||||
|
||||
FROM mcr.microsoft.com/windows/server:ltsc2022
|
||||
@@ -196,12 +196,19 @@ RUN Write-Host '=== STARTING SCOOP INSTALLATION ===' ; `
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# PHASE 6: Install Quarto (Main tool)
|
||||
# Scoop Extras has 1.8.27; we need 1.9.27, so install via direct download
|
||||
# ------------------------------------------------------------
|
||||
RUN Write-Host '=== STARTING QUARTO INSTALLATION ===' ; `
|
||||
Write-Host 'Installing Quarto via Scoop...' ; `
|
||||
scoop install quarto ; `
|
||||
Write-Host 'Downloading Quarto 1.9.27 (not yet in Scoop Extras)...' ; `
|
||||
$quartoZip = 'C:\temp\quarto-1.9.27-win.zip' ; `
|
||||
Invoke-WebRequest -Uri 'https://github.com/quarto-dev/quarto-cli/releases/download/v1.9.27/quarto-1.9.27-win.zip' -OutFile $quartoZip -UseBasicParsing ; `
|
||||
Expand-Archive -Path $quartoZip -DestinationPath 'C:\' -Force ; `
|
||||
$quartoBin = 'C:\quarto-1.9.27\bin' ; `
|
||||
$mach = [Environment]::GetEnvironmentVariable('PATH','Machine') ; `
|
||||
[Environment]::SetEnvironmentVariable('PATH', ($quartoBin + ';' + $mach), 'Machine') ; `
|
||||
$env:PATH = "$quartoBin;$env:PATH" ; `
|
||||
Remove-Item $quartoZip -Force ; `
|
||||
Write-Host '📦 Quarto installed' ; `
|
||||
Write-Host 'Verifying Quarto installation...' ; `
|
||||
quarto --version ; `
|
||||
Write-Host '✅ Quarto installation completed!'
|
||||
|
||||
@@ -267,9 +274,8 @@ RUN Write-Host '=== STARTING VISUAL C++ REDISTRIBUTABLE INSTALLATION ===' ; `
|
||||
# PHASE 12: Install R (Medium complexity)
|
||||
# ------------------------------------------------------------
|
||||
RUN Write-Host '=== STARTING R INSTALLATION ===' ; `
|
||||
Write-Host 'Installing R via Scoop (same as quarto-build workflow)...' ; `
|
||||
Write-Host 'Installing R from main bucket...' ; `
|
||||
scoop install main/r ; `
|
||||
Write-Host 'Installing R 4.5.2 via Scoop (main bucket)...' ; `
|
||||
scoop install main/r@4.5.2 ; `
|
||||
Write-Host '📦 R installed' ; `
|
||||
Write-Host 'Verifying R installation...' ; `
|
||||
R --version ; `
|
||||
|
||||
@@ -6,10 +6,10 @@ This directory contains the Windows Server 2022 container configuration for buil
|
||||
|
||||
- **Base Image**: Windows Server 2022 LTSC
|
||||
- **PowerShell**: 7.4.1 (ZIP install, container-safe)
|
||||
- **Quarto**: 1.7.31 (ZIP install)
|
||||
- **Quarto**: 1.9.27 (Scoop)
|
||||
- **Python**: 3.13.1 + production dependencies
|
||||
- **TeX Live**: 2025 snapshot with required packages
|
||||
- **R**: 4.3.2 + R Markdown packages
|
||||
- **R**: 4.5.2 + R Markdown packages
|
||||
- **Graphics**: Ghostscript + Inkscape (via Chocolatey)
|
||||
|
||||
## 🔧 Key Fixes Applied
|
||||
@@ -69,7 +69,7 @@ This workflow is triggered manually or on a weekly schedule.
|
||||
6. **Python**: 3.13.1 + production requirements
|
||||
7. **Graphics**: Ghostscript + Inkscape
|
||||
8. **TeX Live**: 2025 snapshot + packages
|
||||
9. **R**: 4.3.2 + R Markdown packages
|
||||
9. **R**: 4.5.2 + R Markdown packages
|
||||
10. **Cleanup**: Remove temporary files
|
||||
|
||||
## 🔍 Verification Steps
|
||||
|
||||
@@ -52,7 +52,7 @@ By default, Quarto can build the HTML version pretty easily. But **building the
|
||||
|
||||
| Tool | Why It's Needed | Version |
|
||||
|------|------------------|---------|
|
||||
| **Quarto** | The core tool that converts the `.qmd` files into HTML/PDF | 1.7.31+ |
|
||||
| **Quarto** | The core tool that converts the `.qmd` files into HTML/PDF | 1.9.27+ |
|
||||
| **Python** | Required for Book Binder CLI and build scripts | 3.9+ |
|
||||
| **Python packages** | Dependencies (see `tools/dependencies/requirements.txt`) | See below |
|
||||
| **R** | Some chapters include R code chunks and R-based plots | 4.0+ |
|
||||
@@ -98,8 +98,8 @@ For the complete list, see `tools/dependencies/requirements.txt` and `pyproject.
|
||||
Quarto is what drives the entire build process.
|
||||
|
||||
```sh
|
||||
wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.7.31/quarto-1.7.31-linux-amd64.deb
|
||||
sudo dpkg -i quarto-1.7.31-linux-amd64.deb
|
||||
wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.9.27/quarto-1.9.27-linux-amd64.deb
|
||||
sudo dpkg -i quarto-1.9.27-linux-amd64.deb
|
||||
```
|
||||
|
||||
Test it with:
|
||||
|
||||
@@ -97,7 +97,7 @@ gh workflow run quarto-build-container.yml --field os=ubuntu-latest --field form
|
||||
- **TeX Live**: Full distribution (texlive-full)
|
||||
- **R**: R-base with all required packages
|
||||
- **Python**: Python 3.13 with all requirements
|
||||
- **Quarto**: Version 1.7.31
|
||||
- **Quarto**: Version 1.9.27
|
||||
- **Tools**: Inkscape, Ghostscript, fonts
|
||||
|
||||
#### Windows Container
|
||||
@@ -105,7 +105,7 @@ gh workflow run quarto-build-container.yml --field os=ubuntu-latest --field form
|
||||
- **TeX Live**: MiKTeX distribution
|
||||
- **R**: R-base with all required packages
|
||||
- **Python**: Python 3.x with all requirements
|
||||
- **Quarto**: Version 1.7.31
|
||||
- **Quarto**: Version 1.9.27
|
||||
- **Tools**: Inkscape, Ghostscript, Chocolatey package manager
|
||||
|
||||
### Environment Variables
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
required_packages <- c(
|
||||
"downlit", # Required for code linking in Quarto
|
||||
"ggplot2", # Visualization package
|
||||
"ggrepel", # Visualization package
|
||||
"ggrepel", # Visualization package (pinned below for R < 4.5)
|
||||
"knitr", # Needed for Quarto rendering
|
||||
"png", # PNG support
|
||||
"rmarkdown", # Markdown rendering in R
|
||||
|
||||
Reference in New Issue
Block a user