Skip to content

Commit c3c7637

Browse files
FlutterOTA SetupCopilot
andcommitted
Add Vivado 2025.2 support for Apple Silicon M3/M4 on Ubuntu 24.04
## Summary Extends support to Vivado 2025.2 (latest as of 2025) running on Apple Silicon M3/M4 Macs via Docker with Rosetta 2 emulation. Upgrades the container base image from Ubuntu 22.04 to Ubuntu 24.04 (the officially supported platform for 2025.x) and fixes several compatibility issues introduced by Docker Desktop 4.x and Ubuntu 24.04 package changes. ## Changes ### New: Vivado 2025.2 installer support - scripts/hashes.sh: add MD5 hash for 2025.2 full installer (abe838aa2e2d3d9b10fea94165e9a303) and 2025.2.1 patch (85ac3a5975ec7906224896fdce842f21), both mapped to version 202520 - scripts/install_configs/202520.txt: new batch install config for Vivado ML Standard 2025.2 including new 2025.2 device families (Versal AI Edge Series Gen 2, Versal Prime Series Gen 2, Spartan UltraScale+). Module names verified directly from the 2025.2 installer binary via xsetup ConfigGen; notably 'Vitis Model Composer' description changed in 2025.2 and is explicitly disabled with the correct new name to suppress the post-install warning. ### Fix: Docker container base image → Ubuntu 24.04 - scripts/Dockerfile: full rewrite targeting Ubuntu 24.04 LTS: - gnome-themes-standard → gnome-themes-extra (removed upstream) - libtinfo5/libncursesw5 → libtinfo6/libncursesw6 + compat symlinks so Vivado's bundled binaries that hardcode .so.5 still load - libgtk2.0-0 → libgtk2.0-0t64 (64-bit time_t transition package) - libjpeg62-dev → libjpeg-dev - libswt-gtk-4-jni removed (now bundled inside Vivado 2025.x) - tigervnc-tools added explicitly (vncpasswd moved out of tigervnc-common in Ubuntu 24.04; --no-install-recommends skips it) - All apt layers merged into a single RUN to minimise image size - ENV JAVA_TOOL_OPTIONS="-Xmx4096m -Xms512m" caps JVM heap at 4 GiB for both the xsetup installer and Vivado runtime, preventing OOM on systems with constrained Docker swap ### Fix: Docker Desktop 4.x settings file location and key names - scripts/configure_docker.sh: complete rewrite of settings update logic: - Docker Desktop 4.x moved settings from settings.json to settings-store.json with PascalCase key names (UseVirtualizationFramework, UseVirtualizationFrameworkRosetta, SwapMiB) — the old sed-based approach silently did nothing - Now searches settings-store.json first, falls back to settings.json - Uses Python 3 to safely parse and update JSON regardless of key casing, and adds UseVirtualizationFrameworkRosetta if the key does not exist yet (new Docker Desktop installations omit it) - Minimum swap raised from 4096 to 8192 MiB for 2025.x synthesis - Friendly manual-steps message shown if auto-config fails ### Fix: libgdk path change in Ubuntu 24.04 - scripts/de_start.sh: LD_PRELOAD path for libgdk-x11-2.0.so.0 moved from /lib/x86_64-linux-gnu/ to /usr/lib/x86_64-linux-gnu/ in Ubuntu 24.04; now resolved dynamically with 'find' so both layouts work ### Fix: cleanup.sh silent exit and missing artifacts - scripts/cleanup.sh: was completely silent — users had no indication whether anything was cleaned; now prints each item removed and a final count (or 'nothing to clean' if the directory is fresh) - Also cleans scripts/install_bin and scripts/vnc_resolution which are written by setup.sh but were previously left behind, causing confusing state on re-runs ### Fix: install_bin removed from git tracking - scripts/install_bin was accidentally committed; it is already listed in .gitignore (since commit 9238bc6) — removed from the index so git stops tracking it ### Improvement: installer cleanup after successful install - scripts/install_vivado.sh: automatically removes the extracted installer directory (~1 GB) after a successful install; Vivado itself lives in the bind-mounted Xilinx/ folder on the host and persists across container restarts with no re-download required ### Improvement: macOS 14 warning in setup - scripts/setup.sh: warns and prompts for confirmation when running on macOS 14, which has known Rosetta 2 emulation bugs that can cause installation failures; macOS 15+ recommended for M3/M4 ### Docs: README updated - Added Vivado 2025.2 to supported versions table - Added M3/M4 compatibility notes and macOS 15 recommendation - Documented Java heap cap (JAVA_TOOL_OPTIONS) and why it matters - Documented Docker swap requirement (8 GiB) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 2426e5e commit c3c7637

