Skip to content

Instantly share code, notes, and snippets.

@kammoh
Last active September 27, 2024 22:28
Show Gist options
  • Save kammoh/d3845a6fe6d14b02406122821ac7874c to your computer and use it in GitHub Desktop.
Save kammoh/d3845a6fe6d14b02406122821ac7874c to your computer and use it in GitHub Desktop.
vivado-2024.1 patch
#!/bin/bash
DOCKERFILE_PATH=.
docker build --platform=linux/amd64 -t vivado-2024.1 $DOCKERFILE_PATH
FROM gusanagy/xilinx-vivado:2024.1-x11
USER root
RUN <<EOF
apt-get update && apt-get install -y --no-install-recommends locales gcc g++ make build-essential && dpkg-reconfigure locales
apt-get autoclean && apt-get autoremove && apt-get -s clean
locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8
EOF
#!/bin/bash
[ -z $VIVADO_VERSION ] && VIVADO_VERSION=2024.1
if [ -z $DOCKER_IMAGE ]; then
case "$VIVADO_VERSION" in
2024.1)
DOCKER_IMAGE="vivado-$VIVADO_VERSION"
XILINX_ROOT=/home/vivadouser
;;
*)
echo "Unsupported VIVADO_VERSION=$VIVADO_VERSION"
XILINX_ROOT=/tools/Xilinx
exit 1
;;
esac
fi
XILINX_VIVADO=$XILINX_ROOT/Vivado/$VIVADO_VERSION
test -t 0 && DOCKER_OPTS="$DOCKER_OPTS -i --tty"
if [ -n "$KEEP_CHANGES" ]; then
echo "** Will keep changes!!! **"
else
DOCKER_OPTS="$DOCKER_OPTS --rm"
fi
if [[ $# -eq 0 ]]; then
if [[ -z "$DISPLAY" ]]; then
echo "DISPLAY not set"
exit 1
fi
xhost +local:docker >/dev/null 2>&1
fi
BIND_PATHS=($PWD)
# if "$HOME/.Xilinx" does not exist, create it
[ ! -d "$HOME/.Xilinx" ] && mkdir -p "$HOME/.Xilinx"
BIND_PATHS+=("$HOME/.Xilinx")
# if these directories exist, bind mount them
[ -d "/Volumes/src" ] && BIND_PATHS+=("/Volumes/src")
[ -d "/tmp/.X11-unix" ] && BIND_PATHS+=("/tmp/.X11-unix")
[ -d "$HOME/.Xil" ] && BIND_PATHS+=("$HOME/.Xil")
[ -f "$HOME/.Xauthority" ] && BIND_PATHS+=("$HOME/.Xauthority")
# uniquify
BIND_PATHS=($(for el in ${BIND_PATHS[@]}; do echo "${el}"; done | sort -u))
# echo BIND_PATHS=${BIND_PATHS[@]}
for path in ${BIND_PATHS[@]}; do
[ -e $path ] && MOUNT_OPTS="$MOUNT_OPTS --mount type=bind,source=$path,target=$path"
done
[ -z $NETWORK ] && NETWORK=host
JAVA_TOOL_OPTIONS="-Dawt.useSystemAAFontSettings=on,-Dswing.aatext=true,-Dsun.java2d.xrender=true,-Dsun.java2d.ddscale=true,-Dsun.java2d.dpiaware=true"
JAVA_OPTS="-Dawt.useSystemAAFontSettings=on,-Dswing.aatext=true,-Dsun.java2d.xrender=true,-Dsun.java2d.ddscale=true,-Dsun.java2d.dpiaware=true"
_JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on,-Dswing.aatext=true,-Dsun.java2d.ddscale=true,-Dsun.java2d.dpiaware=true"
# HTTPS_PROXY=localhost
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"
if [ "$NETWORK" == "host" ]; then
[ -z "$CONTAINER_HOST" ] && CONTAINER_HOST=host.docker.internal
DISPLAY="$CONTAINER_HOST:0"
fi
ENV_SETS=(DISPLAY XAUTHORITY XILINX_VIVADO JAVA_TOOL_OPTIONS JAVA_OPTS HTTPS_PROXY _JAVA_OPTIONS LD_PRELOAD)
for e in ${ENV_SETS[@]}; do
var_ref=$(eval echo "\$$e")
[ -n "$var_ref" ] && ENV_OPTS="$ENV_OPTS --env $e=$var_ref"
done
# DOCKER_OPTS+=" --privileged "
docker run $DOCKER_OPTS \
--platform linux/amd64 \
--network=$NETWORK \
--workdir=$PWD \
$MOUNT_OPTS \
$ENV_OPTS \
$DOCKER_IMAGE "/bin/bash" "-c" "source $XILINX_VIVADO/settings64.sh && vivado $*"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment