aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'bin/tinder.sh')
-rwxr-xr-xbin/tinder.sh105
1 files changed, 105 insertions, 0 deletions
diff --git a/bin/tinder.sh b/bin/tinder.sh
new file mode 100755
index 0000000..4116fa8
--- /dev/null
+++ b/bin/tinder.sh
@@ -0,0 +1,105 @@
+#!/usr/bin/env bash
+set -o errexit -o nounset -o pipefail
+[[ $(whoami) == "root" ]] || exit 1
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+
+function ENV_SETUP() {
+ eselect news read --quiet all
+ eselect ruby set 1
+ if [[ ! -d /etc/portage/env/ ]]; then
+ mkdir /etc/portage/env/
+ fi
+ echo 'FEATURES="${FEATURES} test keepwork"' > /etc/portage/env/test
+
+ if [[ ! -d $SCRIPT_DIR/ci-logs/ ]]; then
+ mkdir "$SCRIPT_DIR/ci-logs"
+ fi
+}
+
+function SETUP () {
+ cp /var/lib/portage/world /var/lib/portage/world.original
+ echo "" > /etc/portage/package.accept_keywords
+ echo "=$PACKAGE doc" > /etc/portage/package.use
+ echo "=$PACKAGE test" > /etc/portage/package.env
+
+ if [[ -e /usr/portage/packages/$PACKAGE.tbz2 ]]; then
+ rm "/usr/portage/packages/$PACKAGE.tbz2"
+ fi
+
+ set +e
+ emerge --pretend --quiet "=$PACKAGE"
+ if [[ $? == 1 ]]; then
+ emerge --autounmask-write "=$PACKAGE"
+ etc-update --automode -5
+ fi
+ set -e
+}
+
+function EMERGE() {
+ set +e
+ timeout 1000 emerge --usepkg --buildpkg "=$PACKAGE"
+ LOG "$?"
+ set -e
+}
+
+function LOG() {
+ DATE=$(date +%s)
+ SHA1=$(sha1sum "/usr/portage/$CATEGORY/$NAME/$NAME-$VERSION.ebuild" | awk '{print $1}')
+ mkdir -p "$SCRIPT_DIR/ci-logs/$SHA1/$TYPE/builds/$DATE"
+
+ emerge --info "=$PACKAGE" > "$SCRIPT_DIR/ci-logs/$SHA1/$TYPE/builds/$DATE/emerge-info"
+ emerge -pqv "=$PACKAGE" > "$SCRIPT_DIR/ci-logs/$SHA1/$TYPE/builds/$DATE/emerge-pqv"
+ cp "/var/tmp/portage/$PACKAGE/temp/build.log" "$SCRIPT_DIR/ci-logs/$SHA1/$TYPE/builds/$DATE/build.log"
+ cp "/var/tmp/portage/$PACKAGE/temp/environment" "$SCRIPT_DIR/ci-logs/$SHA1/$TYPE/builds/$DATE/environment"
+ gem list > "$SCRIPT_DIR/ci-logs/$SHA1/$TYPE/builds/$DATE/gem-list"
+
+ if [[ $1 == 0 ]]; then
+ RESULT="\e[0;32mBUILD SUCCEEDED\e[0m"
+ echo "succeeded" > "$SCRIPT_DIR/ci-logs/$SHA1/$TYPE/builds/$DATE/result"
+ elif [[ $1 == 1 ]]; then
+ RESULT="\e[0;31mBUILD FAILED\e[0m"
+ echo "failed" > "$SCRIPT_DIR/ci-logs/$SHA1/$TYPE/builds/$DATE/result"
+ elif [[ $1 == 124 ]]; then
+ RESULT="\e[0;31mBUILD TIMED OUT\e[0m"
+ echo "timed out" > "$SCRIPT_DIR/ci-logs/$SHA1/$TYPE/builds/$DATE/result"
+ else
+ RESULT="\e[0;31mBUILD UNKNOWN\e[0m"
+ echo "unknown" > "$SCRIPT_DIR/ci-logs/$SHA1/$TYPE/builds/$DATE/result"
+ fi
+
+ chmod 755 -R "$SCRIPT_DIR/ci-logs/$SHA1/$TYPE/builds/$DATE"
+}
+
+function CLEANUP() {
+ mv /var/lib/portage/world.original /var/lib/portage/world
+ rm -r /var/tmp/portage/* || true
+ emerge --depclean --quiet
+ echo -e "$PACKAGE : $RESULT"
+}
+
+ENV_SETUP
+
+PKG_ARR=($(qatom $1))
+CATEGORY="${PKG_ARR[0]}"
+NAME="${PKG_ARR[1]}"
+if [[ ${PKG_ARR[3]:=foo} == "foo" ]]; then
+ VERSION="${PKG_ARR[2]}"
+else
+ VERSION="${PKG_ARR[2]}-${PKG_ARR[3]}"
+fi
+
+if [[ $# -eq 1 ]]; then
+ TYPE="current_target"
+ PACKAGE=$1
+ SETUP
+ EMERGE
+ CLEANUP
+elif [[ $# -eq 3 ]]; then
+ TYPE="next_target"
+ PACKAGE=$1
+ CURR_TARGET=$2
+ NEXT_TARGET=$3
+ SETUP
+ EMERGE
+ CLEANUP
+fi