dexed/setup/build-release.sh

149 lines
4.4 KiB
Bash

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