diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 2458489c4..e7570f5db 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: build: @@ -49,6 +50,12 @@ jobs: VERSION: ${{ steps.version_number.outputs.version }} VERSION_4: ${{ steps.version_number.outputs.version_4 }} run: | + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} release" + fi + # this is rather awkward, but it allows us to use the preinstalled # Android and Qt versions with relative paths cd .. @@ -65,7 +72,7 @@ jobs: git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer # get the build number via curl so this works both for a pull request as well as a push export OUTPUT_DIR="$GITHUB_WORKSPACE" - bash -x ./subsurface/packaging/android/qmake-build.sh -buildnr $BUILDNR -canonicalversion $VERSION -canonicalversion_4 $VERSION_4 + bash -x ./subsurface/packaging/android/qmake-build.sh ${BUILD_EXTRA_ARGS} -buildnr $BUILDNR -canonicalversion $VERSION -canonicalversion_4 $VERSION_4 - name: delete the keystore if: github.event_name == 'push' diff --git a/.github/workflows/ios.yml.disabled b/.github/workflows/ios.yml.disabled index e84f9b351..a895cd86d 100644 --- a/.github/workflows/ios.yml.disabled +++ b/.github/workflows/ios.yml.disabled @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: build: @@ -45,12 +46,18 @@ jobs: env: VERSION: ${{ steps.version_number.outputs.version }} run: | + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release" + fi + cd .. git config --global --add safe.directory $GITHUB_WORKSPACE git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer export IOS_QT=$GITHUB_WORKSPACE/qt-ios echo "build for simulator" - bash -x $GITHUB_WORKSPACE/packaging/ios/build.sh -simulator + bash -x $GITHUB_WORKSPACE/packaging/ios/build.sh -simulator ${BUILD_EXTRA_ARGS} # We need this in order to be able to access the file and publish it mv build-Subsurface-mobile-Qt_5_14_1_for_iOS-Release/Release-iphonesimulator/Subsurface-mobile.app $GITHUB_WORKSPACE/Subsurface-mobile-$VERSION.app diff --git a/.github/workflows/linux-debian-generic.yml b/.github/workflows/linux-debian-generic.yml index 741896134..980ee36ed 100644 --- a/.github/workflows/linux-debian-generic.yml +++ b/.github/workflows/linux-debian-generic.yml @@ -71,9 +71,15 @@ jobs: echo "--------------------------------------------------------------" echo "building desktop" + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release" + fi + # now build for the desktop version (including WebKit) cd .. - bash -e -x subsurface/scripts/build.sh -desktop -build-with-webkit + bash -e -x subsurface/scripts/build.sh -desktop -build-with-webkit ${BUILD_EXTRA_ARGS} - name: test desktop build run: | diff --git a/.github/workflows/linux-debian-trixie-5.15.yml b/.github/workflows/linux-debian-trixie-5.15.yml index 987576f7a..d14254ddd 100644 --- a/.github/workflows/linux-debian-trixie-5.15.yml +++ b/.github/workflows/linux-debian-trixie-5.15.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: do-build-test: diff --git a/.github/workflows/linux-fedora-35-qt6.yml b/.github/workflows/linux-fedora-35-qt6.yml index 8c2780472..2e93f2adb 100644 --- a/.github/workflows/linux-fedora-35-qt6.yml +++ b/.github/workflows/linux-fedora-35-qt6.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: build: @@ -52,12 +53,18 @@ jobs: echo "--------------------------------------------------------------" echo "building desktop" + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release" + fi + # now build for the desktop version (without WebKit) cd .. git config --global --add safe.directory $GITHUB_WORKSPACE git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer git config --global --get-all safe.directory - bash -e -x subsurface/scripts/build.sh -desktop -build-with-qt6 + bash -e -x subsurface/scripts/build.sh -desktop -build-with-qt6 ${BUILD_EXTRA_ARGS} - name: test desktop build run: | diff --git a/.github/workflows/linux-ubuntu-20.04-qt5-appimage.yml b/.github/workflows/linux-ubuntu-20.04-qt5-appimage.yml index 7fdbb71d0..163b83705 100644 --- a/.github/workflows/linux-ubuntu-20.04-qt5-appimage.yml +++ b/.github/workflows/linux-ubuntu-20.04-qt5-appimage.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: build: @@ -60,9 +61,15 @@ jobs: echo "--------------------------------------------------------------" echo "building desktop" + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release" + fi + # now build the appimage cd .. - bash -e -x subsurface/scripts/build.sh -desktop -create-appdir -build-with-webkit + bash -e -x subsurface/scripts/build.sh -desktop -create-appdir -build-with-webkit ${BUILD_EXTRA_ARGS} - name: test desktop build run: | diff --git a/.github/workflows/linux-ubuntu-20.04-qt5.yml b/.github/workflows/linux-ubuntu-20.04-qt5.yml index 6116ce003..6a2efef38 100644 --- a/.github/workflows/linux-ubuntu-20.04-qt5.yml +++ b/.github/workflows/linux-ubuntu-20.04-qt5.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: do-build-test: diff --git a/.github/workflows/linux-ubuntu-22.04-qt5.yml b/.github/workflows/linux-ubuntu-22.04-qt5.yml index c89770038..e737ccba8 100644 --- a/.github/workflows/linux-ubuntu-22.04-qt5.yml +++ b/.github/workflows/linux-ubuntu-22.04-qt5.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: do-build-test: diff --git a/.github/workflows/linux-ubuntu-24.04-qt5.yml b/.github/workflows/linux-ubuntu-24.04-qt5.yml index ddbc27768..a1fead73b 100644 --- a/.github/workflows/linux-ubuntu-24.04-qt5.yml +++ b/.github/workflows/linux-ubuntu-24.04-qt5.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: do-build-test: diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index 632606a56..46f237365 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -44,6 +44,12 @@ jobs: env: CANONICALVERSION: ${{ steps.version_number.outputs.version }} run: | + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release" + fi + cd ${GITHUB_WORKSPACE}/.. export QT_ROOT=${GITHUB_WORKSPACE}/qt-mac/Qt5.15.15 export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins @@ -51,7 +57,7 @@ jobs: export CMAKE_PREFIX_PATH=$QT_ROOT/lib/cmake # now setup Subsurface with WebKit and build the dependencies, using the generic build script - bash -e -x ./subsurface/scripts/build.sh -desktop -build-with-webkit -release -build-deps -ftdi -prep-only + bash -e -x ./subsurface/scripts/build.sh -desktop -build-with-webkit -build-deps -ftdi -prep-only ${BUILD_EXTRA_ARGS} echo "finished initial cmake setup of Subsurface - next build the package" cd subsurface/build diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 06b17dc1d..58c6fef25 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -16,7 +16,7 @@ jobs: build: runs-on: ubuntu-latest container: - image: docker://subsurface/mxe-build:3.3.0 + image: docker://subsurface/mxe-build:3.4.0 steps: - name: checkout sources @@ -47,9 +47,15 @@ jobs: CANONICALVERSION: ${{ steps.version_number.outputs.version }} CANONICALVERSION_4: ${{ steps.version_number.outputs.version_4 }} run: | + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release" + fi + export OUTPUT_DIR="$GITHUB_WORKSPACE" cd /win - bash -x subsurface/packaging/windows/in-container-build.sh 2>&1 | tee build.log + bash -x subsurface/packaging/windows/in-container-build.sh ${BUILD_EXTRA_ARGS} 2>&1 | tee build.log grep "Built target installer" build.log - name: publish pull request artifacts diff --git a/core/btdiscovery.cpp b/core/btdiscovery.cpp index 6cddd2191..7e947fb0d 100644 --- a/core/btdiscovery.cpp +++ b/core/btdiscovery.cpp @@ -78,6 +78,7 @@ static struct namePattern name[] = { { "Luna 2.0", "Scubapro", "Luna 2.0" }, // Mares dive computers { "Mares Genius", "Mares", "Genius" }, + { "Sirius", "Mares", "Sirius" }, { "Mares", "Mares", "Quad" }, // we actually don't know and just pick a common one - user needs to fix in UI // Cress dive computers { "CARESIO_", "Cressi", "Cartesio" }, diff --git a/core/planner.cpp b/core/planner.cpp index f04eff3e6..740a1045b 100644 --- a/core/planner.cpp +++ b/core/planner.cpp @@ -27,6 +27,8 @@ #include "qthelper.h" #include "version.h" +//#define DEBUG_PLAN 255 + static constexpr int base_timestep = 2; // seconds static int decostoplevels_metric[] = { 0, 3000, 6000, 9000, 12000, 15000, 18000, 21000, 24000, 27000, @@ -45,23 +47,19 @@ static int decostoplevels_imperial[] = { 0, 3048, 6096, 9144, 12192, 15240, 1828 #if DEBUG_PLAN void dump_plan(struct diveplan *diveplan) { - struct divedatapoint *dp; - struct tm tm; - if (!diveplan) { printf("Diveplan NULL\n"); return; } + struct tm tm; utc_mkdate(diveplan->when, &tm); printf("\nDiveplan @ %04d-%02d-%02d %02d:%02d:%02d (surfpres %dmbar):\n", tm.tm_year, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, diveplan->surface_pressure.mbar); - dp = diveplan->dp; - while (dp) { - printf("\t%3u:%02u: %6dmm cylid: %2d setpoint: %d\n", FRACTION_TUPLE(dp->time, 60), dp->depth, dp->cylinderid, dp->setpoint); - dp = dp->next; + for (auto &dp: diveplan->dp) { + printf("\t%3u:%02u: %6dmm cylid: %2d setpoint: %d\n", FRACTION_TUPLE(dp.time, 60), dp.depth.mm, dp.cylinderid, dp.setpoint); } } #endif @@ -209,7 +207,7 @@ static void create_dive_from_plan(struct diveplan &diveplan, struct dive *dive, return; #if DEBUG_PLAN & 4 printf("in create_dive_from_plan\n"); - dump_plan(diveplan); + dump_plan(&diveplan); #endif dive->salinity = diveplan.salinity; // reset the cylinders and clear out the samples and events of the @@ -296,7 +294,7 @@ static void create_dive_from_plan(struct diveplan &diveplan, struct dive *dive, dc->last_manual_time.seconds = last_manual_point; #if DEBUG_PLAN & 32 - save_dive(stdout, *dive); + save_dive(stdout, *dive, false); #endif return; } @@ -392,8 +390,8 @@ static std::vector analyze_gaslist(const struct diveplan &diveplan, #if DEBUG_PLAN & 16 for (size_t nr = 0; nr < gaschanges.size(); nr++) { int idx = gaschanges[nr].gasidx; - printf("gaschange nr %d: @ %5.2lfm gasidx %d (%s)\n", nr, gaschanges[nr].depth / 1000.0, - idx, dive.get_cylinder(idx)->gasmix.name().c_str()); + printf("gaschange nr %zu: @ %5.2lfm gasidx %d (%s)\n", nr, gaschanges[nr].depth / 1000.0, + idx, dive->get_cylinder(idx)->gasmix.name().c_str()); } #endif return gaschanges; @@ -789,7 +787,7 @@ std::vector plan(struct deco_state *ds, struct diveplan &diveplan, str #if DEBUG_PLAN & 16 printf("switch to gas %d (%d/%d) @ %5.2lfm\n", best_first_ascend_cylinder, - (get_o2(&gas) + 5) / 10, (get_he(&gas) + 5) / 10, gaschanges[best_first_ascend_cylinder].depth / 1000.0); + (get_o2(gas) + 5) / 10, (get_he(gas) + 5) / 10, gaschanges[best_first_ascend_cylinder].depth / 1000.0); #endif } @@ -902,7 +900,7 @@ std::vector plan(struct deco_state *ds, struct diveplan &diveplan, str #if DEBUG_PLAN & 16 gas = dive->get_cylinder(current_cylinder)->gasmix; printf("switch to gas %d (%d/%d) @ %5.2lfm\n", gaschanges[gi].gasidx, - (get_o2(&gas) + 5) / 10, (get_he(&gas) + 5) / 10, gaschanges[gi].depth / 1000.0); + (get_o2(gas) + 5) / 10, (get_he(gas) + 5) / 10, gaschanges[gi].depth / 1000.0); #endif /* Stop for the minimum duration to switch gas unless we switch to o2 */ if (!last_segment_min_switch && get_o2(dive->get_cylinder(current_cylinder)->gasmix) != 1000) { @@ -956,7 +954,7 @@ std::vector plan(struct deco_state *ds, struct diveplan &diveplan, str #if DEBUG_PLAN & 16 gas = dive->get_cylinder(current_cylinder)->gasmix; printf("switch to gas %d (%d/%d) @ %5.2lfm\n", gaschanges[gi + 1].gasidx, - (get_o2(&gas) + 5) / 10, (get_he(&gas) + 5) / 10, gaschanges[gi + 1].depth / 1000.0); + (get_o2(gas) + 5) / 10, (get_he(gas) + 5) / 10, gaschanges[gi + 1].depth / 1000.0); #endif /* Stop for the minimum duration to switch gas unless we switch to o2 */ if (!last_segment_min_switch && get_o2(dive->get_cylinder(current_cylinder)->gasmix) != 1000) { diff --git a/packaging/windows/docker-build.sh b/packaging/windows/docker-build.sh index 3a3093a99..12847da9f 100755 --- a/packaging/windows/docker-build.sh +++ b/packaging/windows/docker-build.sh @@ -34,7 +34,7 @@ if [[ -z "${CONTAINER_ID}" ]]; then croak "Please make sure GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL are set for the first run of this script." fi - docker create -v ${SUBSURFACE_ROOT}:${CONTAINER_SUBSURFACE_DIR} --name=${CONTAINER_NAME} subsurface/mxe-build:3.3.0 sleep infinity + docker create -v ${SUBSURFACE_ROOT}:${CONTAINER_SUBSURFACE_DIR} --name=${CONTAINER_NAME} subsurface/mxe-build:3.4.0 sleep infinity fi # Start the container diff --git a/packaging/windows/in-container-build.sh b/packaging/windows/in-container-build.sh index c4601f118..1c84c42cb 100755 --- a/packaging/windows/in-container-build.sh +++ b/packaging/windows/in-container-build.sh @@ -13,9 +13,17 @@ set -e mkdir -p win32 cd win32 +BUILD_EXTRA_ARGS="debug" +SMTK2SSRF_EXTRA_ARGS="-b debug" +if [[ "$1" == "-release" ]]; then + BUILD_EXTRA_ARGS="" + SMTK2SSRF_BUILD_EXTRA_ARGS="-b release" + shift +fi + # build Subsurface export MXEBUILDTYPE=x86_64-w64-mingw32.shared -bash -ex ../subsurface/packaging/windows/mxe-based-build.sh installer +bash -ex ../subsurface/packaging/windows/mxe-based-build.sh ${BUILD_EXTRA_ARGS} installer # the strange two step move is in order to get predictable names to use # in the publish step of the GitHub Action @@ -27,7 +35,7 @@ mv subsurface/"$fullname" ${OUTPUT_DIR}/"${fullname%.exe}-installer.exe" bash -ex ../subsurface/packaging/windows/mxe-based-build.sh -noftdi -nolibraw subsurface -bash -ex ../subsurface/packaging/windows/smtk2ssrf-mxe-build.sh -a -i +bash -ex ../subsurface/packaging/windows/smtk2ssrf-mxe-build.sh ${SMTK2SSRF_BUILD_EXTRA_ARGS} -a -i # the strange two step move is in order to get predictable names to use # in the publish step of the GitHub Action diff --git a/packaging/windows/mxe-based-build.sh b/packaging/windows/mxe-based-build.sh index 9da78dec6..0fc52fbd7 100755 --- a/packaging/windows/mxe-based-build.sh +++ b/packaging/windows/mxe-based-build.sh @@ -131,7 +131,6 @@ if [[ "$1" == "debug" ]] ; then RELEASE="Debug" RELEASE_MAIN="Debug" RELEASE_GM="debug" - DLL_SUFFIX="d" shift if [[ -f Release ]] ; then rm -rf * @@ -141,7 +140,6 @@ else RELEASE="Release" RELEASE_MAIN="RelWithDebInfo" RELEASE_GM="release" - DLL_SUFFIX="" if [[ -f Debug ]] ; then rm -rf * fi @@ -281,9 +279,9 @@ done # for some reason we aren't installing Qt5Xml.dll and Qt5Location.dll # I need to figure out why and fix that, but for now just manually copy that as well -EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Xml$DLL_SUFFIX.dll \ -$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Location$DLL_SUFFIX.dll \ -$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5QmlWorkerScript$DLL_SUFFIX.dll" +EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Xml.dll \ +$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Location.dll \ +$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5QmlWorkerScript.dll" for f in $EXTRA_MANUAL_DEPENDENCIES do diff --git a/packaging/windows/smtk2ssrf-mxe-build.sh b/packaging/windows/smtk2ssrf-mxe-build.sh index 2edf6b45e..491428e32 100755 --- a/packaging/windows/smtk2ssrf-mxe-build.sh +++ b/packaging/windows/smtk2ssrf-mxe-build.sh @@ -124,12 +124,10 @@ else fi case "$RELEASE" in debug|Debug) RELEASE=Debug - DLL_SUFFIX="d" [[ -f Release ]] && rm -rf ./* touch Debug ;; release|Release) RELEASE=Release - DLL_SUFFIX="" [[ -f Debug ]] && rm -rf ./* touch Release ;; @@ -175,7 +173,7 @@ $BASEDIR/mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/platforms" # This comes from subsurface's mxe-based-build.sh. I'm not sure it is necessary # but, well, it doesn't hurt. -EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin/Qt5Xml$DLL_SUFFIX.dll" +EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin/Qt5Xml.dll" STAGING_DIR=$BUILDDIR/smtk-import/staging