set -e # env export DC=ldc2 semver=$(cat setup/version.txt) ver=${semver:1:100} dcd_ver="" dscanner_ver="" echo "building dexed release" $ver # libdexed-d shared objects if [ ! -d "./bin" ]; then mkdir "./bin" fi DEXED_BIN_PATH=$(readlink --canonicalize "./bin") SEARCH_PATH_LDC=$(find "/" -iname "libdruntime-ldc.a" 2>/dev/null | grep -m 1 "libdruntime") SEARCH_PATH_LDC=$(dirname $SEARCH_PATH_LDC) export LIBRARY_PATH="$LIBRARY_PATH":"$SEARCH_PATH_LDC":"$DEXED_BIN_PATH" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$SEARCH_PATH_LDC":"$DEXED_BIN_PATH" # libdexed-d cd dexed-d dub build --build=release --compiler=ldc2 if [ ! -f "../bin/libdexed-d.so" ]; then echo "this explains linking issues..." exit 1 fi #cp "../bin/libdexed-d.so" "/lib64/libdexed-d.so" #cp "../bin/libdexed-d.so" "/lib/libdexed-d.so" cd .. # dexed echo "building dexed..." cd lazproj lazbuild -B dexeddesigncontrols.lpk lazbuild -B dexed.lpi echo "...done" cd .. # dcd echo "building dcd..." if [ ! -d dcd ]; then git clone https://github.com/dlang-community/dcd.git cd dcd git submodule update --init else cd dcd git pull fi git fetch --tags if [ ! -z "$dcd_ver" ]; then git checkout $dcd_ver fi make ldc -j5 echo "...done" cd .. # dscanner echo "building dscanner..." if [ ! -d d-scanner ]; then git clone https://github.com/dlang-community/d-scanner.git cd d-scanner git submodule update --init else cd d-scanner git pull fi git fetch --tags if [ ! -z "$dscanner_ver" ]; then git checkout $dscanner_ver fi make ldc -j5 echo "...done" cd .. # move to setup dir echo "moving files and binaries..." if [ ! -d setup/nux64 ]; then mkdir setup/nux64 fi mv bin/libdexed-d.so setup/nux64/ mv bin/dexed setup/nux64/ mv dcd/bin/dcd-server setup/nux64/ mv dcd/bin/dcd-client setup/nux64/ mv d-scanner/bin/dscanner setup/nux64/ cp logo/dexed.ico setup/nux64/dexed.ico cp logo/dexed256.png setup/nux64/dexed.png cp LICENSE_1_0.txt setup/nux64/dexed.license.txt cp dcd/License.txt setup/nux64/dcd.license.txt echo "...done" # deb, rpm, custom console installer cd setup echo "building the RPM..." bash rpm.sh echo "...done" echo "building the DEB..." bash deb.sh echo "...done" SETUP_APP_NAME="dexed.$ver.linux64.setup" echo "building the custom setup program..." SETUP_DC=$DC if [ "$SETUP_DC" = ldc2 ]; then SETUP_DC=ldmd2 fi $SETUP_DC setup.d -O -release -Jnux64 -J./ -of"output/"$SETUP_APP_NAME bash zip-nux64.sh bash setupzip-nux-noarch.sh $SETUP_APP_NAME echo "...done" # the job executing this script is only triggered when # - a tag is pushed # - a merge request, since one might modify this script. # so push a new release only in the first case. if [ ! -z "$GITLAB_CI" ]; then # build links to the artifacts LNK_BASE="https://gitlab.com/basile.b/dexed/-/jobs/$CI_JOB_ID/artifacts/raw/setup/output/" RPM_NAME="dexed-$ver-0.x86_64.rpm" DEB_NAME="dexed-$ver.amd64.deb" ZP1_NAME="dexed.$ver.linux64.setup.zip" ZP2_NAME="dexed.$ver.linux64.zip" # read the log $DC extract_last_changelog_part.d LOG=$(./extract_last_changelog_part) LOG=$(echo "$LOG" | sed -z 's/\n/\\n/g' | sed -z 's/\"/\\"/g') ASSET_RPM='{ "name" : "'$RPM_NAME'" , "url" : "'$LNK_BASE$RPM_NAME'" , "direct_asset_path" : "/binaries/'$RPM_NAME'" }' ASSET_DEB='{ "name" : "'$DEB_NAME'" , "url" : "'$LNK_BASE$DEB_NAME'" , "direct_asset_path" : "/binaries/'$DEB_NAME'" }' ASSET_ZP1='{ "name" : "'$ZP1_NAME'" , "url" : "'$LNK_BASE$ZP1_NAME'" , "direct_asset_path" : "/binaries/'$ZP1_NAME'" }' ASSET_ZP2='{ "name" : "'$ZP2_NAME'" , "url" : "'$LNK_BASE$ZP2_NAME'" , "direct_asset_path" : "/binaries/'$ZP2_NAME'" }' # ASSET_RPM='{ "name" : "'$RPM_NAME'" , "url" : "'$LNK_BASE$RPM_NAME'" }' # ASSET_DEB='{ "name" : "'$DEB_NAME'" , "url" : "'$LNK_BASE$DEB_NAME'" }' # ASSET_ZP1='{ "name" : "'$ZP1_NAME'" , "url" : "'$LNK_BASE$ZP1_NAME'" }' # ASSET_ZP2='{ "name" : "'$ZP2_NAME'" , "url" : "'$LNK_BASE$ZP2_NAME'" }' REQ_DATA='{ "name" : "'$semver'", "tag_name": "'$semver'", "description": "'$LOG'", "assets": { "links": [ '$ASSET_RPM' , '$ASSET_DEB' , '$ASSET_ZP1' , '$ASSET_ZP2'] } }' # create Gitlab release if [ -z "$CI_MERGE_REQUEST_ID" ]; then curl -g --header 'Content-Type: application/json' \ --header "PRIVATE-TOKEN: $PUB_DEXED_RLZ" \ --data-raw "$REQ_DATA" \ --request POST https://gitlab.com/api/v4/projects/15908229/releases fi fi