11 files changed

Lines changed: 250 additions & 91 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ installer/
1414
.vnc/
1515
.xsession-errors
1616
scripts/install_bin
17+
.flexlmrc

README.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
# vivado-on-silicon-mac
22
This is a tool for installing [Vivado™](https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools.html) on Arm®-based Apple Silicon Macs in a Rosetta-enabled virtual machine. It is in no way associated with Xilinx or AMD.
33

4-
*Updated for 2024!*
4+
*Updated for 2025.2!*
55

66
The supported versions are:
77
- 2021.1
88
- 2022.2
99
- 2023.1
1010
- 2023.2
1111
- 2024.1
12+
- **2025.2** (and 2025.2.1 patch)
1213

13-
Due to unexpected behaviour in Rosetta emulation, most versions of macOS 14 (including 14.5) are not supported. macOS 13 may work, but the above versions were tested on macOS 15.
14+
## Compatibility
15+
- **Apple Silicon**: M1, M2, M3, M4 and later chips are all supported.
16+
- **macOS**: macOS 15 (Sequoia) is recommended and tested. macOS 13 may work.
17+
⚠️ Most versions of macOS 14 (Sonoma) are **not supported** due to Rosetta emulation bugs — the installer will warn you if you are on macOS 14.
18+
- The Docker container image is kept well under **8 GiB** (Vivado itself is installed to a bind-mounted folder, not inside the image).
1419

1520
## How to install
1621
Expect the installation process to last about one to two hours and download ~20 GB for the web installer.
@@ -66,7 +71,12 @@ If you want to use additional Ubuntu packages, specify them in the Dockerfile. I
6671

6772
## How it works
6873
### Docker, Rosetta & VNC
69-
This collection of scripts creates an x64 Docker container running Linux® that is accelerated by [Rosetta 2](https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment) via the Apple Virtualization framework. The container has all the necessary libraries preinstalled for running Vivado. It is installed automatically given an installer file that the user must provide. GUI functionality is provided via VNC and the built-in "Screen Sharing" app.
74+
This collection of scripts creates an x64 Docker container running **Ubuntu 24.04** Linux that is accelerated by [Rosetta 2](https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment) via the Apple Virtualization framework. The container has all the necessary libraries preinstalled for running Vivado. It is installed automatically given an installer file that the user must provide. GUI functionality is provided via VNC and the built-in "Screen Sharing" app.
75+
76+
The Docker container image is kept under **8 GiB** — Vivado itself is installed to the host-side bind-mounted folder (`/home/user/Xilinx`) and is therefore not part of the image.
77+
78+
### Java heap limit
79+
Vivado and its installer are Java-based. The container sets `JAVA_TOOL_OPTIONS="-Xmx4096m -Xms512m"` so that the JVM heap is capped at **4 GiB**. This prevents out-of-memory kills during large syntheses and keeps overall memory consumption within the Docker resource limits you configure.
7080

7181
### USB connection
7282
A drawback of the Apple Virtualization framework is that there is no implementation for USB forwarding as of when I'm writing this. Therefore, these scripts set up the [Xilinx Virtual Cable protocol](https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/644579329/Xilinx+Virtual+Cable). Intended to let a computer connect to an FPGA plugged into a remote computer, it allows for the host system to run an XVC server (in this case a software called [xvcd](https://github.com/tmbinc/xvcd) by Felix Domke), to which the docker container can connect.

scripts/Dockerfile

Lines changed: 88 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,94 @@
1-
# Container for running Vivado on M1/M2 macs
2-
# though it should work equally on Intel macs
3-
FROM --platform=linux/amd64 ubuntu:22.04
4-
RUN apt-get update && apt-get upgrade -y
5-
6-
# Fix the error of build failing due to not having the frontend installed
7-
# This enviroment auto fallbacks to noninteractive mode, with the declaration following this guidance:
8-
# https://bobcares.com/blog/debian_frontendnoninteractive-docker/
9-
# https://github.com/moby/moby/issues/4032#issuecomment-34597177
1+
# Container for running Vivado on Apple Silicon (M1/M2/M3/M4) Macs.
2+
# Uses linux/amd64 platform accelerated by Rosetta 2 via the Apple Virtualization Framework.
3+
FROM --platform=linux/amd64 ubuntu:24.04
4+
5+
# Prevent interactive prompts during package installation
106
ARG DEBIAN_FRONTEND=noninteractive
117

