public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/R_overlay:master commit in: files/scripts/
  2013-07-18 19:25 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
@ 2013-07-23  7:51 ` André Erdmann
  0 siblings, 0 replies; 4+ messages in thread
From: André Erdmann @ 2013-07-23  7:51 UTC (permalink / raw
  To: gentoo-commits

commit:     f37d415d9c84ecd37a0b7ccf02e37d5106dcf486
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Thu Jul 18 19:19:55 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Thu Jul 18 19:19:55 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=f37d415d

files/scripts: run-roverlay.sh

Safely run overlay creation (abort if another process is already running).
This can be used to set up a cron job.

---
 files/scripts/run-roverlay.sh | 93 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

diff --git a/files/scripts/run-roverlay.sh b/files/scripts/run-roverlay.sh
new file mode 100755
index 0000000..0ce26b4
--- /dev/null
+++ b/files/scripts/run-roverlay.sh
@@ -0,0 +1,93 @@
+#!/usr/bin/roverlay-sh
+#
+# This script runs R overlay creation and repoman afterwards.
+#
+# It will exit immediately if another instance is already running.
+# To achieve this, filesystem locks are used (/run/lock/roverlay.lock).
+#
+# So, it's safe to set up a cronjob that calls this script.
+#
+set -u
+
+# reset DEBUG, VERBOSE, QUIET
+DEBUG=n; QUIET=n; VERBOSE=y
+
+LC_COLLATE=C
+
+. "${FUNCTIONS?}" || exit 9
+
+readonly MY_LOCK=/run/lock/roverlay
+MY_LOCK_PID=
+
+# void run__cleanup ( **MY_LOCK_PID!, **MY_LOCK )
+#
+#  Atexit function that releases the lock.
+#
+run__cleanup() {
+   # release trap
+   trap - INT TERM EXIT
+
+   # release lock
+   if [ -n "${MY_LOCK_PID-}" ]; then
+      kill "${MY_LOCK_PID}"
+      wait "${MY_LOCK_PID}" 2>>${DEVNULL} && MY_LOCK_PID=
+   fi
+   lockfile-remove "${MY_LOCK}" || true
+}
+
+
+# prepare:
+
+# (TODO)
+REPOMAN_ARGS="--pretend full"
+
+WANT_ROVERLAY_CREATE=y
+WANT_ROVERLAY_SYNC=y
+WANT_REPOMAN=y
+
+#  parse args
+doshift=1
+while [ $# -gt 0 ]; do
+   case "${1?}" in
+      '+C'|'--no-create') WANT_ROVERLAY_CREATE=n ;;
+      '+S'|'--no-sync') WANT_ROVERLAY_SYNC=n ;;
+      '+R'|'--no-repoman') WANT_REPOMAN=n ;;
+      *)
+         die "unknown arg: ${1}" ${EX_ARG_ERR?}
+      ;;
+   esac
+   shift ${doshift} || OUT_OF_BOUNDS
+   doshift=1
+done
+unset -v doshift
+
+# anything to do?
+
+# main:
+#
+#  anything to do? acquire lock
+if ! list_has y \
+   "${WANT_ROVERLAY_CREATE}" "${WANT_ROVERLAY_SYNC}" "${WANT_REPOMAN}"
+then
+   die 'nothing to do' 2
+elif lockfile-create --retry 0 "${MY_LOCK}" 2>>${DEVNULL}; then
+   # hold lock until done
+   lockfile-touch "${MY_LOCK}" &
+   MY_LOCK_PID="$!"
+   trap run__cleanup INT TERM EXIT
+
+   roverlay_opts=""
+   roverlay_opts() { roverlay_opts="${roverlay_opts-}${roverlay_opts:+ }$*"; }
+
+   ! yesno "${WANT_ROVERLAY_SYNC}" || roverlay_opts "--nosync"
+
+   # run roverlay
+   if ${ROVERLAY_EXE} ${roverlay_opts}; then
+      # success, continue with repoman
+      if yesno "${WANT_REPOMAN}"; then
+         ( cd "${S}" && repoman ${REPOMAN_ARGS} 2>&1 1>"${WORKDIR}/repoman.log"; )
+      fi
+   fi
+else
+   die "another instance is already running" 0
+fi


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: files/scripts/
@ 2013-08-05 11:44 André Erdmann
  0 siblings, 0 replies; 4+ messages in thread
From: André Erdmann @ 2013-08-05 11:44 UTC (permalink / raw
  To: gentoo-commits

commit:     273c4b4da04467f9483754903d65b3bd209f9ef4
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Mon Aug  5 09:12:08 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Mon Aug  5 09:12:08 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=273c4b4d

files/scripts/run-roverlay.sh: don't reset vars

don't reset DEBUG, VERBOSE, QUIET as it's now handled by roverlay

---
 files/scripts/run-roverlay.sh | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/files/scripts/run-roverlay.sh b/files/scripts/run-roverlay.sh
index 0ce26b4..b910281 100755
--- a/files/scripts/run-roverlay.sh
+++ b/files/scripts/run-roverlay.sh
@@ -9,9 +9,6 @@
 #
 set -u
 
-# reset DEBUG, VERBOSE, QUIET
-DEBUG=n; QUIET=n; VERBOSE=y
-
 LC_COLLATE=C
 
 . "${FUNCTIONS?}" || exit 9


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: files/scripts/
@ 2013-08-09 15:27 André Erdmann
  0 siblings, 0 replies; 4+ messages in thread
From: André Erdmann @ 2013-08-09 15:27 UTC (permalink / raw
  To: gentoo-commits

commit:     30112a08e243f51806fbe567ae6c23623aa070e5
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Fri Aug  9 14:58:10 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Fri Aug  9 14:58:10 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=30112a08

files/scripts/run-roverlay.sh: --help, cleanup

---
 files/scripts/run-roverlay.sh | 70 +++++++++++++++++++++++++++++++++++--------
 1 file changed, 58 insertions(+), 12 deletions(-)

diff --git a/files/scripts/run-roverlay.sh b/files/scripts/run-roverlay.sh
index b910281..dddcc86 100755
--- a/files/scripts/run-roverlay.sh
+++ b/files/scripts/run-roverlay.sh
@@ -7,8 +7,24 @@
 #
 # So, it's safe to set up a cronjob that calls this script.
 #
+# Dependencies:
+# * lockfile-progs (app-misc/lockfile-progs)
+# * portage for repoman
+# * [roverlay]
+#
 set -u
 
+# --- "config" ---
+
+# (TODO)
+REPOMAN_ARGS="--pretend full"
+
+ROVERLAY_ARGS="--strict"
+
+# --- end of config ---
+
+
+
 LC_COLLATE=C
 
 . "${FUNCTIONS?}" || exit 9
@@ -16,6 +32,7 @@ LC_COLLATE=C
 readonly MY_LOCK=/run/lock/roverlay
 MY_LOCK_PID=
 
+
 # void run__cleanup ( **MY_LOCK_PID!, **MY_LOCK )
 #
 #  Atexit function that releases the lock.
@@ -32,12 +49,39 @@ run__cleanup() {
    lockfile-remove "${MY_LOCK}" || true
 }
 
+# void run_print_usage()
+#
+#  Prints the usage message.
+#
+run_print_usage() {
+echo "Usage: ${0##*/} [option...]
+
+options:
+   -h, --help        print this message and exit
+   +C, --no-create   disable overlay creation
+   +S, --no-sync     disable sync (offline mode)
+   +R, --no-repoman  disable repoman"
+}
+
+# @noreturn run_exit_usage ( [message], [code] )
+#
+#  Prints the usage message and exits afterwards.
+#  Calls die() for exiting if message or code are set.
+#
+run_exit_usage() {
+   if [ $# -eq 0 ]; then
+      print_usage
+      exit 0
+   else
+      print_usage 1>&2
+      echo 1>&2
+      die "$@"
+   fi
+}
+
 
 # prepare:
 
-# (TODO)
-REPOMAN_ARGS="--pretend full"
-
 WANT_ROVERLAY_CREATE=y
 WANT_ROVERLAY_SYNC=y
 WANT_REPOMAN=y
@@ -46,11 +90,12 @@ WANT_REPOMAN=y
 doshift=1
 while [ $# -gt 0 ]; do
    case "${1?}" in
-      '+C'|'--no-create') WANT_ROVERLAY_CREATE=n ;;
-      '+S'|'--no-sync') WANT_ROVERLAY_SYNC=n ;;
+      '-h'|'--help')       run_exit_usage ;;
+      '+C'|'--no-create')  WANT_ROVERLAY_CREATE=n ;;
+      '+S'|'--no-sync')    WANT_ROVERLAY_SYNC=n ;;
       '+R'|'--no-repoman') WANT_REPOMAN=n ;;
       *)
-         die "unknown arg: ${1}" ${EX_ARG_ERR?}
+         run_exit_usage "unknown arg: ${1}" ${EX_ARG_ERR?}
       ;;
    esac
    shift ${doshift} || OUT_OF_BOUNDS
@@ -58,8 +103,6 @@ while [ $# -gt 0 ]; do
 done
 unset -v doshift
 
-# anything to do?
-
 # main:
 #
 #  anything to do? acquire lock
@@ -71,18 +114,21 @@ elif lockfile-create --retry 0 "${MY_LOCK}" 2>>${DEVNULL}; then
    # hold lock until done
    lockfile-touch "${MY_LOCK}" &
    MY_LOCK_PID="$!"
-   trap run__cleanup INT TERM EXIT
+   trap run__cleanup TERM EXIT
 
    roverlay_opts=""
    roverlay_opts() { roverlay_opts="${roverlay_opts-}${roverlay_opts:+ }$*"; }
 
-   ! yesno "${WANT_ROVERLAY_SYNC}" || roverlay_opts "--nosync"
+   ! yesno "${WANT_ROVERLAY_SYNC}" || roverlay_opts "--no-sync"
 
    # run roverlay
-   if ${ROVERLAY_EXE} ${roverlay_opts}; then
+   if ${ROVERLAY_EXE} ${ROVERLAY_ARGS-} ${roverlay_opts}; then
       # success, continue with repoman
       if yesno "${WANT_REPOMAN}"; then
-         ( cd "${S}" && repoman ${REPOMAN_ARGS} 2>&1 1>"${WORKDIR}/repoman.log"; )
+         (
+            cd "${S}" && \
+            repoman ${REPOMAN_ARGS-} 1>"${WORKDIR}/repoman.log" 2>&1
+         )
       fi
    fi
 else


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: files/scripts/
@ 2013-08-12  8:47 André Erdmann
  0 siblings, 0 replies; 4+ messages in thread
From: André Erdmann @ 2013-08-12  8:47 UTC (permalink / raw
  To: gentoo-commits

commit:     b5fb85ed36452a1c95933d395c6d98c57160cc3c
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Mon Aug 12 08:47:04 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Mon Aug 12 08:47:04 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=b5fb85ed

run-roverlay.sh: flip --no-sync condition (typo)

---
 files/scripts/run-roverlay.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/files/scripts/run-roverlay.sh b/files/scripts/run-roverlay.sh
index dddcc86..32c38fb 100755
--- a/files/scripts/run-roverlay.sh
+++ b/files/scripts/run-roverlay.sh
@@ -119,7 +119,7 @@ elif lockfile-create --retry 0 "${MY_LOCK}" 2>>${DEVNULL}; then
    roverlay_opts=""
    roverlay_opts() { roverlay_opts="${roverlay_opts-}${roverlay_opts:+ }$*"; }
 
-   ! yesno "${WANT_ROVERLAY_SYNC}" || roverlay_opts "--no-sync"
+   yesno "${WANT_ROVERLAY_SYNC}" || roverlay_opts "--no-sync"
 
    # run roverlay
    if ${ROVERLAY_EXE} ${ROVERLAY_ARGS-} ${roverlay_opts}; then


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-08-12  8:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-05 11:44 [gentoo-commits] proj/R_overlay:master commit in: files/scripts/ André Erdmann
  -- strict thread matches above, loose matches on Subject: below --
2013-08-12  8:47 André Erdmann
2013-08-09 15:27 André Erdmann
2013-07-18 19:25 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-23  7:51 ` [gentoo-commits] proj/R_overlay:master " André Erdmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox