summaryrefslogtreecommitdiffstats
path: root/source/ap/slackpkg/files/post-functions.sh
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2016-06-30 20:26:57 +0000
committer Eric Hameleers <alien@slackware.com>2018-05-31 23:31:18 +0200
commitd31c50870d0bee042ce660e445c9294a59a3a65b (patch)
tree6bfc0de3c95267b401b620c2c67859557dc60f97 /source/ap/slackpkg/files/post-functions.sh
parent76fc4757ac91ac7947a01fb7b53dddf9a78a01d1 (diff)
downloadcurrent-slackware-14.2.tar.gz
current-slackware-14.2.tar.xz
Slackware 14.2slackware-14.2
Thu Jun 30 20:26:57 UTC 2016 Slackware 14.2 x86_64 stable is released! The long development cycle (the Linux community has lately been living in "interesting times", as they say) is finally behind us, and we're proud to announce the release of Slackware 14.2. The new release brings many updates and modern tools, has switched from udev to eudev (no systemd), and adds well over a hundred new packages to the system. Thanks to the team, the upstream developers, the dedicated Slackware community, and everyone else who pitched in to help make this release a reality. The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware project by picking up a copy from store.slackware.com. We're taking pre-orders now, and offer a discount if you sign up for a subscription. Have fun! :-)
Diffstat (limited to 'source/ap/slackpkg/files/post-functions.sh')
-rw-r--r--source/ap/slackpkg/files/post-functions.sh221
1 files changed, 221 insertions, 0 deletions
diff --git a/source/ap/slackpkg/files/post-functions.sh b/source/ap/slackpkg/files/post-functions.sh
new file mode 100644
index 000000000..2eb023bcc
--- /dev/null
+++ b/source/ap/slackpkg/files/post-functions.sh
@@ -0,0 +1,221 @@
+showdiff() {
+ BASENAME=$(basename $i .new)
+ FILEPATH=$(dirname $i)
+ FULLNAME="${FILEPATH}/${BASENAME}"
+
+ if [ -e ${FULLNAME} ]; then
+ diff -u ${FULLNAME} ${FULLNAME}.new | $MORECMD
+ else
+ echo "file $FULLNAME doesn't exist"
+ fi
+}
+
+showmenu() {
+ echo -e "$1 - \c"
+ tput sc
+ shift
+ while [ $# -gt 0 ]; do
+ echo -e "$1"
+ tput rc
+ shift
+ done
+}
+
+mergenew() {
+ BASENAME=$(basename $i .new)
+ FILEPATH=$(dirname $i)
+ FULLNAME="${FILEPATH}/${BASENAME}"
+
+ if [ -e "${FULLNAME}" ]; then
+ # in media res. we do the merging right away, but we later allow the user to redo it, if not satisfied with the results.
+ rm -f "${FULLNAME}.smerge"
+ echo "Enter '?' in the prompt (%) to display help."
+ cp -p "${FULLNAME}.new" "${FULLNAME}.smerge" # <- this is so that the installed merged file will have the same permissions as the .new file
+ sdiff -s -o "${FULLNAME}.smerge" "${FULLNAME}" "${FULLNAME}.new"
+
+ GOEXM=0
+ while [ $GOEXM -eq 0 ]; do
+ showmenu $i "(E)dit the merged file" "(I)nstall the merged file" "View a diff between the merged and the (N)ew file" "View a diff between the (O)ld and the merged file" "(R)edo the merge" "(V)iew the merged file" "(B)ack to previous menu, and delete the merged file"
+ read ANSWER
+ case "$ANSWER" in
+ E|e)
+ if [ -f "${FULLNAME}.smerge" ]; then
+ $EDITCMD "${FULLNAME}.smerge"
+ else
+ echo -e "Nothing was merged yet..."
+ fi
+ ;;
+ I|i)
+ if [ -f "${FULLNAME}.smerge" ]; then
+ if [ -e "${FULLNAME}" ]; then
+ mv "${FULLNAME}" "${FULLNAME}.orig"
+ fi
+ mv "${FULLNAME}.smerge" "${FULLNAME}"
+ rm -f "${FULLNAME}.new"
+ GOEXM=1
+ GOEX=1
+ else
+ echo -e "Nothing was merged yet..."
+ fi
+ ;;
+ N|n)
+ if [ -f "${FULLNAME}.smerge" ]; then
+ diff -u "${FULLNAME}.smerge" "${FULLNAME}.new" | $MORECMD
+ else
+ echo -e "Nothing was merged yet..."
+ fi
+ ;;
+ O|o)
+ if [ -f "${FULLNAME}.smerge" ]; then
+ diff -u "${FULLNAME}" "${FULLNAME}.smerge" | $MORECMD
+ else
+ echo -e "Nothing was merged yet..."
+ fi
+ ;;
+ R|r)
+ rm -f "${FULLNAME}.smerge"
+ echo "Enter '?' in the prompt (%) to display help."
+ cp -p "${FULLNAME}.new" "${FULLNAME}.smerge" # <- this is so that the installed merged file will have the same permissions as the .new file
+ sdiff -s -o "${FULLNAME}.smerge" "${FULLNAME}" "${FULLNAME}.new"
+ ;;
+ V|v)
+ if [ -f "${FULLNAME}.smerge" ]; then
+ $MORECMD "${FULLNAME}.smerge"
+ else
+ echo -e "Nothing was merged yet..."
+ fi
+ ;;
+ B|b)
+ rm -f "${FULLNAME}.smerge"
+ GOEXM=1
+ ;;
+ esac
+ done
+ else
+ echo "file $FULLNAME doesn't exist"
+ fi
+}
+
+overold() {
+ BASENAME=$(basename $i .new)
+ FILEPATH=$(dirname $i)
+ FULLNAME="${FILEPATH}/${BASENAME}"
+
+ if [ -e ${FULLNAME} ]; then
+ mv ${FULLNAME} ${FULLNAME}.orig
+ fi
+ mv ${FULLNAME}.new ${FULLNAME}
+}
+
+removeold() {
+ rm $i
+}
+
+looknew() {
+
+ # with ONLY_NEW_DOTNEW set, slackpkg will search only for
+ # .new files installed in actual slackpkg's execution
+ if [ "$ONLY_NEW_DOTNEW" = "on" ]; then
+ ONLY_NEW_DOTNEW="-cnewer $TMPDIR/timestamp"
+ else
+ ONLY_NEW_DOTNEW=""
+ fi
+
+ echo -e "\nSearching for NEW configuration files"
+ FILES=$(find /etc -name "*.new" ${ONLY_NEW_DOTNEW} \
+ -not -name "rc.inet1.conf.new" \
+ -not -name "group.new" \
+ -not -name "passwd.new" \
+ -not -name "shadow.new" \
+ -not -name "gshadow.new" 2>/dev/null)
+ if [ "$FILES" != "" ]; then
+ echo -e "\n\
+Some packages had new configuration files installed.
+You have four choices:
+
+ (K)eep the old files and consider .new files later
+
+ (O)verwrite all old files with the new ones. The
+ old files will be stored with the suffix .orig
+
+ (R)emove all .new files
+
+ (P)rompt K, O, R selection for every single file
+
+What do you want (K/O/R/P)?"
+ answer
+ case $ANSWER in
+ K|k)
+ break
+ ;;
+ O|o)
+ for i in $FILES; do
+ overold $i
+ done
+ break
+ ;;
+ R|r)
+ for i in $FILES; do
+ removeold $i
+ done
+ break
+ ;;
+ P|p)
+ echo "Select what you want file-by-file"
+ for i in $FILES; do
+ GOEX=0
+ while [ $GOEX -eq 0 ]; do
+ echo
+ showmenu $i "(K)eep" "(O)verwrite" "(R)emove" "(D)iff" "(M)erge"
+ read ANSWER
+ case $ANSWER in
+ O|o)
+ overold $i
+ GOEX=1
+ ;;
+ R|r)
+ removeold $i
+ GOEX=1
+ ;;
+ D|d)
+ showdiff $1
+ ;;
+ M|m)
+ mergenew $1
+ ;;
+ K|k|*)
+ GOEX=1
+ ;;
+ esac
+ done
+ done
+ break
+ ;;
+ *)
+ echo "OK! Your choice is nothing! slackpkg will Keep the old files for you to deal with later"
+ ;;
+ esac
+ else
+ echo -e "\t\tNo .new files found."
+ fi
+}
+
+lookkernel() {
+ NEWKERNELMD5=$(md5sum /boot/vmlinuz 2>/dev/null)
+ if [ "$KERNELMD5" != "$NEWKERNELMD5" ]; then
+ if [ -x /sbin/lilo ]; then
+ echo -e "\n
+Your kernel image was updated. We highly recommend you run: lilo
+Do you want slackpkg to run lilo now? (Y/n)"
+ answer
+ if [ "$ANSWER" != "n" ] && [ "$ANSWER" != "N" ]; then
+ /sbin/lilo
+ fi
+ else
+ echo -e "\n
+Your kernel image was updated and lilo is not found on your system.
+You may need to adjust your boot manager(like GRUB) to boot appropriate
+kernel."
+ fi
+ fi
+}