-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
94 lines (77 loc) · 2.9 KB
/
Makefile
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
TOP ?= $(shell echo $$PWD)
OS_ID := $(shell cat /etc/os-release | grep \^ID=| cut -d "=" -f 2)
OS_VERSION := $(shell cat /etc/os-release | grep \^VERSION_ID=| cut -d "=" -f 2)
DISTRIBUTION ?= "$(strip ${OS_ID})$(strip ${OS_VERSION})"
BUILDERS = ${DISTRIBUTION}
RUNNERS = ${DISTRIBUTION}
SOURCE = ${TOP}/source
BUILD = ${TOP}/build
RELEASE = ${TOP}
DEVELOPMENT = ${SOURCE}/development
IRODS_SERVER = ${SOURCE}/irods_server
IRODS_CLIENT = ${SOURCE}/irods_client
DEVELOPMENT_BRANCH ?= "main"
IRODS_SERVER_BRANCH ?= "4-3-stable"
IRODS_CLIENT_BRANCH ?= "4-3-stable"
all: help
echo Done !
help:
@echo "Maker for iRODS software, by Harry Kodden"
@echo
@echo "Will build into: ${BUILD} for distribution: ${DISTRIBUTION}"
@echo
@echo "You can adjust distribution by setting environ variable 'DISTRIBUTION'"
@echo
@echo "For example:"
@echo "export DISTRIBUTION=centos7"
@echo
@echo You can build the iRODS software for specific branches other "origin/main" like this:
@echo "export IRODS_SERVER_BRANCH=4-3-stable"
@echo "export IRODS_CLIENT_BRANCH=4-3-stable"
@echo
@echo "Usage:"
@echo "make help shows this message"
@echo "make builds builds complete iRODS stack"
@echo "make runners build only the runners"
@echo "make clean cleans the environment, (might reguire sudo privileges)"
@echo
${DEVELOPMENT}:
mkdir -p ${DEVELOPMENT}
@git clone -b ${DEVELOPMENT_BRANCH} https://github.com/irods/irods_development_environment ${DEVELOPMENT}
${IRODS_SERVER}:
mkdir -p ${IRODS_SERVER}
@git clone -b ${IRODS_SERVER_BRANCH} --recursive https://github.com/irods/irods ${IRODS_SERVER}
${IRODS_CLIENT}:
mkdir -p ${IRODS_CLIENT}
@git clone -b ${IRODS_CLIENT_BRANCH} https://github.com/irods/irods_client_icommands ${IRODS_CLIENT}
# Build builders & runners...
builds: ${DEVELOPMENT} ${IRODS_SERVER} ${IRODS_CLIENT}
for os in ${BUILDERS}; \
do \
cd ${DEVELOPMENT} && docker buildx build -f irods_core_builder.$$os.Dockerfile -t irods-core-builder-$$os .; \
cd ${DEVELOPMENT} && docker run --rm \
-v ${IRODS_SERVER}:/irods_source:ro \
-v ${IRODS_CLIENT}:/icommands_source:ro \
-v ${BUILD}/$$os:/irods_packages \
irods-core-builder-$$os -N -j 10 --exclude-unit-tests; \
done;
publish:
for os in ${BUILDERS}; \
do \
rclone sync ${BUILD}/$$os gitpod:/$$os/packages; \
rclone copy ${DEVELOPMENT}/ICAT.sql gitpod:/$$os/; \
rclone copy ${DEVELOPMENT}/irods.logrotate gitpod:/$$os/; \
rclone copy ${DEVELOPMENT}/irods.rsyslog gitpod:/$$os/; \
rclone copy ${DEVELOPMENT}/keep_alive.sh gitpod:/$$os/; \
cp ${DEVELOPMENT}/irods_runner.$$os.Dockerfile /tmp/Dockerfile; \
rclone copy /tmp/Dockerfile gitpod:/$$os/; \
rm /tmp/Dockerfile; \
done;
runners: ${DEVELOPMENT}
for os in ${RUNNERS}; \
do \
cd ${DEVELOPMENT} && docker buildx build -f irods_runner.$$os.Dockerfile -t irods-runner-$$os .; \
done;
clean:
rm -rf ${TOP}/source
rm -rf ${TOP}/build