12-
# Check and install ca-certificates earlier if Rosetta gets broken
13-
RUN apt -y install ca-certificates
14-
15-
# install gui
16-
RUN apt-get install -y --no-install-recommends \
17-
dbus dbus-x11 x11-utils xorg alsa-utils mesa-utils net-tools \
18-
libgl1-mesa-dri gtk2-engines lxappearance fonts-droid-fallback sudo firefox \
19-
ubuntu-gnome-default-settings curl gnupg lxde arc-theme \
20-
gtk2-engines-murrine gtk2-engines-pixbuf gnome-themes-standard nano xterm
21-
22-
# install dependencies for Vivado
23-
RUN apt-get install -y --no-install-recommends \
24-
python3-pip python3-dev build-essential git gcc-multilib g++ \
25-
ocl-icd-opencl-dev libjpeg62-dev libc6-dev-i386 graphviz make \
26-
unzip libtinfo5 xvfb libncursesw5 locales libswt-gtk-4-jni
27-
28-
# install vnc server (with recommended installs)
29-
RUN apt-get install -y \
30-
tigervnc-standalone-server tigervnc-xorg-extension
31-
32-
# create user "user" with password "password"
33-
RUN useradd --create-home --shell /bin/bash --user-group --groups adm,sudo user
34-
RUN sh -c 'echo "user:password" | chpasswd'
35-
# RUN cp -r /root/{.config,.gtkrc-2.0,.asoundrc} /home/user
36-
RUN chown -R user:user /home/user
37-
# setup LXDE
38-
RUN mkdir -p /home/user/.config/pcmanfm/LXDE/
39-
RUN ln -sf /usr/local/share/doro-lxde-wallpapers/desktop-items-0.conf \
40-
/home/user/.config/pcmanfm/LXDE/
41-
RUN mv /usr/bin/lxpolkit /usr/bin/lxpolkit.bak
42-
#RUN echo "" >> /etc/xdg/lxsession/LXDE/autostart
43-
#RUN echo "@lxterminal -e /home/user/scripts/de_start.sh" >> /etc/xdg/lxsession/LXDE/autostart
44-
# setup TigerVNC
45-
RUN sed -i 's/-iconic/-nowin/g' /etc/X11/Xtigervnc-session
46-
RUN mkdir /home/user/.vnc
47-
RUN echo "password" | vncpasswd -f > /vncpasswd
48-
RUN chown user /vncpasswd
49-
RUN chmod 600 /vncpasswd
50-
51-
# Set the locale, because Vivado crashes otherwise
52-
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \
53-
locale-gen
8+
# Install ALL packages in a single layer and clean up immediately to keep the
9+
# image well under 8 GiB. Package notes for Ubuntu 24.04:
10+
# - libtinfo5 / libncursesw5 are gone → replaced by libtinfo6 / libncursesw6
11+
# (backward-compat symlinks are created in the next step)
12+
# - libjpeg62-dev is gone → replaced by libjpeg-dev
13+
# - libgtk2.0-0 is now libgtk2.0-0t64 (64-bit time_t transition)
14+
# - firefox removed (large, not needed inside the container)
15+
# - libswt-gtk-4-jni removed (bundled inside Vivado 2025.x)
16+
RUN apt-get update && \
17+
apt-get install -y --no-install-recommends \
18+
# Core utilities
19+
ca-certificates curl gnupg sudo nano \
20+
# D-Bus and X11 infrastructure
21+
dbus dbus-x11 x11-utils xorg xvfb net-tools \
22+
# OpenGL / display
23+
libgl1-mesa-dri libglu1-mesa \
24+
# Lightweight desktop (LXDE) and supporting themes/tools
25+
lxde lxappearance lxterminal xterm \
26+
gtk2-engines-murrine gtk2-engines-pixbuf \
27+
gnome-themes-extra \
28+
# Audio support
29+
alsa-utils \
30+
# Vivado build and runtime dependencies
31+
python3-pip python3-dev build-essential git \
32+
gcc-multilib g++ \
33+
ocl-icd-opencl-dev libjpeg-dev libc6-dev-i386 \
34+
graphviz make unzip \
35+
# ncurses / terminal libs (Ubuntu 24.04 names)
36+
libtinfo6 libncurses6 libncursesw6 \
37+
# GTK2 runtime required by Vivado GUI (t64 transition package in 24.04)
38+
libgtk2.0-0t64 \
39+
# Locale support (Vivado crashes without a proper locale)
40+
locales \
41+
# TigerVNC server for remote GUI access
42+
# tigervnc-tools is required explicitly — it provides vncpasswd in Ubuntu 24.04
43+
tigervnc-standalone-server tigervnc-xorg-extension tigervnc-tools \
44+
&& apt-get clean \
45+
&& rm -rf /var/lib/apt/lists/*
46+
47+
# Create backward-compatible symlinks so that Vivado binaries that reference
48+
# the old .so.5 names still resolve correctly under Ubuntu 24.04.
49+
RUN ln -sf /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5 && \
50+
ln -sf /lib/x86_64-linux-gnu/libncursesw.so.6 /lib/x86_64-linux-gnu/libncursesw.so.5
51+
52+
# Create user "user" with password "password".
53+
# The password is intentionally weak — the VNC server only accepts connections
54+
# from the macOS host (127.0.0.1 binding in the docker run command).
55+
RUN useradd --create-home --shell /bin/bash --user-group --groups adm,sudo user && \
56+
echo "user:password" | chpasswd && \
57+
chown -R user:user /home/user
58+
59+
# Setup LXDE desktop configuration
60+
RUN mkdir -p /home/user/.config/pcmanfm/LXDE/ && \
61+
if [ -f /usr/local/share/doro-lxde-wallpapers/desktop-items-0.conf ]; then \
62+
ln -sf /usr/local/share/doro-lxde-wallpapers/desktop-items-0.conf \
63+
/home/user/.config/pcmanfm/LXDE/; \
64+
fi && \
65+
# Disable lxpolkit to prevent authentication pop-ups on desktop start
66+
if [ -f /usr/bin/lxpolkit ]; then mv /usr/bin/lxpolkit /usr/bin/lxpolkit.bak; fi
67+
68+
# Setup TigerVNC
69+
RUN sed -i 's/-iconic/-nowin/g' /etc/X11/Xtigervnc-session && \
70+
mkdir -p /home/user/.vnc && \
71+
echo "password" | vncpasswd -f > /vncpasswd && \
72+
chown user /vncpasswd && \
73+
chmod 600 /vncpasswd
74+
75+
# Generate locale — Vivado crashes at startup without en_US.UTF-8
76+
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
5477
ENV LANG=en_US.UTF-8
5578
ENV LANGUAGE=en_US:en
5679
ENV LC_ALL=en_US.UTF-8
5780

58-
# Without this, Vivado will crash when synthesizing
59-
ENV LD_PRELOAD="/lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libselinux.so.1 /lib/x86_64-linux-gnu/libz.so.1 /lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0"
81+
# Cap Java heap at 4 GiB.
82+
# Vivado and its installer are Java-based. Without a limit the JVM can
83+
# claim far more than available RAM, causing OOM kills inside the container.
84+
# JAVA_TOOL_OPTIONS is the portable, standard variable respected by all
85+
# JVM implementations (Java 8+).
86+
ENV JAVA_TOOL_OPTIONS="-Xmx4096m -Xms512m"
87+
88+
# LD_PRELOAD workaround for Vivado stability under Rosetta 2.
89+
# - libudev / libselinux / libz: prevent crashes during synthesis
90+
# - libgdk-x11-2.0: prevents GUI crashes on startup
91+
# NOTE: libgdk moved to /usr/lib in Ubuntu 24.04 (libgtk2.0-0t64 package).
92+
# de_start.sh resolves the exact path at runtime to handle any layout variation.
93+
ENV LD_PRELOAD="/lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libselinux.so.1 /lib/x86_64-linux-gnu/libz.so.1"
94+

scripts/cleanup.sh

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,33 @@ source $script_dir/header.sh
77
validate_macos
88

99
cd $script_dir/..
10+
1011
to_remove=(".cache" ".dbus" ".local" ".vnc" "Xilinx" ".Xilinx"
1112
"Desktop" "installer" ".bash_history" ".lesshst" ".sudo_as_admin_successful"
1213
".Xauthority" ".xsession-errors" ".XIC.lock" ".mozilla" ".java" ".config"
1314
".fontconfig" )
15+
16+
removed=0
1417
for file in ${to_remove[@]}
1518
do
16-
rm -rf $file
17-
done
19+
if [ -e "$file" ] || [ -L "$file" ]; then
20+
f_echo "Removing: $file"
21+
rm -rf "$file"
22+
removed=$((removed + 1))
23+
fi
24+
done
25+
26+
# Also clean setup artifacts written by setup.sh
27+
for artifact in "scripts/install_bin" "scripts/vnc_resolution"; do
28+
if [ -f "$artifact" ]; then
29+
f_echo "Removing setup artifact: $artifact"
30+
rm -f "$artifact"
31+
removed=$((removed + 1))
32+
fi
33+
done
34+
35+
if [ "$removed" -eq 0 ]; then
36+
f_echo "Nothing to clean — directory is already fresh."
37+
else
38+
f_echo "Cleanup complete. Removed $removed item(s)."
39+
fi

scripts/configure_docker.sh

Lines changed: 66 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,88 @@
11
#!/bin/zsh
22

3-
# Attempts to configure Docker by enabling Rosetta and increasing swap
3+
# Attempts to configure Docker by enabling Rosetta and increasing swap.
4+
# Tested on Apple Silicon (M1/M2/M3/M4) running macOS 13–15.
5+
#
6+
# Supports both Docker Desktop settings file formats:
7+
# Legacy : settings.json (keys: camelCase, e.g. useVirtualizationFramework)
8+
# Current: settings-store.json (keys: PascalCase, e.g. UseVirtualizationFramework)
49

510
script_dir=$(dirname -- "$(readlink -nf $0)";)
611
source "$script_dir/header.sh"
712
validate_macos
813

914
function cannot_setup_docker {
1015
f_echo "Unfortunately, the script could not configure Docker automatically."
11-
f_echo "This means that you have to change the settings in the Docker Dashboard yourself:"
12-
f_echo "Enable the Virtualization Framework, Rosetta emulation and set Swap to at least 2 GiB."
13-
f_echo "Restart Docker after applying the changes and then continue with the installation."
16+
f_echo "Please change the settings in Docker Desktop manually:"
17+
f_echo " Settings → General → 'Use Virtualization Framework' → ON"
18+
f_echo " Settings → Features → 'Use Rosetta for x86/amd64 emulation' → ON"
19+
f_echo " Settings → Resources → Swap → at least 8 GiB"
20+
f_echo "Restart Docker after applying the changes, then continue."
1421
wait_for_user_input
1522
exit 1
1623
}
1724

18-
docker_settings_file="$HOME/Library/Group Containers/group.com.docker/settings.json"
25+
# Locate the settings file — Docker Desktop 4.x moved to settings-store.json
26+
docker_settings_file=""
27+
for candidate in \
28+
"$HOME/Library/Group Containers/group.com.docker/settings-store.json" \
29+
"$HOME/Library/Group Containers/group.com.docker/settings.json"
30+
do
31+
if [ -f "$candidate" ]; then
32+
docker_settings_file="$candidate"
33+
break
34+
fi
35+
done
1936

20-
stop_docker
21-
22-
# check if the settings file is in the expected place
23-
if ! [ -f "$docker_settings_file" ]
24-
then
37+
if [ -z "$docker_settings_file" ]; then
2538
cannot_setup_docker
2639
fi
2740

28-
# check if the attributes to be modified exist
29-
if grep "\"useVirtualizationFramework\":" "$docker_settings_file" > /dev/null \
30-
&& grep "\"useVirtualizationFrameworkRosetta\":" "$docker_settings_file" > /dev/null \
31-
&& grep "\"swapMiB\":" "$docker_settings_file" > /dev/null
32-
then
33-
:
34-
else
35-
cannot_setup_docker
36-
fi
41+
stop_docker
42+
43+
# Use Python to safely update the JSON settings regardless of key casing.
44+
# This handles both the legacy camelCase format and the newer PascalCase format.
45+
python3 - "$docker_settings_file" <<'PYEOF'
46+
import sys, json
47+
48+
path = sys.argv[1]
49+
with open(path, 'r') as f:
50+
data = json.load(f)
3751
38-
# enable Virtualization Framework
39-
sed -i "" "s/\"useVirtualizationFramework\": false/\"useVirtualizationFramework\": true/" "$docker_settings_file"
52+
min_swap = 8192
4053
41-
# enable Rosetta emulation
42-
sed -i "" "s/\"useVirtualizationFrameworkRosetta\": false/\"useVirtualizationFrameworkRosetta\": true/" "$docker_settings_file"
54+
# Build a normalised key map so we can match regardless of case
55+
key_map = {k.lower(): k for k in data}
4356
44-
# set swap to minimum 4 GiB
45-
minSwap=4096
46-
swapMiB=$(cat "$docker_settings_file" | grep "\"swapMiB\"" | sed "s/[^0-9]//g")
47-
if [ "$swapMiB" -lt "$minSwap" ]
48-
then
49-
sed -i "" "s/\"swapMiB\": [0-9]*/\"swapMiB\": $minSwap/" "$docker_settings_file"
57+
def set_key(logical_lower, pascal_key, camel_key, value):
58+
"""Set a value using whichever key variant already exists, or add PascalCase."""
59+
existing = key_map.get(logical_lower)
60+
if existing:
61+
data[existing] = value
62+
else:
63+
# Key doesn't exist yet — add it in PascalCase (current Docker format)
64+
data[pascal_key] = value
65+
66+
set_key('usevirtualizationframework', 'UseVirtualizationFramework', 'useVirtualizationFramework', True)
67+
set_key('usevirtualizationframeworkrosetta','UseVirtualizationFrameworkRosetta', 'useVirtualizationFrameworkRosetta', True)
68+
69+
# Only increase swap, never decrease
70+
swap_key = key_map.get('swapmib', 'SwapMiB')
71+
current_swap = data.get(swap_key, 0)
72+
if current_swap < min_swap:
73+
data[swap_key] = min_swap
74+
75+
with open(path, 'w') as f:
76+
json.dump(data, f, indent=4)
77+
78+
print(f" UseVirtualizationFramework = {data.get(key_map.get('usevirtualizationframework', 'UseVirtualizationFramework'))}")
79+
print(f" UseVirtualizationFrameworkRosetta = {data.get(key_map.get('usevirtualizationframeworkrosetta', 'UseVirtualizationFrameworkRosetta'))}")
80+
print(f" SwapMiB = {data.get(swap_key)}")
81+
PYEOF
82+
83+
if [ $? -ne 0 ]; then
84+
f_echo "Failed to update Docker settings automatically."
85+
cannot_setup_docker
5086
fi
5187

