diff --git a/CMakeLists.txt b/CMakeLists.txt index 44620c53737392acc449add0b52c05d1ab694c86..90d73756054fabb930557f9ff632c46c57351dc7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,7 +54,11 @@ SET( CPACK_PACKAGE_VERSION_MAJOR 2) SET( CPACK_PACKAGE_VERSION_MINOR 11) SET( CPACK_PACKAGE_VERSION_PATCH 1) -SET( CPACK_SYSTEM_NAME "debian-10.0-amd64") +SET( CPACK_SYSTEM_TYPE "debian") +SET( CPACK_SYSTEM_VERSION "10.0") +SET( CPACK_SYSTEM_ARCH "amd64") +SET( CPACK_SYSTEM_CODENAME "buster") +SET( CPACK_SYSTEM_NAME "${CPACK_SYSTEM_TYPE}-${CPACK_SYSTEM_VERSION}-${CPACK_SYSTEM_ARCH}-${CPACK_SYSTEM_CODENAME}") SET( CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${CPACK_PACKAGE_VERSION_PATCH}") SET( CPACK_DEBIAN_PACKAGE_MAINTAINER "Dmitriy Gerasimov <naeper@demlabs.net>" ) SET( CPACK_DEBIAN_PACKAGE_DESCRIPTION_SUMMARY "CellFrame Node software https://cellframe.net" ) diff --git a/prod_build/general/conf/status b/prod_build/general/conf/status index ec51dbab4d9aec34b4975de26716109730b30df6..5082e1d8aae5d8afc0df90903a6ad9e1bddd14a1 100644 --- a/prod_build/general/conf/status +++ b/prod_build/general/conf/status @@ -1 +1 @@ -IMPLEMENTED="linux/debian" +IMPLEMENTED="linux/debian linux/ubuntu" diff --git a/prod_build/linux/debian/scripts/compile_and_pack.sh b/prod_build/linux/debian/scripts/compile_and_pack.sh index e01aa41b66143151714e98ef0faf85a956586fb0..2aa75355d06394c6a62addd41759734a1b95956a 100755 --- a/prod_build/linux/debian/scripts/compile_and_pack.sh +++ b/prod_build/linux/debian/scripts/compile_and_pack.sh @@ -16,17 +16,30 @@ # } +substitute_pkgname_postfix() { + + #CODENAME=$(lsb_release -a | grep Codename | cut -f2) + #VERSION=$(lsb_release -a | grep Version | cut -f2) + #DISTRO_TYPE=$(lsb_release -a | grep Distributor | cut -f2) +set -x + for variable in $(lsb_release -a 2>/dev/null | sed 's/\t//g' | sed 's/ //g' | sed 's/\:/\=/g'); do + echo "variable is $variable" + export $variable + done + sed -i "/ CPACK_SYSTEM_TYPE/s/\".*\"/\"$DistributorID\"/" CMakeLists.txt + sed -i "/ CPACK_SYSTEM_VERSION/s/\".*\"/\"$Release\"/" CMakeLists.txt + sed -i "/ CPACK_SYSTEM_CODENAME/s/\".*\"/\"$Codename\"/" CMakeLists.txt +# sed -i "/ CPACK_SYSTEM_ARCH/s/\".*\"/\"$Codename\"/" CMakeLists.txt No need to replace anything while we're on amd64 arch only. + export -n "DistributorID" + export -n "Release" + export -n "Codename" + export -n "Description" +set +x +} -### dpkg-buildpackage -J -us --changes-option=--build=any -uc && mkdir -p build && mv ../*.deb build/ && make distclean || error=$? && make distclean && $(error_explainer $error) #2DO: Learn how to sign up the package. -# if [ "$1" == "--static" ]; then - # export $QT_SELECT="default" #Returning back the shared library link - #fi - - -#cmake -S . -B build && make -C build && cpack -B build pwd -mkdir -p build && cd build && cmake ../ && make -j3 && cpack && cd .. +substitute_pkgname_postfix && mkdir -p build && cd build && cmake ../ && make -j3 && cpack && cd .. ### touch /etc/apt/sources.list.d/demlabs.list deb https://debian.pub.demlabs.net/ bionic main universe multiverse diff --git a/prod_build/linux/ubuntu/conf/dependencies b/prod_build/linux/ubuntu/conf/dependencies new file mode 100644 index 0000000000000000000000000000000000000000..1f99bdcdd0b4e1c7ae357f2abc90079659a9a323 --- /dev/null +++ b/prod_build/linux/ubuntu/conf/dependencies @@ -0,0 +1 @@ +PKG_DEPS="cmake libjson-c-dev libsqlite3-dev libmemcached-dev libev-dev libmagic-dev libcurl4-gnutls-dev libldb-dev libtalloc-dev libtevent-dev" diff --git a/prod_build/linux/ubuntu/conf/publish b/prod_build/linux/ubuntu/conf/publish new file mode 100644 index 0000000000000000000000000000000000000000..6e09e69a70fe5128bf8e666642054bef7528c14e --- /dev/null +++ b/prod_build/linux/ubuntu/conf/publish @@ -0,0 +1,8 @@ +HOST_DISTR_VERSIONS="bionic" +HOST_ARCH_VERSIONS="amd64" +PACKAGE_PATH=builds/deb/ +REPO_DIR_SRC=/var/tmp/repository +DISTR_CODENAME="bionic" +REPO_ADDR=debian.pub.demlabs.net +REPO_DIR=/var/www/html/debian.pub.demlabs.net +DISTR_COMPONENT=main diff --git a/prod_build/linux/ubuntu/essentials b/prod_build/linux/ubuntu/essentials new file mode 120000 index 0000000000000000000000000000000000000000..ff903c9ce392d694f2b5d496193d6bb591a7941e --- /dev/null +++ b/prod_build/linux/ubuntu/essentials @@ -0,0 +1 @@ +../debian/essentials \ No newline at end of file diff --git a/prod_build/linux/ubuntu/scripts/build.sh b/prod_build/linux/ubuntu/scripts/build.sh new file mode 120000 index 0000000000000000000000000000000000000000..53fcd46b251845f60ef6a231ff52574efafdcf55 --- /dev/null +++ b/prod_build/linux/ubuntu/scripts/build.sh @@ -0,0 +1 @@ +../../debian/scripts/build.sh \ No newline at end of file diff --git a/prod_build/linux/ubuntu/scripts/chroot b/prod_build/linux/ubuntu/scripts/chroot new file mode 120000 index 0000000000000000000000000000000000000000..688a8bfe7ca32505af15fdaa047a41cbe86f7689 --- /dev/null +++ b/prod_build/linux/ubuntu/scripts/chroot @@ -0,0 +1 @@ +../../debian/scripts/chroot \ No newline at end of file diff --git a/prod_build/linux/ubuntu/scripts/cleanup.sh b/prod_build/linux/ubuntu/scripts/cleanup.sh new file mode 120000 index 0000000000000000000000000000000000000000..93a84bf65220e23f445d63411f57a3e969028b09 --- /dev/null +++ b/prod_build/linux/ubuntu/scripts/cleanup.sh @@ -0,0 +1 @@ +../../debian/scripts/cleanup.sh \ No newline at end of file diff --git a/prod_build/linux/ubuntu/scripts/compile.sh b/prod_build/linux/ubuntu/scripts/compile.sh deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/prod_build/linux/ubuntu/scripts/compile_and_pack.sh b/prod_build/linux/ubuntu/scripts/compile_and_pack.sh new file mode 120000 index 0000000000000000000000000000000000000000..ef456c37bf9f514218eeb757410ef6908a266cc5 --- /dev/null +++ b/prod_build/linux/ubuntu/scripts/compile_and_pack.sh @@ -0,0 +1 @@ +../../debian/scripts/compile_and_pack.sh \ No newline at end of file diff --git a/prod_build/linux/ubuntu/scripts/deploy.sh b/prod_build/linux/ubuntu/scripts/deploy.sh deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/prod_build/linux/ubuntu/scripts/deploy.sh b/prod_build/linux/ubuntu/scripts/deploy.sh new file mode 120000 index 0000000000000000000000000000000000000000..bbb85a115dde05f9829bbaa9941e767b1890521f --- /dev/null +++ b/prod_build/linux/ubuntu/scripts/deploy.sh @@ -0,0 +1 @@ +../../debian/scripts/deploy.sh \ No newline at end of file diff --git a/prod_build/linux/ubuntu/scripts/install_test.sh b/prod_build/linux/ubuntu/scripts/install_test.sh new file mode 120000 index 0000000000000000000000000000000000000000..70188470343dbbc9278c66b95259c759c0257fc8 --- /dev/null +++ b/prod_build/linux/ubuntu/scripts/install_test.sh @@ -0,0 +1 @@ +../../debian/scripts/install_test.sh \ No newline at end of file diff --git a/prod_build/linux/ubuntu/scripts/pack.sh b/prod_build/linux/ubuntu/scripts/pack.sh deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/prod_build/linux/ubuntu/scripts/pack.sh b/prod_build/linux/ubuntu/scripts/pack.sh new file mode 120000 index 0000000000000000000000000000000000000000..92454e5f5c8f22e1feae9dd7b2cf340acfa42779 --- /dev/null +++ b/prod_build/linux/ubuntu/scripts/pack.sh @@ -0,0 +1 @@ +../../debian/scripts/pack.sh \ No newline at end of file diff --git a/prod_build/linux/ubuntu/scripts/post-build.sh b/prod_build/linux/ubuntu/scripts/post-build.sh new file mode 120000 index 0000000000000000000000000000000000000000..bd51497fa602bf52011607b7d339edabc4f9dd73 --- /dev/null +++ b/prod_build/linux/ubuntu/scripts/post-build.sh @@ -0,0 +1 @@ +../../debian/scripts/post-build.sh \ No newline at end of file diff --git a/prod_build/linux/ubuntu/scripts/pre-build.sh b/prod_build/linux/ubuntu/scripts/pre-build.sh index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f7ab42e9805689a6e64071914ffefbcd198c50af 100755 --- a/prod_build/linux/ubuntu/scripts/pre-build.sh +++ b/prod_build/linux/ubuntu/scripts/pre-build.sh @@ -0,0 +1,134 @@ +#!/bin/bash + +#export_variables() { + +#IFS=$'\n' +#for variable in $(cat prod_build/linux/ubuntu/conf/*); do +# echo "$variable" +# export $(echo "$variable" | sed 's/\"//g') +#done + +#} + + +#installing required dependencies + +check_packages() { + + IFS=" " + local PKG_DEPPIES=$(echo $PKG_DEPS | sed 's/\"//g') + for element in "$PKG_DEPPIES"; do + echo "[DEBUGGA] Checking if $element is installed" + if ! dpkg-query -s $element; then + echo "[WRN] Package $element is not installed. Starting installation" + return 1 + fi + done + return 0 + +} + +install_dependencies() { + + if check_packages >> /dev/null; then + echo "[INF] All required packages are installed" + else + echo "" + local PKG_DEPPIES=$(echo $PKG_DEPS | sed 's/\"//g') + echo "[DEBUGGA] Attempting to install $PKG_DEPPIES" + if sudo /usr/bin/apt-get install -y $PKG_DEPPIES ; then + echo "" + echo "[INF] Packages were installed successfully" + else + echo "[ERR] can\'t install required packages. Please, check your package manager" + echo "Aborting" + exit 1 + fi + fi + return 0 + +} + +#extract_version_number() { + +#IFS=" " +#for entry in $VERSION_ENTRIES; do +# VERSION_STRING=$(echo $VERSION_STRING | sed "s/$entry/$( cat $VERSION_FILE | grep $entry | sed 's/ //g' | cut -d '=' -f2 )/") #Replacing templates with numbers +#done +#echo -e "project version is $VERSION_STRING" +# +#} + +#extract_gitlog_text() { +# +#borders=$( git log | grep -n 'commit\|Date' | head -n 3 | tail -n 2 | cut -d ':' -f1) +#upb=$(echo $borders | cut -d $'\n' -f1) +#dwnb=$(echo $borders | cut -d $'\n' -f2) +#text=$(git log | head -n $( expr $dwnb - 2 ) | tail -n $( expr $dwnb - $upb - 3 ) ) +#echo $text +# +#} + +#. prod_build/general/install_dependencies +. prod_build/general/pre-build.sh #VERSIONS and git +export_variables "prod_build/general/conf/*" +export_variables "prod_build/linux/ubuntu/conf/*" + +VERSION_STRING=$(echo $VERSION_FORMAT | sed "s/\"//g" ) #Removing quotes +VERSION_ENTRIES=$(echo $VERSION_ENTRIES | sed "s/\"//g" ) +extract_version_number +[ -e prod_build/linux/ubuntu/essentials/changelog ] && last_version_string=$(cat prod_build/linux/ubuntu/essentials/changelog | head -n 1 | cut -d '(' -f2 | cut -d ')' -f1) + + + +#if [ -z "$last_version_string"]; then +# echo "Changelog won't be modified" +# exit 1; +#fi + +### ideally, we need to ask whether changelog needs to be updated or not +### is it correct? And if not, we just need to exit from this conditional construction +### not quite. See, there is always a changelog in git. (git log). We need to maintain ubuntu/changelog on projects not built with cmake, +### cause information from this changelog (version) is used to write package metadata. And we had messed up for a long time because of desyncing. +### This is a solution. We modify the changelog only if there are updates and not on build servers. And of course if it's not cmake-based build project. +### let's keep those comments here for a while +NOTONBUILDSERVER=0 +gitlab-runner -v 2&>>/dev/null || NOTONBUILDSERVER=$? +if [ $NOTONBUILDSERVER == 0 ]; then + echo "[WRN] on build platform. Version won't be changed" # okay, so this echo wont be outputted as the condition is not true + +elif [ ! -e ubuntu/changelog ]; then ### I guess this what's supposed to be added in order to solve the issue with the changelog?+ + echo "[INF] Ubuntu changelog does not exist. Nothing to be done there." #I supposed it should look somehow like that. +#makes sense +elif [ "$last_version_string" == "$VERSION_STRING" ]; then + echo "[INF] Version $last_version_string is equal to $VERSION_STRING. Nothing to change" +else + echo "[INF] editing the changelog" + text=$(extract_gitlog_text) + IFS=$'\n' + for textline in $text; do + dch -v $VERSION_STRING $textline + done + branch=$(git branch | grep "*" | cut -c 3- ) + case branch in + "master" ) branch="stable";; + "develop" ) branch="testing";; + esac + dch -r --distribution "$branch" --force-distribution ignored + controlfile_version=$(cat prod_build/linux/ubuntu/essentials/control | grep "Standards" | cut -d ' ' -f2) #Add to control info. + sed -i "s/$controlfile_version/$VERSION_STRING/" prod_build/linux/ubuntu/essentials/control + export UPDVER=1 +fi + +IFS=" " +CHROOT_PREFIX=$1 +for distr in $HOST_DISTR_VERSIONS; do #we need to install required dependencies under schroot. + for arch in $HOST_ARCH_VERSIONS; do + echo "$CHROOT_PREFIX-$distr-$arch" + schroot -c $CHROOT_PREFIX-$distr-$arch -- prod_build/linux/ubuntu/scripts/chroot/pre-build.sh "$PKG_DEPS" || errcode=$? + [[ $errcode != 0 ]] && echo "Problems with $CHROOT_PREFIX-$distr-$arch occured. You had installed it, right?" + done +done +exit 0 + +## Maybe we do have the version required? Then we don't need to build it again. CHECK IT THERE! diff --git a/prod_build/linux/ubuntu/scripts/test.sh b/prod_build/linux/ubuntu/scripts/test.sh deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/prod_build/linux/ubuntu/scripts/test.sh b/prod_build/linux/ubuntu/scripts/test.sh new file mode 120000 index 0000000000000000000000000000000000000000..ebcc2fa64c269136a9e029db80b38fce615216b5 --- /dev/null +++ b/prod_build/linux/ubuntu/scripts/test.sh @@ -0,0 +1 @@ +../../debian/scripts/test.sh \ No newline at end of file