Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Update .stow-local-ignore with files in /home/user that would break running stow #196

Merged
merged 4 commits into from
Dec 13, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,10 @@ docker run -ti --rm \
|---------------------|-------------------------------------|
|--------JAVA---------|-------------------------------------|
| `sdk` |`<https://get.sdkman.io>` |
| `java` |`<8.0.402-tem via sdkman>` |
| `java` |`<11.0.22-tem via sdkman>` |
| `java` |`<17.0.10-tem via sdkman>/default` |
| `java` |`<21.0.2-tem via sdkman>` |
| `java` |`<8.0.432-tem via sdkman>` |
| `java` |`<11.0.25-tem via sdkman>` |
| `java` |`<17.0.13-tem via sdkman>/default` |
| `java` |`<21.0.5-tem via sdkman>` |
| `maven` |`<via sdkman>` |
| `gradle` |`<via sdkman>` |
| `mandrel` |`<22.1.2.r21-mandrel via sdkman>` |
Expand Down
22 changes: 11 additions & 11 deletions universal/ubi8/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ RUN curl -fsSL "https://get.sdkman.io/?rcupdate=false" | bash \
&& bash -c ". /home/tooling/.sdkman/bin/sdkman-init.sh \
&& sed -i "s/sdkman_auto_answer=false/sdkman_auto_answer=true/g" /home/tooling/.sdkman/etc/config \
&& sed -i "s/sdkman_auto_env=false/sdkman_auto_env=true/g" /home/tooling/.sdkman/etc/config \
&& sdk install java 8.0.402-tem \
&& sdk install java 11.0.22-tem \
&& sdk install java 17.0.10-tem \
&& sdk install java 21.0.2-tem \
&& sdk install java 23.1.2.r21-mandrel \
&& sdk default java 17.0.10-tem \
&& sdk install java 8.0.432-tem \
&& sdk install java 11.0.25-tem \
&& sdk install java 17.0.13-tem \
&& sdk install java 21.0.5-tem \
&& sdk install java 23.1.5.r21-mandrel \
&& sdk default java 17.0.13-tem \
&& sdk install gradle \
&& sdk install maven \
&& sdk install jbang \
Expand All @@ -47,10 +47,10 @@ RUN curl -fsSL "https://get.sdkman.io/?rcupdate=false" | bash \
&& chgrp -R 0 /home/tooling && chmod -R g=u /home/tooling

# sdk home java <version>
ENV JAVA_HOME_8=/home/tooling/.sdkman/candidates/java/8.0.402-tem
ENV JAVA_HOME_11=/home/tooling/.sdkman/candidates/java/11.0.22-tem
ENV JAVA_HOME_17=/home/tooling/.sdkman/candidates/java/17.0.10-tem
ENV JAVA_HOME_21=/home/tooling/.sdkman/candidates/java/21.0.2-tem
ENV JAVA_HOME_8=/home/tooling/.sdkman/candidates/java/8.0.432-tem
ENV JAVA_HOME_11=/home/tooling/.sdkman/candidates/java/11.0.25-tem
ENV JAVA_HOME_17=/home/tooling/.sdkman/candidates/java/17.0.13-tem
ENV JAVA_HOME_21=/home/tooling/.sdkman/candidates/java/21.0.5-tem

# Java-related environment variables are described and set by ${PROFILE_EXT}, which will be loaded by ~/.bashrc
# To make Java working for dash and other shells, it needs to initialize them in the Dockerfile.
Expand All @@ -64,7 +64,7 @@ ENV GRADLE_HOME="/home/tooling/.sdkman/candidates/gradle/current"
ENV JAVA_HOME="/home/tooling/.sdkman/candidates/java/current"
ENV MAVEN_HOME="/home/tooling/.sdkman/candidates/maven/current"

ENV GRAALVM_HOME=/home/tooling/.sdkman/candidates/java/23.1.2.r21-mandrel
ENV GRAALVM_HOME=/home/tooling/.sdkman/candidates/java/23.1.5.r21-mandrel

ENV PATH="/home/tooling/.krew/bin:$PATH"
ENV PATH="/home/tooling/.sdkman/candidates/maven/current/bin:$PATH"
Expand Down
26 changes: 26 additions & 0 deletions universal/ubi8/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,32 @@ mountpoint -q /home/user/; HOME_USER_MOUNTED=$?
STOW_COMPLETE=/home/user/.stow_completed

