File: xrd-docker

package info (click to toggle)
xrootd 5.9.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 25,956 kB
  • sloc: cpp: 244,425; sh: 2,691; python: 1,980; ansic: 1,027; perl: 814; makefile: 272
file content (70 lines) | stat: -rwxr-xr-x 2,059 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
70
#!/usr/bin/env bash

trap 'exit 1' TERM KILL INT QUIT ABRT

: ${DOCKER:=$(command -v podman || command -v docker)}

build() {
	OS=${1:-alma9}
	[[ -f xrootd.tar.gz ]] || package
	[[ -f Dockerfile.${OS} ]] || die "unknwon OS: $OS"
	${DOCKER} build -f Dockerfile.${OS} -t xrootd -t xrootd:${OS} .
}


buildx() {
	OS=${1:-fedora}
	ARCH=${2:-amd64}
	ARCH=${ARCH/linux\/}
	[[ -f xrootd.tar.gz ]] || package
	[[ -f Dockerfile.${OS} ]] || die "unknwon OS: $OS"
	${DOCKER} buildx build --platform linux/${ARCH} -f Dockerfile.${OS} -t xrootd:${OS}-${ARCH/\/} .
}

qemu() {
	${DOCKER} run --rm --privileged multiarch/qemu-user-static --reset -p yes
}

clean() {
	rm -f xrootd.tar.gz
}

die() {
	echo "$(basename $BASH_ARGV0): error: $@"
	exit 1
}

package() {
	REPODIR=$(git rev-parse --show-toplevel)
	VERSION=$(git describe ${1:-HEAD})
	echo Creating tarball for XRootD ${VERSION}
	pushd ${REPODIR} >/dev/null
	git archive --prefix=xrootd/ -o xrootd.tar.gz ${1:-HEAD}
	popd >/dev/null
	mv ${REPODIR}/xrootd.tar.gz .
}

usage() {
	echo $(basename $BASH_ARGV0) [COMMAND] [ARGS]
	echo
	echo COMMANDS:
	echo
	echo "  clean              -- remove tarball created by package command"
	echo "  package [VERSION]  -- create xrootd.tar.gz tarball (VERSION=HEAD by default)"
	echo "  build [OS]         -- build docker image based on OS: alma8, alma9 (default), fedora, debian, ubuntu"
	echo "  buildx [OS] [ARCH] -- cross-build docker image based on OS/ARCH pair. Supported architectures"
	echo "                        are amd64, aarch64, ppc64le, s390x (big-endian). Default OS is fedora."
	echo "                        You can see supported platforms with docker buildx inspect --bootstrap."
	echo "  qemu               -- setup QEMU to be able to run cross-builds with buildx command."
	echo
	echo "  Note: The test suite runs automatically during the container builds"
	echo
}

[[ $# == 0 ]] && usage && exit 0

CMD=$1
shift
[[ $(type -t ${CMD}) == "function" ]] || die "unknown command: ${CMD}"
cd $(dirname "${BASH_SOURCE[0]}") || die "cannot change directory"
$CMD $@