File: mkdist.sh

package info (click to toggle)
yokadi 1.3.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 772 kB
  • sloc: python: 5,499; sh: 70; makefile: 8
file content (69 lines) | stat: -rwxr-xr-x 1,406 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/sh
set -e

PROGNAME="$(basename "$0")"

die() {
    echo "$PROGNAME: ERROR: $*" | fold -s -w "${COLUMNS:-80}" >&2
    exit 1
}

log() {
    echo "### $*" >&2
}

[ $# = 1 ] || die "USAGE: $PROGNAME <dst/dir>"

SRC_DIR=$(cd "$(dirname $0)/.." ; pwd)
DST_DIR=$(cd "$1" ; pwd)

[ -d "$DST_DIR" ] || die "Destination dir '$DST_DIR' does not exist"

WORK_DIR=$(mktemp -d "$DST_DIR/yokadi-dist.XXXXXX")

log "Copying source"
cp -a --no-target-directory "$SRC_DIR" "$WORK_DIR"

log "Cleaning"
cd "$WORK_DIR"
git reset --hard HEAD
git clean -q -dxf

log "Building archives"
python3 -m venv create "$WORK_DIR/venv"
(
    . "$WORK_DIR/venv/bin/activate"
    pip install build
    python -m build
)
rm -rf "$WORK_DIR/venv"

log "Installing archive"
cd dist/
YOKADI_TARGZ=$(ls ./*.tar.gz)
tar xf "$YOKADI_TARGZ"

ARCHIVE_DIR="$PWD/${YOKADI_TARGZ%.tar.gz}"

python3 -m venv create "$WORK_DIR/venv"
(
    . "$WORK_DIR/venv/bin/activate"

    # Install Yokadi in the virtualenv and make sure it can be started
    # That ensures dependencies got installed by pip
    log "Smoke test"
    pip install "$ARCHIVE_DIR"
    yokadi exit

    log "Installing extra requirements"
    pip install -r "$ARCHIVE_DIR/extra-requirements.txt"

    log "Running tests"
    "$ARCHIVE_DIR/yokadi/tests/tests.py"
)

log "Moving archives out of work dir"
cd "$WORK_DIR/dist"
mv *.tar.gz *.whl "$DST_DIR"
rm -rf "$WORK_DIR"
log "Done"