52-
f_echo "Configured Docker successfully"
88+
f_echo "Configured Docker successfully (file: $docker_settings_file)"

scripts/de_start.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@ script_dir=$(dirname -- "$(readlink -nf $0)";)
77
source "$script_dir/header.sh"
88
validate_linux
99

10-
export LD_PRELOAD="/lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libselinux.so.1 /lib/x86_64-linux-gnu/libz.so.1 /lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0"
10+
# Resolve the libgdk path at runtime — it moved from /lib to /usr/lib in
11+
# Ubuntu 24.04 (libgtk2.0-0t64 package from the 64-bit time_t transition).
12+
GDK_LIB=$(find /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu \
13+
-name "libgdk-x11-2.0.so.0" 2>/dev/null | head -1)
14+
15+
export LD_PRELOAD="/lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libselinux.so.1 /lib/x86_64-linux-gnu/libz.so.1${GDK_LIB:+ $GDK_LIB}"
1116

1217
# if Vivado is installed
1318
if [ -d "/home/user/Xilinx" ]

scripts/hashes.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ declare -A web_hashes=(
1414
["e47ad71388b27a6e2339ee82c3c8765f"]=202310
1515
["b8c785d03b754766538d6cde1277c4f0"]=202320
1616
["8b0e99a41b851b50592d5d6ef1b1263d"]=202410
17+
["abe838aa2e2d3d9b10fea94165e9a303"]=202520
18+
# 2025.2.1 patch installer — maps to same install config as 2025.2
19+
["85ac3a5975ec7906224896fdce842f21"]=202520
1720
)
1821
# hashes for the full installer
1922
# not tested yet

scripts/install_bin

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)