diff -Nru sch-scripts-22.04/debian/changelog sch-scripts-22.04/debian/changelog --- sch-scripts-22.04/debian/changelog 2022-10-11 14:12:35.000000000 +0000 +++ sch-scripts-22.04/debian/changelog 2022-10-13 05:41:33.000000000 +0000 @@ -1,8 +1,8 @@ -sch-scripts (22.04-1~202210111410~ubuntu22.04.1) jammy; urgency=low +sch-scripts (22.04-1~202210130538~ubuntu22.04.1) jammy; urgency=low * Auto build. - -- Alkis Georgopoulos Tue, 11 Oct 2022 14:12:35 +0000 + -- Alkis Georgopoulos Thu, 13 Oct 2022 05:41:33 +0000 sch-scripts (22.04-1) stable; urgency=low diff -Nru sch-scripts-22.04/debian/git-build-recipe.manifest sch-scripts-22.04/debian/git-build-recipe.manifest --- sch-scripts-22.04/debian/git-build-recipe.manifest 2022-10-11 14:12:35.000000000 +0000 +++ sch-scripts-22.04/debian/git-build-recipe.manifest 2022-10-13 05:41:33.000000000 +0000 @@ -1,2 +1,2 @@ -# git-build-recipe format 0.4 deb-version {debversion}~202210111410 -lp:sch-scripts git-commit:f62f8a194240baeef58ebdabfd550231cbc77007 +# git-build-recipe format 0.4 deb-version {debversion}~202210130538 +lp:sch-scripts git-commit:4a9a2805fae198505baad80a1a1422c70c996d3f diff -Nru sch-scripts-22.04/share/sch-scripts/create-symlinks sch-scripts-22.04/share/sch-scripts/create-symlinks --- sch-scripts-22.04/share/sch-scripts/create-symlinks 2022-10-11 14:12:35.000000000 +0000 +++ sch-scripts-22.04/share/sch-scripts/create-symlinks 2022-10-13 05:41:33.000000000 +0000 @@ -26,22 +26,43 @@ echo "${result:-$1}" } +# Ensure the specified xdg directory exists +ensure_xdg_dir() { + local var def_en value + + var=$1 + def_en=$2 + eval "value=\$$var" + value=${value%/} + if [ "$value" = "$HOME" ]; then + value="$HOME/$(gt "$def_en")" + printf "WARNING: your %s directory was probably deleted in the past. +You can restore its definition in %s/.config/user-dirs.dirs. +Defaulting to %s.\n" \ + "$var" "$HOME" "$value" + elif [ -z "$value" ]; then + value="$HOME/$(gt "$def_en")" + fi + mkdir -p "$value" + eval "$var='$value'" +} + get_xdg_dirs() { USER=${USER:-$(id -un)} - test -d "$HOME" || HOME=$(getent passwd "$USER" | cut -d : -f 6) + if [ ! -d "$HOME" ]; then + export "HOME=$(getent passwd "$USER" | cut -d : -f 6)" + mkdir -p "$HOME" + fi test -f "$HOME/.config/user-dirs.dirs" && . "$HOME/.config/user-dirs.dirs" SHARE_DESCRIPTION=${SHARE_DESCRIPTION:-"$(gt Share)"} - XDG_DESKTOP_DIR=${XDG_DESKTOP_DIR:-"$HOME/$(gt Desktop)"} - XDG_DOCUMENTS_DIR=${XDG_DOCUMENTS_DIR:-"$HOME/$(gt Documents)"} - XDG_DOWNLOAD_DIR=${XDG_DOWNLOAD_DIR:-"$HOME/$(gt Downloads)"} - XDG_MUSIC_DIR=${XDG_MUSIC_DIR:-"$HOME/$(gt Music)"} - XDG_PICTURES_DIR=${XDG_PICTURES_DIR:-"$HOME/$(gt Pictures)"} - XDG_PUBLICSHARE_DIR=${XDG_PUBLICSHARE_DIR:-"$HOME/$(gt Public)"} - XDG_TEMPLATES_DIR=${XDG_TEMPLATES_DIR:-"$HOME/$(gt Templates)"} - XDG_VIDEOS_DIR=${XDG_VIDEOS_DIR:-"$HOME/$(gt Videos)"} - mkdir -p "$XDG_DESKTOP_DIR" "$XDG_DOCUMENTS_DIR" \ - "$XDG_DOWNLOAD_DIR" "$XDG_MUSIC_DIR" "$XDG_PICTURES_DIR" \ - "$XDG_PUBLICSHARE_DIR" "$XDG_TEMPLATES_DIR" "$XDG_VIDEOS_DIR" + ensure_xdg_dir XDG_DESKTOP_DIR Desktop + ensure_xdg_dir XDG_DOCUMENTS_DIR Documents + ensure_xdg_dir XDG_DOWNLOAD_DIR Downloads + ensure_xdg_dir XDG_MUSIC_DIR Music + ensure_xdg_dir XDG_PICTURES_DIR Pictures + ensure_xdg_dir XDG_PUBLICSHARE_DIR Public + ensure_xdg_dir XDG_TEMPLATES_DIR Templates + ensure_xdg_dir XDG_VIDEOS_DIR Videos } # Unfortunately chgrp "$TEACHER" only works for teachers @@ -49,11 +70,11 @@ chgrp "$TEACHERS" "$XDG_DESKTOP_DIR" \ "$XDG_DOCUMENTS_DIR" "$XDG_DOWNLOAD_DIR" "$XDG_MUSIC_DIR" \ "$XDG_PICTURES_DIR" "$XDG_TEMPLATES_DIR" "$XDG_VIDEOS_DIR" - # XDG_PUBLICSHARE_DIR is left to its default group, $USER + # XDG_PUBLICSHARE_DIR is left to its default group, $USER chmod 750 "$XDG_DESKTOP_DIR" \ "$XDG_DOCUMENTS_DIR" "$XDG_DOWNLOAD_DIR" "$XDG_MUSIC_DIR" \ "$XDG_PICTURES_DIR" "$XDG_TEMPLATES_DIR" "$XDG_VIDEOS_DIR" - # XDG_PUBLICSHARE_DIR is left to its default mode, 755 + # XDG_PUBLICSHARE_DIR is left to its default mode, 755 } ln_sf() { @@ -64,16 +85,16 @@ if [ -e "$src" ]; then if [ "$(stat -c %m "$SHARE_DIR/.shared-folders")" = "$SHARE_DIR" ]; then # Fat clients use SSH_FOLLOW_SYMLINKS=True so [ -h ] doesn't work. - # But symlink deletion doesn't work either, so just assume the link - # is correct. `mv` semi-works, but it's not worth it. + # But symlink deletion doesn't work either, so just assume the + # link is correct. `mv` semi-works, but it's not worth it. return 0 elif [ -h "$src" ]; then rm "$src" else - mv "$src" "$(mktemp -u "$src.moved-by-sch-scripts.XXXX")" + mv "$src" "$(mktemp -u "$src-moved-by-sch-scripts-XXXX")" fi fi - ln -s "$dst" "$src" + ln -ns "$dst" "$src" } # We want: @@ -91,13 +112,13 @@ teachers=" $(getent group "$TEACHERS" | cut -d : -f 4 | tr ',' ' ') " my_groups=$(groups) case " $my_groups " in - *" $TEACHERS "*) is_teacher=true ;; + *" $TEACHERS "*) is_teacher=true ;; esac for group in $my_groups; do # Check if shared folders are enabled for this group case " $SHARE_GROUPS " in - *" $group "*) ;; - *) continue ;; + *" $group "*) ;; + *) continue ;; esac belongs_in_a_shared_group=true ln_sf "$SHARE_DIR/$group" "$XDG_PUBLICSHARE_DIR/$group - $SHARE_DESCRIPTION" @@ -114,11 +135,11 @@ group_members=" $(getent group "$group" | cut -d : -f 4 | tr ',' ' ') " for teacher in $teachers; do case "$group_members" in - *" $teacher "*) - teacher_name=$(getent passwd "$teacher" | cut -d ':' -f 5 | cut -d ',' -f 1) - teacher_name=${teacher_name:-$teacher} - ln_sf "$SHARE_DIR/.symlinks/$group - $teacher" "$XDG_PUBLICSHARE_DIR/$group - $teacher_name" - ;; + *" $teacher "*) + teacher_name=$(getent passwd "$teacher" | cut -d ':' -f 5 | cut -d ',' -f 1) + teacher_name=${teacher_name:-$teacher} + ln_sf "$SHARE_DIR/.symlinks/$group - $teacher" "$XDG_PUBLICSHARE_DIR/$group - $teacher_name" + ;; esac done fi @@ -129,12 +150,18 @@ if [ $# -ne 0 ]; then case "$1" in - -h|--help) usage; exit 0 ;; - *) usage >&2; exit 1 ;; + -h | --help) + usage + exit 0 + ;; + *) + usage >&2 + exit 1 + ;; esac fi -# Don't run on LTSP clients. See /usr/share/ldm/rc.d/X50-create-symlinks +# Don't run on LTSP5 clients. See /usr/share/ldm/rc.d/X50-create-symlinks test -n "$LTSP_CLIENT" && exit 0 . /etc/default/shared-folders