1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212
|
#! /bin/bash
# No parameter is not required
# This script will identify the distribution and release version
#
function getOS () {
rel=$(lsb_release -r | awk '{print $2}')
os=$(lsb_release -i | awk '{print $3}')
tmp2=${os:0:3}
echo "tmp2 = '$tmp2'"
if [ "$tmp2" = "Ubu" ] ; then
OSNAME=$os${rel:0:2}
elif [ "$tmp2" = "Deb" ];then
OSNAME=$os$rel
elif [ "$tmp2" = "Ras" ];then
OSNAME="RasPiOS"
else
OSNAME="unknown"
fi
}
function getPkg () {
unset PKGNAME
unset PKGVERS
while read stat pkg ver other ;
do
if [[ ${stat} == "ii" ]] ; then
PKGNAME=`awk -F: '{print $1}' <<< ${pkg}`
PKGVERS=`awk -F. '{print $1 "." $2}' <<< ${ver}`
break
fi ;
done <<< $(dpkg -l | grep $1)
}
ITERATION=$1
if [ -z ${ITERATION} ]; then
ITERATION="1"
fi
SRC=/home/$USER/OSCAR/OSCAR-code/oscar
VERSION=`awk '/#define VERSION / { gsub(/"/, "", $3); print $3 }' ${SRC}/VERSION`
if [[ ${VERSION} == *-* ]]; then
# Use ~ for prerelease information so that it sorts correctly compared to release
# versions. See https://www.debian.org/doc/debian-policy/ch-controlfields.html#version
IFS="-" read -r VERSION PRERELEASE <<< ${VERSION}
if [[ ${PRERELEASE} == *rc* ]]; then
RC=1
fi
VERSION="${VERSION}-${PRERELEASE}"
fi
GIT_REVISION=`awk '/#define GIT_REVISION / { gsub(/"/, "", $3); print $3 }' ${SRC}/git_info.h`
echo Version: ${VERSION}
# application name
appli_name="OSCAR"
package_name="oscar"
pre_inst="tst_user.sh"
# build folder (absolute path is better)
build_folder="/home/$USER/OSCAR/build"
if [[ -n ${PRERELEASE} && -z ${RC} ]] ; then
appli_name=${appli_name}-test
package_name=${package_name}-test
post_inst="ln_usrbin-test.sh"
pre_rem="rm_usrbin-test.sh"
post_rem="clean_rm-test.sh"
else
post_inst="ln_usrbin.sh"
pre_rem="rm_usrbin.sh"
post_rem="clean_rm.sh"
fi
# temporary folder (absolute path is better)
temp_folder="/home/$USER/tmp_deb_${appli_name}/"
# destination folder in the .deb file
dest_folder="/usr/"
# the .deb file mustn't exist
archi_tmp=$(lscpu | grep -i architecture | awk -F: {'print $2'} | tr -d " ")
if [ "$archi_tmp" = "x86_64" ];then
archi="amd64"
else
archi="unknown"
fi
# detection of the OS with version for Ubuntu
getOS
echo "osname='$OSNAME'"
#deb_file="${appli_name}_${VERSION}-${ITERATION}_$archi.deb"
deb_file="${appli_name}_${VERSION}-${OSNAME}_$archi.deb"
# if deb file exists, fatal error
if [ -f "./$deb_file" ]; then
echo "destination file (./$deb_file) exists. fatal error"
exit
fi
# retrieve packages version for the dependencies
getPkg libqt5core
qtver=$PKGVERS
getPkg libdouble
dblPkg=$PKGNAME
echo "QT version " $qtver
echo "DblConv package " $dblPkg
# clean folders need to create the package
if [ -d "${temp_folder}" ]; then
rm -r ${temp_folder}
fi
mkdir ${temp_folder}
if [ ! -d "${temp_folder}" ]; then
echo "Folder (${temp_folder}) not created : fatal error."
exit
fi
chmod 0755 ${temp_folder}
# save current value of umask (for u=g and not g=o)
current_value=$(umask)
umask 022
mkdir ${temp_folder}/bin
mkdir ${temp_folder}/share
mkdir ${temp_folder}/share/${appli_name}
mkdir ${temp_folder}/share/doc
share_doc_folder="${temp_folder}/share/doc/${package_name}"
mkdir ${share_doc_folder}
mkdir ${temp_folder}/share/icons
mkdir ${temp_folder}/share/icons/hicolor
mkdir ${temp_folder}/share/icons/hicolor/48x48
mkdir ${temp_folder}/share/icons/hicolor/48x48/apps
mkdir ${temp_folder}/share/icons/hicolor/scalable
mkdir ${temp_folder}/share/icons/hicolor/scalable/apps
mkdir ${temp_folder}/share/applications
# must delete debug symbol in OSCAR binary file
# --- V1
strip -s -o ${temp_folder}/bin/${appli_name} ${build_folder}/oscar/OSCAR
#old code : cp ${build_folder}/oscar/OSCAR ${temp_folder}/bin
# 2>/dev/null : errors does not appear : we don't care about them
cp -r ${build_folder}/oscar/Help ${temp_folder}/share/${appli_name} 2>/dev/null
cp -r ${build_folder}/oscar/Html ${temp_folder}/share/${appli_name} 2>/dev/null
cp -r ${build_folder}/oscar/Translations ${temp_folder}/share/${appli_name} 2>/dev/null
cp ./${appli_name}.png ${temp_folder}/share/icons/hicolor/48x48/apps/${appli_name}.png
cp ./${appli_name}.svg ${temp_folder}/share/icons/hicolor/scalable/apps/${appli_name}.svg
cp ./${appli_name}.desktop ${temp_folder}/share/applications/${appli_name}.desktop
#echo "Copyright 2019-2020 oscar-team.org <oscar@oscar-team.org>" > $share_doc_folder/copyright
#echo "Licensed under /usr/share/common-licenses/GPL-3" >> $share_doc_folder/copyright
cp ./copyright $share_doc_folder/copyright
changelog_file="./changelog"
#automatic changelog as a bad name
# need to generate one and say fpm to use it instead of create one
# it seems that it needs both of them...
# creation of the Debian changelog
echo "$appli_name (${VERSION}-${ITERATION}) whatever; urgency=medium" > $changelog_file
echo "" >> $changelog_file
echo " * Package created with FPM." >> $changelog_file
echo "" >> $changelog_file
echo " * See the Release Notes under Help/About menu" >> $changelog_file
echo "" >> $changelog_file
echo -n " -- oscar-team.org <oscar@oscar-team.org> " >> $changelog_file
date -Iminutes >> $changelog_file
cp $changelog_file $share_doc_folder/changelog
gzip --best $share_doc_folder/changelog
description='Open Source CPAP Analysis Reporter\nProvides graphical and statistical display of the CPAP stored data'
# trick for dummies : need to use echo -e to take care of \n (cariage return to slip description and extra one
description=$(echo -e $description)
# restore umask value
umask $current_value
# create the .deb file (litian test show juste a warning with a man that doesn't exists : don't care about that)
fpm --input-type dir --output-type deb \
--prefix ${dest_folder} \
--before-install ${pre_inst} \
--after-install ${post_inst} \
--before-remove ${pre_rem} \
--after-remove ${post_rem} \
--name ${appli_name} --version ${VERSION} --iteration ${OSNAME} \
--category misc \
--deb-priority optional \
--maintainer " -- oscar-team.org <oscar@oscar-team.org>" \
--license GPL3+ \
--vendor oscar-team.org \
--description "$description" \
--url https://sleepfiles.com/OSCAR \
--deb-no-default-config-files \
--depends $dblPkg \
--depends libpcre16-3 \
--depends qttranslations5-l10n \
--depends "libqt5core5a >= 5.9" \
--depends libqt5serialport5 \
--depends libqt5xml5 \
--depends libqt5network5 \
--depends libqt5gui5 \
--depends libqt5widgets5 \
--depends libqt5opengl5 \
--depends libqt5printsupport5 \
--depends libglu1-mesa \
--depends libgl1 \
--depends libc6 \
--no-deb-generate-changes \
-C ${temp_folder} \
.
|