forked from jthi3rry/cdh-python-cloudera-parcel
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·80 lines (59 loc) · 2.79 KB
/
build.sh
File metadata and controls
executable file
·80 lines (59 loc) · 2.79 KB
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
#!/bin/bash
set -e
BASEDIR=$(dirname "$0")
PARCEL=${1:-CDH_PYTHON-0.0.1.p0}
PARCEL_NAME=${PARCEL%%-*}
PARCEL_VERSION=${PARCEL#*-}
CONDA_URI=https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh
PARCEL_DIR=/app/cloudera/parcels
PYTHON2_VERSION=2.7
PYTHON3_VERSION=3.6
TARGET_OS=centos7
OS_VERSION=el7
CONDA_VERSION=$(echo $CONDA_URI | cut -d - -f 2)
PARCEL_VERSION="${PARCEL_VERSION}-anaconda3_${CONDA_VERSION}-py2_${PYTHON2_VERSION}-py3_${PYTHON3_VERSION}"
echo "Building ${PARCEL_NAME} parcel version ${PARCEL_VERSION} including python ${PYTHON2_VERSION} and ${PYTHON3_VERSION} \
using ${CONDA_URI} with PREFIX ${PARCEL_DIR}/${PARCEL_NAME}-${PARCEL_VERSION}"
echo "Delete ${PARCEL_NAME}-${PARCEL_VERSION} parcel directory"
rm -rf ${PARCEL_DIR}/${PARCEL_NAME}-${PARCEL_VERSION}
echo "Delete target directory"
rm -rf ${BASEDIR}/target
echo "Create target directory"
mkdir -p ${BASEDIR}/target
# RHEL/CentOS
IMAGE_NAME=$(echo ${PARCEL_NAME} | tr '[:upper:]' '[:lower:]')
echo "Creating parcel: ${PARCEL_NAME}-${PARCEL_VERSION}-${OS_VERSION}.parcel"
yum install -y bzip2
mkdir -p ${PARCEL_DIR}
CONDA_EXECUTABLE=$(basename ${CONDA_URI})
curl -O ${CONDA_URI}
sh ${CONDA_EXECUTABLE} -b -p ${PARCEL_DIR}/${PARCEL_NAME}-${PARCEL_VERSION}
rm -f ${CONDA_EXECUTABLE}
export PATH=${PARCEL_DIR}/${PARCEL_NAME}-${PARCEL_VERSION}/bin:$PATH
conda create -y -q -n python2 python=$PYTHON2_VERSION
conda create -y -q -n python3 python=$PYTHON3_VERSION
mkdir -p ${PARCEL_DIR}/${PARCEL_NAME}-${PARCEL_VERSION}/{lib,meta}
echo "Create ${PARCEL_NAME}-${PARCEL_VERSION}/meta/parcel.json"
cp ${BASEDIR}/source/meta/* ${PARCEL_DIR}/${PARCEL_NAME}-${PARCEL_VERSION}/meta/
sed -i \
-e "s/__OS_VERSION__/${OS_VERSION}/g" \
-e "s/__PARCEL_VERSION__/${PARCEL_VERSION}/g" \
-e "s/__PARCEL_NAME__/${PARCEL_NAME}/g" \
${PARCEL_DIR}/${PARCEL_NAME}-${PARCEL_VERSION}/meta/parcel.json
echo "Create ${PARCEL_NAME}-${PARCEL_VERSION}/meta/py_env.sh"
sed -i \
-e "s/__OS_VERSION__/${OS_VERSION}/g" \
-e "s/__PARCEL_VERSION__/${PARCEL_VERSION}/g" \
-e "s/__PARCEL_NAME__/${PARCEL_NAME}/g" \
${PARCEL_DIR}/${PARCEL_NAME}-${PARCEL_VERSION}/meta/py_env.sh
echo "Create ${PARCEL_NAME}-${PARCEL_VERSION}-${OS_VERSION}.parcel"
tar -C ${PARCEL_DIR} -czf ${PARCEL_NAME}-${PARCEL_VERSION}-${OS_VERSION}.parcel ${PARCEL_NAME}-${PARCEL_VERSION} --owner=root --group=root && \
rm -rf ${PARCEL_DIR}/${PARCEL_NAME}-${PARCEL_VERSION}
mv ${PARCEL_NAME}-${PARCEL_VERSION}-${OS_VERSION}.parcel ${BASEDIR}/target
echo "Create manifest.json"
python ${BASEDIR}/lib/make_manifest.py ${BASEDIR}/target
echo "Update index.html"
python ${BASEDIR}/lib/create_index.py ${BASEDIR}/target
echo "Validation"
java -jar lib/validator.jar -f ${BASEDIR}/target/${PARCEL_NAME}-${PARCEL_VERSION}-${OS_VERSION}.parcel
echo "Successfully created ${PARCEL_NAME}-${PARCEL_VERSION}-${OS_VERSION}.parcel"