Files
ascend-docker-runtime/build/build.sh
2020-06-29 17:19:56 +08:00

180 lines
4.6 KiB
Bash

#!/bin/bash
ROOT=$(cd `dirname $0`; pwd)/..
OPENSRC=${ROOT}/opensource
PLATFORM=${ROOT}/platform
OUTPUT=${ROOT}/output
BUILD=${ROOT}/build
CLIDIR=${ROOT}/cli
CLISRCNAME="main.c"
INSTALLHELPERDIR=${ROOT}/install
INSTALLHELPERSRCNAME="main.c"
HOOKDIR=${ROOT}/hook
HOOKSRCNAME="main.go"
RUNTIMEDIR=${ROOT}/runtime
RUNTIMESRCNAME="main.go"
DEBPACK=${ROOT}/debpack
BINDIR=${DEBPACK}/usr/bin
DEBDIR=${DEBPACK}/DEBIAN
RPMPACK=${ROOT}/rpmpack
RPMSOURCESDIR=${RPMPACK}/SOURCES
RPMSPECDIR=${RPMPACK}/SPECS
CLISRCPATH=`find ${CLIDIR} -name "${CLISRCNAME}"`
CLISRCDIR=${CLISRCPATH%/${CLISRCNAME}}
INSTALLHELPERSRCPATH=`find ${INSTALLHELPERDIR} -name "${INSTALLHELPERSRCNAME}"`
INSTALLHELPERSRCDIR=${INSTALLHELPERSRCPATH%/${INSTALLHELPERSRCNAME}}
HOOKSRCPATH=`find ${HOOKDIR} -name "${HOOKSRCNAME}"`
HOOKSRCDIR=${HOOKSRCPATH%/${HOOKSRCNAME}}
RUNTIMESRCPATH=`find ${RUNTIMEDIR} -name "${RUNTIMESRCNAME}"`
RUNTIMESRCDIR=${RUNTIMESRCPATH%/${RUNTIMESRCNAME}}
VERSION="1.0.0"
RELEASE="1"
PACKAGENAEM="ascend-docker-runtime"
CPUARCH=`uname -m`
funcbuild(){
echo "make cli"
[ -d "${CLISRCDIR}/build" ]&&rm -rf ${CLISRCDIR}/build
mkdir ${CLISRCDIR}/build&&cd ${CLISRCDIR}/build
cmake ../
make clean
make
echo "make installhelper"
[ -d "${INSTALLHELPERSRCDIR}/build" ]&&rm -rf ${INSTALLHELPERSRCDIR}/build
mkdir ${INSTALLHELPERSRCDIR}/build&&cd ${INSTALLHELPERSRCDIR}/build
cmake ../
make clean
make
[ -d "${ROOT}/opensource/src" ]&&rm -rf ${ROOT}/opensource/src
mkdir ${ROOT}/opensource/src
/bin/cp -rf ${HOOKSRCDIR}/vendor/* ${ROOT}/opensource/src
export GOPATH="${GOPATH}:${ROOT}/opensource"
export GO111MODULE=off
echo "make hook"
[ -d "${HOOKSRCDIR}/build" ]&&rm -rf ${HOOKSRCDIR}/build
mkdir ${HOOKSRCDIR}/build&&cd ${HOOKSRCDIR}/build
go build -ldflags "-buildid=IdNetCheck" -trimpath ../${HOOKSRCNAME}
mv main ascend-docker-hook
echo "make runtime"
[ -d "${RUNTIMESRCDIR}/build" ]&&rm -rf ${RUNTIMESRCDIR}/build
mkdir ${RUNTIMESRCDIR}/build&&cd ${RUNTIMESRCDIR}/build
go build -ldflags "-buildid=IdNetCheck" -trimpath ../${RUNTIMESRCNAME}
mv main ascend-docker-runtime
}
fillcontrol(){
sed -i "1i\Package: ${PACKAGENAEM}" ${DEBDIR}/control
sed -i "2a\Architecture: all" ${DEBDIR}/control
sed -i "3a\Version: ${VERSION}" ${DEBDIR}/control
}
funcmakedeb(){
cd ${BUILD}
mkdir -pv {${DEBDIR},${BINDIR}}
/bin/cp -f {${RUNTIMESRCDIR},${HOOKSRCDIR},${INSTALLHELPERSRCDIR},${CLISRCDIR}}/build/ascend-docker* ${BINDIR}
FILECNT=`ls -l ${BINDIR} |grep "^-"|wc -l`
echo "prepare package $FILECNT bins"
if [ $FILECNT -ne 4 ]; then
exit 1
fi
CONPATH=`find ${INSTALLHELPERDIR} -name "control"`
INSTPATH=`find ${INSTALLHELPERDIR} -name "postinst"`
RMPATH=`find ${INSTALLHELPERDIR} -name "prerm"`
/bin/cp -f ${CONPATH} ${INSTPATH} ${RMPATH} ${DEBDIR}
echo ${INSTPATH}
fillcontrol
chmod 555 ${DEBDIR}/postinst
chmod 555 ${DEBDIR}/prerm
dpkg-deb -b ${DEBPACK} ${PACKAGENAEM}_${VERSION}-${RELEASE}_${CPUARCH}.deb
DEBS=`find ${BUILD} -name "*.deb"`
/bin/cp ${DEBS} ${OUTPUT}
}
funcfillspec(){
sed -i "4a\BuildArch: $CPUARCH" ${RPMSPECDIR}/*.spec
}
funcmakerpm(){
mkdir -pv ${RPMPACK}/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
/bin/cp -f {${RUNTIMESRCDIR},${HOOKSRCDIR},${INSTALLHELPERSRCDIR},${CLISRCDIR}}/build/ascend-docker* ${RPMSOURCESDIR}
FILECNT=`ls -l ${RPMSOURCESDIR} |grep "^-"|wc -l`
echo "prepare package $FILECNT bins"
if [ $FILECNT -ne 4 ]; then
exit 1
fi
SPECPATH=`find ${INSTALLHELPERDIR} -name "*.spec"`
dos2unix ${SPECPATH}
/bin/cp -f ${SPECPATH} ${RPMSPECDIR}
funcfillspec
rpmbuild --define "_topdir ${RPMPACK}"
rpmbuild --showrc | grep topdir
echo ${RPMPACK}
echo "%_topdir ${RPMPACK}" > ~/.rpmmacros
rpmbuild -bb ${RPMPACK}/SPECS/ascend-docker-plgugin.spec
RPMS=`find ${RPMPACK} -name "*.rpm"`
/bin/cp ${RPMS} ${OUTPUT}
}
funcmakeclean(){
[ -d "${RPMPACK}" ]&&rm -rf ${RPMPACK}
[ -d "${DEBPACK}" ]&&rm -rf ${DEBPACK}
[ -d "${OUTPUT}" ]&&cd ${OUTPUT}&&rm -rf *
}
funcmakepull(){
cd ${OPENSRC}
wget -O cJSON.tar.gz https://github.com/DaveGamble/cJSON/archive/v1.7.13.tar.gz --no-check-certificate
}
funcmakeunzip(){
cd ${OPENSRC}
tar -xzvf cJSON*.tar.gz
CJSONS=`find . -name "cJSON.*"`
CJSONSLIB=${INSTALLHELPERDIR}/deb/src/cjson
/bin/cp -f ${CJSONS} ${CJSONSLIB}
cd ${PLATFORM}
tar -xzvf HuaweiSecureC.tar.gz
SECURECSRC=`find . -name "src"`
SECURECINC=`find . -name "include"`
SECURECLIB=${INSTALLHELPERDIR}/deb/src/HuaweiSecureC
/bin/cp -f ${SECURECSRC}/* ${SECURECLIB}
/bin/cp -f ${SECURECINC}/* ${SECURECLIB}
SECURECLIB=${CLIDIR}/src/HuaweiSecureC
/bin/cp -f ${SECURECSRC}/* ${SECURECLIB}
/bin/cp -f ${SECURECINC}/* ${SECURECLIB}
}
funcmakeclean
if [ $1 == "pull" ]; then
funcmakepull
fi
funcmakeunzip
funcbuild
if [ -f /etc/centos-release ]; then
funcmakerpm
fi
if [ -f /etc/debian_version ]; then
funcmakedeb
fi