On 2017-07-05 12:01, Corinna Vinschen wrote: > On Jul 5 13:44, Ken Brown wrote: >> On 7/5/2017 1:27 PM, Corinna Vinschen wrote: >>> On Jul 5 11:20, Brian Inglis wrote: >>>> On 2017-07-05 08:27, Corinna Vinschen wrote: >>>>> On Jul 5 13:32, Nellis, Kenneth wrote: >>>>>> So, these are handy links to have, I guess, but is it appropriate for >>>>>> cygwin-doc.sh to presume that the directory exists? Maybe it should >>>>>> create it >>>>>> rather than simply bail out and complain if it doesn't exist. >>>>> >>>>> In theory, the script should only create the files if the directory >>>>> exists. Brian? >>>> >>>> Okay - assumed the directory would always be created by setup - >>>> presumably not true - but do not check that assumption in pi, although >>>> thought about it - >>> >>> User's can decline creating shortcuts in setup. >>> >>>> should I check and skip creating shortcuts, rather than create dir and >>>> shorcuts? Should I also check and skip rm in prerm? And provide >>>> patches? >>> >>> Skipping goes hand in hand with the fact that the user declined the >>> Start Menu shortcut creation. >> >> The script already does check and skip. The only issue is that it skips by >> calling 'exit 2' instead of 'exit 0', which is what led to the original >> post. > > Note to myself: read source before talking about it.
Patch(es) attached - shuffled the order of a few things to fail quietly in postinstall - changed preremove to look and take a similar approach to postinstall for consistency - format-patch should apply cleanly this time. -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
From 92a3dd37dc9f0da65f958707d93d9e11b6047bd8 Mon Sep 17 00:00:00 2001 From: Brian Inglis <brian.ing...@systematicsw.ab.ca> Date: Wed, 5 Jul 2017 12:28:54 -0600 Subject: [PATCH] fix cygwin-doc postinstall/preremove no SMPrograms/Cygwin dir --- winsup/doc/etc.postinstall.cygwin-doc.sh | 35 +++++++++++++++---------- winsup/doc/etc.preremove.cygwin-doc.sh | 45 +++++++++++++++++++++++++++++--- 2 files changed, 63 insertions(+), 17 deletions(-) diff --git a/winsup/doc/etc.postinstall.cygwin-doc.sh b/winsup/doc/etc.postinstall.cygwin-doc.sh index 3a9457fbb..1d41ef0c1 100755 --- a/winsup/doc/etc.postinstall.cygwin-doc.sh +++ b/winsup/doc/etc.postinstall.cygwin-doc.sh @@ -6,35 +6,42 @@ # CYGWINFORALL=-A if install for All Users # installs local shortcuts for All Users or Current User in # {ProgramData,~/Appdata/Roaming}/Microsoft/Windows/Start Menu/Programs/Cygwin/ +# exits quietly if directory does not exist as presumably no shortcuts desired +doc=/usr/share/doc/cygwin-doc +site=https://cygwin.com cygp=/bin/cygpath mks=/bin/mkshortcut -un=/bin/uname -site=https://cygwin.com -# check for programs -for p in $un $cygp $mks +html=$doc/html + +# check source directories created +for d in $doc $html do - if [ ! -x $p ] + if [ ! -d "$d/" ] then - echo "Can't find program '$p'" + echo "Can't find directory '$d'" exit 2 fi done -doc=/usr/share/doc/cygwin-doc -html=$doc/html -smpc_dir="$($cygp $CYGWINFORALL -P -U)/Cygwin" - -for d in $doc $html "$smpc_dir" +# check for programs +for p in $cygp $mks do - if [ ! -d "$d/" ] + if [ ! -x $p ] then - echo "Can't find directory '$d'" + echo "Can't find program '$p'" exit 2 fi done +# Cygwin Start Menu directory +smpc_dir="$($cygp $CYGWINFORALL -P -U --)/Cygwin" + +# check Cygwin Start Menu directory still exists +[ -d "$smpc_dir/" ] || exit 0 + +# check Cygwin Start Menu directory writable if [ ! -w "$smpc_dir/" ] then echo "Can't write to directory '$smpc_dir'" @@ -42,7 +49,7 @@ then fi # mkshortcut works only in current directory - change to Cygwin Start Menu -cd "$smpc_dir" || exit 2 # quit if not found +cd "$smpc_dir/" || exit 0 # quit if not found # create User Guide and API PDF and HTML shortcuts while read target name desc diff --git a/winsup/doc/etc.preremove.cygwin-doc.sh b/winsup/doc/etc.preremove.cygwin-doc.sh index 817d6d68e..09e0c9efc 100755 --- a/winsup/doc/etc.preremove.cygwin-doc.sh +++ b/winsup/doc/etc.preremove.cygwin-doc.sh @@ -6,9 +6,48 @@ # CYGWINFORALL=-A if remove for All Users # remove local shortcuts for All Users or Current User in # {ProgramData,~/Appdata/Roaming}/Microsoft/Windows/Start Menu/Programs/Cygwin/ +# exits quietly if directory does not exist as presumably no shortcuts desired -cd "$(/bin/cygpath $CYGWINFORALL -P -U)/Cygwin" || exit 2 +doc=/usr/share/doc/cygwin-doc +cygp=/bin/cygpath +rm=/bin/rm -/bin/rm -f -- "User Guide (PDF).lnk" "User Guide (HTML).lnk" \ - "API (PDF).lnk" "API (HTML).lnk" "Home Page.lnk" "FAQ.lnk" +html=$doc/html + +# check for programs +for p in $cygp $rm +do + if [ ! -x $p ] + then + echo "Can't find program '$p'" + exit 2 + fi +done + +# Cygwin Start Menu directory +smpc_dir="$($cygp $CYGWINFORALL -P -U --)/Cygwin" + +# check Cygwin Start Menu directory still exists +[ -d "$smpc_dir/" ] || exit 0 + +# check Cygwin Start Menu directory writable +if [ ! -w "$smpc_dir/" ] +then + echo "Can't write to directory '$smpc_dir'" + exit 1 +fi + +# remove User Guide and API PDF and HTML, Home Page and FAQ URL link shortcuts +while read target name desc +do + lnk="$smpc_dir/$name.lnk" + [ -f "$lnk" ] && $rm -f -- "$lnk" +done <<EOF +$doc/cygwin-ug-net.pdf User\ Guide\ \(PDF\) Cygwin\ User\ Guide\ PDF +$html/cygwin-ug-net/index.html User\ Guide\ \(HTML\) Cygwin\ User\ Guide\ HTML +$doc/cygwin-api.pdf API\ \(PDF\) Cygwin\ API\ Reference\ PDF +$html/cygwin-api/index.html API\ \(HTML\) Cygwin\ API\ Reference\ HTML +$site/index.html Home\ Page Cygwin\ Home\ Page\ Link +$site/faq.html FAQ Cygwin\ Frequently\ Asked\ Questions\ Link +EOF -- 2.12.3