if [ $HOME_USER_MOUNTED -eq 0 ] && [ ! -f $STOW_COMPLETE ]; then
# There may be regular, non-symlink files in /home/user that match the
# pathing of files in /home/tooling. Stow will error out when it tries to
# stow on top of that. Instead, we can append to the current
# /home/tooling/.stow-local-ignore file to ignore pre-existing,
# non-symlinked files in /home/user that match those in /home/tooling before
# we run stow.
#
# Create two text files containing a sorted path-based list of files in
# /home/tooling and /home/user. Cut off "/home/user" and "/home/tooling" and
# only get the sub-paths so we can do a proper comparison
#
# In the case of /home/user, we want regular file types and not symbolic
# links.
find /home/user -type f -xtype f -print | sort | sed 's|/home/user||g' > /tmp/user.txt
find /home/tooling -print | sort | sed 's|/home/tooling||g' > /tmp/tooling.txt
# We compare the two files, trying to find files that exist in /home/user
# and /home/tooling. Being that the files that get flagged here are not
# already synlinks, we will want to ignore them.
IGNORE_FILES="$(comm -12 /tmp/user.txt /tmp/tooling.txt)"
# We no longer require the file lists, so remove them
rm /tmp/user.txt /tmp/tooling.txt
# For each file we need to ignore, append them to
# /home/tooling/.stow-local-ignore.
for f in $IGNORE_FILES; do echo "${f}" >> /home/tooling/.stow-local-ignore;done
# We are now ready to run stow
#
# Create symbolic links from /home/tooling/ -> /home/user/
stow . -t /home/user/ -d /home/tooling/ --no-folding -v 2 > /tmp/stow.log 2>&1
# Vim does not permit .viminfo to be a symbolic link for security reasons, so manually copy it
Expand Down
22 changes: 11 additions & 11 deletions universal/ubi9/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ RUN curl -fsSL "https://get.sdkman.io/?rcupdate=false" | bash \
&& bash -c ". /home/tooling/.sdkman/bin/sdkman-init.sh \
&& sed -i "s/sdkman_auto_answer=false/sdkman_auto_answer=true/g" /home/tooling/.sdkman/etc/config \
&& sed -i "s/sdkman_auto_env=false/sdkman_auto_env=true/g" /home/tooling/.sdkman/etc/config \
&& sdk install java 8.0.402-tem \
&& sdk install java 11.0.22-tem \
&& sdk install java 17.0.10-tem \
&& sdk install java 21.0.2-tem \
&& sdk install java 23.1.2.r21-mandrel \
&& sdk default java 17.0.10-tem \
&& sdk install java 8.0.432-tem \
&& sdk install java 11.0.25-tem \
&& sdk install java 17.0.13-tem \
&& sdk install java 21.0.5-tem \
&& sdk install java 23.1.5.r21-mandrel \
&& sdk default java 17.0.13-tem \
&& sdk install gradle \
&& sdk install maven \
&& sdk install jbang \
Expand All @@ -47,10 +47,10 @@ RUN curl -fsSL "https://get.sdkman.io/?rcupdate=false" | bash \
&& chgrp -R 0 /home/tooling && chmod -R g=u /home/tooling

# sdk home java <version>
ENV JAVA_HOME_8=/home/tooling/.sdkman/candidates/java/8.0.402-tem
ENV JAVA_HOME_11=/home/tooling/.sdkman/candidates/java/11.0.22-tem
ENV JAVA_HOME_17=/home/tooling/.sdkman/candidates/java/17.0.10-tem
ENV JAVA_HOME_21=/home/tooling/.sdkman/candidates/java/21.0.2-tem
ENV JAVA_HOME_8=/home/tooling/.sdkman/candidates/java/8.0.432-tem
ENV JAVA_HOME_11=/home/tooling/.sdkman/candidates/java/11.0.25-tem
ENV JAVA_HOME_17=/home/tooling/.sdkman/candidates/java/17.0.13-tem
ENV JAVA_HOME_21=/home/tooling/.sdkman/candidates/java/21.0.5-tem

# Java-related environment variables are described and set by ${PROFILE_EXT}, which will be loaded by ~/.bashrc
# To make Java working for dash and other shells, it needs to initialize them in the Dockerfile.
Expand All @@ -64,7 +64,7 @@ ENV GRADLE_HOME="/home/tooling/.sdkman/candidates/gradle/current"
ENV JAVA_HOME="/home/tooling/.sdkman/candidates/java/current"
ENV MAVEN_HOME="/home/tooling/.sdkman/candidates/maven/current"

ENV GRAALVM_HOME=/home/tooling/.sdkman/candidates/java/23.1.2.r21-mandrel
ENV GRAALVM_HOME=/home/tooling/.sdkman/candidates/java/23.1.5.r21-mandrel

ENV PATH="/home/tooling/.krew/bin:$PATH"
ENV PATH="/home/tooling/.sdkman/candidates/maven/current/bin:$PATH"
Expand Down
26 changes: 26 additions & 0 deletions universal/ubi9/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,32 @@ mountpoint -q /home/user/; HOME_USER_MOUNTED=$?
STOW_COMPLETE=/home/user/.stow_completed

if [ $HOME_USER_MOUNTED -eq 0 ] && [ ! -f $STOW_COMPLETE ]; then
# There may be regular, non-symlink files in /home/user that match the
# pathing of files in /home/tooling. Stow will error out when it tries to
# stow on top of that. Instead, we can append to the current
# /home/tooling/.stow-local-ignore file to ignore pre-existing,
# non-symlinked files in /home/user that match those in /home/tooling before
# we run stow.
#
# Create two text files containing a sorted path-based list of files in
# /home/tooling and /home/user. Cut off "/home/user" and "/home/tooling" and
# only get the sub-paths so we can do a proper comparison
#
# In the case of /home/user, we want regular file types and not symbolic
# links.
find /home/user -type f -xtype f -print | sort | sed 's|/home/user||g' > /tmp/user.txt
find /home/tooling -print | sort | sed 's|/home/tooling||g' > /tmp/tooling.txt
# We compare the two files, trying to find files that exist in /home/user
# and /home/tooling. Being that the files that get flagged here are not
# already synlinks, we will want to ignore them.
IGNORE_FILES="$(comm -12 /tmp/user.txt /tmp/tooling.txt)"
# We no longer require the file lists, so remove them
rm /tmp/user.txt /tmp/tooling.txt
# For each file we need to ignore, append them to
# /home/tooling/.stow-local-ignore.
for f in $IGNORE_FILES; do echo "${f}" >> /home/tooling/.stow-local-ignore;done
# We are now ready to run stow
#
# Create symbolic links from /home/tooling/ -> /home/user/
stow . -t /home/user/ -d /home/tooling/ --no-folding -v 2 > /tmp/stow.log 2>&1
# Vim does not permit .viminfo to be a symbolic link for security reasons, so manually copy it
Expand Down
Loading