arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/spqlios/lib/scripts/ci-pkg
spqlios/lib/scripts/ci-pkgRaw
  1#!/bin/sh
  2
  3# ONLY USE A PREFIX YOU ARE CONFIDENT YOU CAN WIPE OUT ENTIRELY
  4CI_INSTALL_PREFIX=/opt/spqlios
  5CI_REPO_URL=https://spq-dav.algonics.net/ci
  6WORKDIR=`pwd`
  7if [ "x$DESTDIR" = "x" ]; then
  8  DESTDIR=/
  9else
 10  mkdir -p $DESTDIR
 11  DESTDIR=`realpath $DESTDIR`
 12fi
 13DIR=`dirname "$0"`
 14cd $DIR/..
 15DIR=`pwd`
 16
 17FULL_UNAME=`uname -a | tr '[A-Z]' '[a-z]'`
 18HOST=`echo $FULL_UNAME | sed 's/ .*//'`
 19ARCH=none
 20case "$HOST" in 
 21  *linux*)
 22    DISTRIB=`lsb_release -c | awk '{print $2}' | tr '[A-Z]' '[a-z]'`
 23    HOST=linux-$DISTRIB
 24    ;;
 25  *darwin*)
 26    HOST=darwin
 27    ;;
 28  *mingw*|*msys*)
 29    DISTRIB=`echo $MSYSTEM | tr '[A-Z]' '[a-z]'`
 30    HOST=msys64-$DISTRIB
 31    ;;
 32  *)
 33    echo "Host unknown: $HOST";
 34    exit 1
 35esac
 36case "$FULL_UNAME" in 
 37  *x86_64*)
 38    ARCH=x86_64
 39    ;;
 40  *aarch64*)
 41    ARCH=aarch64
 42    ;;
 43  *arm64*)
 44    ARCH=arm64
 45    ;;
 46  *)
 47    echo "Architecture unknown: $FULL_UNAME";
 48    exit 1
 49esac
 50UNAME="$HOST-$ARCH"
 51CMH=
 52if [ -d lib/spqlios/.git ]; then
 53  CMH=`git submodule status | sed 's/\(..........\).*/\1/'`
 54else
 55  CMH=`git rev-parse HEAD | sed 's/\(..........\).*/\1/'`
 56fi
 57FNAME=spqlios-arithmetic-$CMH-$UNAME.tar.gz
 58
 59cat <<EOF
 60================= CI MINI-PACKAGER ==================
 61Work Dir:       WORKDIR=$WORKDIR
 62Spq Dir:        DIR=$DIR
 63Install Root:   DESTDIR=$DESTDIR
 64Install Prefix: CI_INSTALL_PREFIX=$CI_INSTALL_PREFIX
 65Archive Name:   FNAME=$FNAME
 66CI WebDav:      CI_REPO_URL=$CI_REPO_URL
 67=====================================================
 68EOF
 69
 70if [ "x$1" = "xcreate" ]; then
 71  rm -rf dist
 72  cmake -B build -S . -DCMAKE_INSTALL_PREFIX="$CI_INSTALL_PREFIX" -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTING=ON -DWARNING_PARANOID=ON -DDEVMODE_INSTALL=ON || exit 1
 73  cmake --build build || exit 1
 74  rm -rf "$DIR/dist" 2>/dev/null
 75  rm -f "$DIR/$FNAME" 2>/dev/null
 76  DESTDIR="$DIR/dist" cmake --install build || exit 1
 77  if [ -d "$DIR/dist$CI_INSTALL_PREFIX" ]; then
 78    tar -C "$DIR/dist" -cvzf "$DIR/$FNAME" .
 79  else
 80    # fix since msys can mess up the paths
 81    REAL_DEST=`find "$DIR/dist" -type d -exec test -d "{}$CI_INSTALL_PREFIX" \; -print`
 82    echo "REAL_DEST: $REAL_DEST"
 83    [ -d "$REAL_DEST$CI_INSTALL_PREFIX" ] && tar -C "$REAL_DEST" -cvzf "$DIR/$FNAME" .
 84  fi
 85  [ -f "$DIR/$FNAME" ] || { echo "failed to create $DIR/$FNAME"; exit 1; }
 86  [ "x$CI_CREDS" = "x" ] && { echo "CI_CREDS is not set: not uploading"; exit 1; }
 87  curl -u "$CI_CREDS" -T "$DIR/$FNAME" "$CI_REPO_URL/$FNAME"
 88fi
 89
 90if [ "x$1" = "xinstall" ]; then
 91  [ "x$CI_CREDS" = "x" ] && { echo "CI_CREDS is not set: not downloading"; exit 1; }
 92  # cleaning
 93  rm -rf "$DESTDIR$CI_INSTALL_PREFIX"/* 2>/dev/null
 94  rm -f "$DIR/$FNAME" 2>/dev/null
 95  # downloading
 96  curl -u "$CI_CREDS" -o "$DIR/$FNAME" "$CI_REPO_URL/$FNAME"
 97  [ -f "$DIR/$FNAME" ] || { echo "failed to download $DIR/$FNAME"; exit 0; }
 98  # installing
 99  mkdir -p $DESTDIR
100  tar -C "$DESTDIR" -xvzf "$DIR/$FNAME"
101  exit 0
102fi