mirror of
https://github.com/Ascend/ascend-docker-runtime.git
synced 2025-10-22 04:09:26 +08:00
180 lines
4.6 KiB
Bash
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
|