From 6184b3c29ee2a0337fd74429c9da55021e10c146 Mon Sep 17 00:00:00 2001 From: mfeemster Date: Fri, 23 Jun 2023 00:15:40 -0600 Subject: [PATCH] Fix Linux build. --- Builds/QtCreator/defaults.pri | 4 +- Data/Fractorium.desktop | 22 +- Data/Fractorium.spec | 98 +++---- Data/fractorium.appimage.desktop | 22 +- Data/fractorium.package.desktop | 22 +- archive/build_linux.sh | 430 +++++++++++++++---------------- 6 files changed, 299 insertions(+), 299 deletions(-) diff --git a/Builds/QtCreator/defaults.pri b/Builds/QtCreator/defaults.pri index 4e2ebf9..b8ed0d7 100644 --- a/Builds/QtCreator/defaults.pri +++ b/Builds/QtCreator/defaults.pri @@ -1,6 +1,6 @@ VERSION = 22.21.4.2 win32:CONFIG += skip_target_version_ext -CONFIG += c++20 +CONFIG += c++2a #message(PWD: $$absolute_path($$PWD)) @@ -191,7 +191,7 @@ win32 { QMAKE_CXXFLAGS += -fPIC QMAKE_CXXFLAGS += -fpermissive QMAKE_CXXFLAGS += -pedantic - QMAKE_CXXFLAGS += -std=c++20 + QMAKE_CXXFLAGS += -std=c++2a QMAKE_CXXFLAGS += -Wnon-virtual-dtor QMAKE_CXXFLAGS += -Wshadow QMAKE_CXXFLAGS += -Winit-self diff --git a/Data/Fractorium.desktop b/Data/Fractorium.desktop index fda343e..e8b2678 100644 --- a/Data/Fractorium.desktop +++ b/Data/Fractorium.desktop @@ -1,12 +1,12 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Name=Fractorium -GenericName=Fractal flame editor -Comment=Fractal flame editor -Exec=fractorium -TryExec=fractorium -Icon=/usr/share/fractorium/Fractorium.png -Terminal=false -Categories=Graphics; +[Desktop Entry] +Version=1.0 +Type=Application +Name=Fractorium +GenericName=Fractal flame editor +Comment=Fractal flame editor +Exec=fractorium +TryExec=fractorium +Icon=/usr/share/fractorium/Fractorium.png +Terminal=false +Categories=Graphics; MimeType= \ No newline at end of file diff --git a/Data/Fractorium.spec b/Data/Fractorium.spec index fb6bf10..43e406b 100644 --- a/Data/Fractorium.spec +++ b/Data/Fractorium.spec @@ -1,49 +1,49 @@ -%define _topdir %(pwd) -%define buildroot %{_topdir}/BUILDROOT - -Name: Fractorium -Version: 22.21.4.2 -Release: 1 -Summary: A fractal flame editor with GPU support - -Group: Graphics -BuildArch: x86_64 -License: GPL -URL: https://mfeemster@bitbucket.org/mfeemster/fractorium.git -BuildRoot: %{buildroot} - -%description -Fractorium - -A fractal flame editor with GPU support. - -http://fractorium.com/ - -The project is maintained on Bitbucket: - -https://bitbucket.org/mfeemster/fractorium - -News and updates at the above or on Matt Feemster's DeviantArt page: - -https://www.deviantart.com/mfeemster - - -%files -%attr(0755, root, root) "/usr/bin/Fractorium-x86_64.AppImage" -/usr/bin/emberanimate -/usr/bin/embergenome -/usr/bin/emberrender -/usr/bin/fractorium -%attr(0644, root, root) "/usr/share/applications/fractorium.desktop" -%attr(0644, root, root) "/usr/share/fractorium/fractorium.png" - -#bench files -%attr(0644, root, root) "/usr/share/fractorium/bench/EmberBench.ps1" -%attr(0644, root, root) "/usr/share/fractorium/bench/golubaja_rippingfrominside_complexcode.flame" -%attr(0644, root, root) "/usr/share/fractorium/bench/mfeemster_basicmemory.flame" -%attr(0644, root, root) "/usr/share/fractorium/bench/tatasz_springcrown_manysimplexforms.flame" -%attr(0644, root, root) "/usr/share/fractorium/bench/tyrantwave_flippeddisc_normal.flame" -%attr(0644, root, root) "/usr/share/fractorium/bench/zy0rg_six_bigcomplexcode.flame" - -%changelog - +%define _topdir %(pwd) +%define buildroot %{_topdir}/BUILDROOT + +Name: Fractorium +Version: 22.21.4.2 +Release: 1 +Summary: A fractal flame editor with GPU support + +Group: Graphics +BuildArch: x86_64 +License: GPL +URL: https://mfeemster@bitbucket.org/mfeemster/fractorium.git +BuildRoot: %{buildroot} + +%description +Fractorium + +A fractal flame editor with GPU support. + +http://fractorium.com/ + +The project is maintained on Bitbucket: + +https://bitbucket.org/mfeemster/fractorium + +News and updates at the above or on Matt Feemster's DeviantArt page: + +https://www.deviantart.com/mfeemster + + +%files +%attr(0755, root, root) "/usr/bin/Fractorium-x86_64.AppImage" +/usr/bin/emberanimate +/usr/bin/embergenome +/usr/bin/emberrender +/usr/bin/fractorium +%attr(0644, root, root) "/usr/share/applications/fractorium.desktop" +%attr(0644, root, root) "/usr/share/fractorium/fractorium.png" + +#bench files +%attr(0644, root, root) "/usr/share/fractorium/bench/EmberBench.ps1" +%attr(0644, root, root) "/usr/share/fractorium/bench/golubaja_rippingfrominside_complexcode.flame" +%attr(0644, root, root) "/usr/share/fractorium/bench/mfeemster_basicmemory.flame" +%attr(0644, root, root) "/usr/share/fractorium/bench/tatasz_springcrown_manysimplexforms.flame" +%attr(0644, root, root) "/usr/share/fractorium/bench/tyrantwave_flippeddisc_normal.flame" +%attr(0644, root, root) "/usr/share/fractorium/bench/zy0rg_six_bigcomplexcode.flame" + +%changelog + diff --git a/Data/fractorium.appimage.desktop b/Data/fractorium.appimage.desktop index 30ae3df..48fffec 100644 --- a/Data/fractorium.appimage.desktop +++ b/Data/fractorium.appimage.desktop @@ -1,11 +1,11 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Name=Fractorium -Comment=Fractal flame editor -Exec=fractorium -TryExec=fractorium -Icon=fractorium -Terminal=false -Categories=Graphics; -MimeType= +[Desktop Entry] +Version=1.0 +Type=Application +Name=Fractorium +Comment=Fractal flame editor +Exec=fractorium +TryExec=fractorium +Icon=fractorium +Terminal=false +Categories=Graphics; +MimeType= diff --git a/Data/fractorium.package.desktop b/Data/fractorium.package.desktop index aca28b4..81e0bb4 100644 --- a/Data/fractorium.package.desktop +++ b/Data/fractorium.package.desktop @@ -1,11 +1,11 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Name=Fractorium -Comment=Fractal flame editor -Exec=fractorium -TryExec=fractorium -Icon=/usr/share/fractorium/fractorium.png -Terminal=false -Categories=Graphics; -MimeType= +[Desktop Entry] +Version=1.0 +Type=Application +Name=Fractorium +Comment=Fractal flame editor +Exec=fractorium +TryExec=fractorium +Icon=/usr/share/fractorium/fractorium.png +Terminal=false +Categories=Graphics; +MimeType= diff --git a/archive/build_linux.sh b/archive/build_linux.sh index 78b5541..d28200a 100755 --- a/archive/build_linux.sh +++ b/archive/build_linux.sh @@ -1,215 +1,215 @@ -#!/bin/bash - -echo "Creating the AppImage." - -BUILD_PATH=$PWD -FRACTORIUM_RELEASE_ROOT=$PWD/../Bin/release -DATA_PATH=$BUILD_PATH/../Data -ICON_PATH=$BUILD_PATH/../Source/Fractorium/Icons -APP_DIR=$PWD/../Bin/Fractorium.AppDir -FRACTORIUM_PACKAGE=$BUILD_PATH/../Bin/Fractorium -FRACTORIUM_RPM_PACKAGE=$BUILD_PATH/../Bin/rpmbuild -EXTRA_LIBS=/usr/lib/x86_64-linux-gnu - -# replace 5.12.8 by your QT version, and ensure the installation path is the same -QT_PATH=/home/$USER/Dev/Qt/6.5.1/gcc_64/bin - -LINUX_DEPLOY_QT=/home/$USER/Dev/linuxdeployqt-continuous-x86_64.AppImage -APP_IMAGE_TOOL=/home/$USER/Dev/appimagetool-x86_64.AppImage - -####################### -#simple check - -if [ ! -d "$FRACTORIUM_RELEASE_ROOT" ]; then - echo "release folder not found. Please, build the project." - exit 2 -fi - - -if [ -d "$APP_DIR" ]; then - echo "Fractorium.AppDir folder already exists in Bin: $APP_DIR" - echo "Move this folder aside or remove it." - exit 2 -fi - -if [ -d "$FRACTORIUM_PACKAGE" ]; then - echo "Fractorium folder already exists in Bin: $FRACTORIUM_PACKAGE" - echo "Move this folder aside or remove it." - exit 2 -fi - -if [ -d "$FRACTORIUM_RPM_PACKAGE" ]; then - echo "rpmbuild folder already exists in Bin: $FRACTORIUM_RPM_PACKAGE" - echo "Move this folder aside or remove it." - exit 2 -fi - -if [ ! -d "$QT_PATH" ]; then - echo "QT folder not found. Please, change QT_PATH." - exit 2 -fi - -check_apps() -{ - FILE=$1 - echo $FILE - if [ ! -e "$FILE" ] ; then - echo "Application not found: " $FILE - exit 0 - fi -} - -check_apps "$LINUX_DEPLOY_QT" -check_apps "$APP_IMAGE_TOOL" - -####################### - -export PATH=$QT_PATH:$PATH - -mkdir -p $APP_DIR - -cd $APP_DIR - -FRACTORIUM_BIN=usr/bin -FRACTORIUM_LIB=usr/lib -FRACTORIUM_SHR=usr/share/applications -FRACTORIUM_ICO=usr/share/icons/hicolor/256x256/apps - -mkdir -p $FRACTORIUM_BIN -mkdir -p $FRACTORIUM_LIB -mkdir -p $FRACTORIUM_SHR -mkdir -p $FRACTORIUM_ICO - -cp $FRACTORIUM_RELEASE_ROOT/ember* $FRACTORIUM_BIN -cp $FRACTORIUM_RELEASE_ROOT/fractorium $FRACTORIUM_BIN -cp $FRACTORIUM_RELEASE_ROOT/lib* $FRACTORIUM_LIB - -cp $EXTRA_LIBS/libHalf.so $FRACTORIUM_LIB -cp $EXTRA_LIBS/libIex.so $FRACTORIUM_LIB -cp $EXTRA_LIBS/libIexMath.so $FRACTORIUM_LIB -cp $EXTRA_LIBS/libIlmImf.so $FRACTORIUM_LIB -cp $EXTRA_LIBS/libIlmThread.so $FRACTORIUM_LIB -cp $EXTRA_LIBS/libImath.so $FRACTORIUM_LIB -cp $EXTRA_LIBS/libjpeg.so.8 $FRACTORIUM_LIB -cp $EXTRA_LIBS/libpng16.so.16 $FRACTORIUM_LIB -cp $EXTRA_LIBS/libOpenCL.so.1 $FRACTORIUM_LIB - -cp $DATA_PATH/dark_linux.qss $FRACTORIUM_BIN -cp $DATA_PATH/lightdark.qss $FRACTORIUM_BIN -cp $DATA_PATH/uranium.qss $FRACTORIUM_BIN -cp $DATA_PATH/flam3-palettes.xml $FRACTORIUM_BIN -cp $DATA_PATH/*.gradient $FRACTORIUM_BIN -cp $DATA_PATH/*.ugr $FRACTORIUM_BIN -cp -ar $DATA_PATH/examples $FRACTORIUM_BIN -cp $ICON_PATH/Fractorium.png $FRACTORIUM_ICO/fractorium.png -cp $DATA_PATH/fractorium.appimage.desktop $FRACTORIUM_SHR/fractorium.desktop - -cd ../ - -# LINUX_DEPLOY_QT OPTIONS - -# -unsupported-bundle-everything: Bundles ALL dependency libraries, down to and including the ld-linux.so loader and glibc. This will allow applications built on newer systems to run on older target systems, but it is not recommended since it leads to bundles that are larger than necessary - -# -unsupported-allow-new-glibc: Allows linuxdeployqt to run on distributions newer than the oldest still-supported Ubuntu LTS release. This will result in AppImages that will not run on all still-supported distributions, and is neither recommended nor tested or supported - -$LINUX_DEPLOY_QT $APP_DIR/usr/share/applications/fractorium.desktop -executable=Fractorium.AppDir/usr/bin/emberrender -executable=Fractorium.AppDir/usr/bin/embergenome -executable=Fractorium.AppDir/usr/bin/emberanimate -always-overwrite #-unsupported-allow-new-glibc - -rm $APP_DIR/AppRun - -cp $DATA_PATH/AppRun $APP_DIR - -$APP_IMAGE_TOOL $APP_DIR - -echo "" -echo "Creating the DEB package." -echo "" - -mkdir Fractorium -mkdir -p Fractorium/DEBIAN -mkdir -p Fractorium/usr/bin -mkdir -p Fractorium/usr/share/applications -mkdir -p Fractorium/usr/share/fractorium/bench - -cp Fractorium-x86_64.AppImage Fractorium/usr/bin - -cp $DATA_PATH/fractorium.package.desktop Fractorium/usr/share/applications/fractorium.desktop - -cp $ICON_PATH/Fractorium.png Fractorium/usr/share/fractorium/fractorium.png - -cp $DATA_PATH/control.package Fractorium/DEBIAN/control - -cp $DATA_PATH/Bench/* Fractorium/usr/share/fractorium/bench - -#creating symbolic links -cd ./Fractorium/usr/bin - -create_symlinks() -{ - ln -s Fractorium-x86_64.AppImage fractorium - ln -s Fractorium-x86_64.AppImage emberrender - ln -s Fractorium-x86_64.AppImage embergenome - ln -s Fractorium-x86_64.AppImage emberanimate -} - -create_symlinks - -cd ../../../ - -dpkg --build Fractorium - -echo "" -echo "Creating RPM package" -echo "" - -mkdir rpmbuild -mkdir -p rpmbuild/BUILD -mkdir -p rpmbuild/BUILDROOT -mkdir -p rpmbuild/RPMS -mkdir -p rpmbuild/SOURCES -mkdir -p rpmbuild/SPECS -mkdir -p rpmbuild/SRPMS -mkdir -p rpmbuild/tmp - -cp $DATA_PATH/Fractorium.spec rpmbuild/SPECS - -cd Fractorium -cp -r usr ../rpmbuild/BUILDROOT -cd ../rpmbuild - -rpmbuild -v -bb SPECS/Fractorium.spec - -cd ../ - -mv rpmbuild/RPMS/x86_64/* ./ - -emberVersion=$(grep '#define EMBER_VERSION' ../Source/Ember/EmberDefines.h | sed 's/^.*EMBER_VERSION "\([^"]\+\)".*/\1/') - -mv Fractorium.deb Fractorium-$emberVersion.x86_64.deb -mv Fractorium-$emberVersion-1.x86_64.rpm Fractorium-$emberVersion.x86_64.rpm - -echo "" -echo "Finishing AppImage" -echo "" - -rm -rf Fractorium - -mkdir Fractorium - -cp Fractorium-x86_64.AppImage Fractorium -cd Fractorium - -create_symlinks - -mkdir bench - -cp $DATA_PATH/Bench/* bench - -cd ../ - -tar -czvf Fractorium-$emberVersion.x86_64.AppImage.tar.gz Fractorium - -#cleaning -rm -rf Fractorium -rm -rf Fractorium.AppDir -rm -rf rpmbuild -rm -rf Fractorium-x86_64.AppImage +#!/bin/bash + +echo "Creating the AppImage." + +BUILD_PATH=$PWD +FRACTORIUM_RELEASE_ROOT=$PWD/../Bin/release +DATA_PATH=$BUILD_PATH/../Data +ICON_PATH=$BUILD_PATH/../Source/Fractorium/Icons +APP_DIR=$PWD/../Bin/Fractorium.AppDir +FRACTORIUM_PACKAGE=$BUILD_PATH/../Bin/Fractorium +FRACTORIUM_RPM_PACKAGE=$BUILD_PATH/../Bin/rpmbuild +EXTRA_LIBS=/usr/lib/x86_64-linux-gnu + +# replace 6.5.1 with your QT version, and ensure the installation path is the same +QT_PATH=/home/$USER/Dev/Qt/6.5.1/gcc_64/bin + +LINUX_DEPLOY_QT=/home/$USER/Dev/linuxdeployqt-continuous-x86_64.AppImage +APP_IMAGE_TOOL=/home/$USER/Dev/appimagetool-x86_64.AppImage + +####################### +#simple check + +if [ ! -d "$FRACTORIUM_RELEASE_ROOT" ]; then + echo "release folder not found. Please, build the project." + exit 2 +fi + + +if [ -d "$APP_DIR" ]; then + echo "Fractorium.AppDir folder already exists in Bin: $APP_DIR" + echo "Move this folder aside or remove it." + exit 2 +fi + +if [ -d "$FRACTORIUM_PACKAGE" ]; then + echo "Fractorium folder already exists in Bin: $FRACTORIUM_PACKAGE" + echo "Move this folder aside or remove it." + exit 2 +fi + +if [ -d "$FRACTORIUM_RPM_PACKAGE" ]; then + echo "rpmbuild folder already exists in Bin: $FRACTORIUM_RPM_PACKAGE" + echo "Move this folder aside or remove it." + exit 2 +fi + +if [ ! -d "$QT_PATH" ]; then + echo "QT folder not found. Please, change QT_PATH." + exit 2 +fi + +check_apps() +{ + FILE=$1 + echo $FILE + if [ ! -e "$FILE" ] ; then + echo "Application not found: " $FILE + exit 0 + fi +} + +check_apps "$LINUX_DEPLOY_QT" +check_apps "$APP_IMAGE_TOOL" + +####################### + +export PATH=$QT_PATH:$PATH + +mkdir -p $APP_DIR + +cd $APP_DIR + +FRACTORIUM_BIN=usr/bin +FRACTORIUM_LIB=usr/lib +FRACTORIUM_SHR=usr/share/applications +FRACTORIUM_ICO=usr/share/icons/hicolor/256x256/apps + +mkdir -p $FRACTORIUM_BIN +mkdir -p $FRACTORIUM_LIB +mkdir -p $FRACTORIUM_SHR +mkdir -p $FRACTORIUM_ICO + +cp $FRACTORIUM_RELEASE_ROOT/ember* $FRACTORIUM_BIN +cp $FRACTORIUM_RELEASE_ROOT/fractorium $FRACTORIUM_BIN +cp $FRACTORIUM_RELEASE_ROOT/lib* $FRACTORIUM_LIB + +cp $EXTRA_LIBS/libHalf.so $FRACTORIUM_LIB +cp $EXTRA_LIBS/libIex.so $FRACTORIUM_LIB +cp $EXTRA_LIBS/libIexMath.so $FRACTORIUM_LIB +cp $EXTRA_LIBS/libIlmImf.so $FRACTORIUM_LIB +cp $EXTRA_LIBS/libIlmThread.so $FRACTORIUM_LIB +cp $EXTRA_LIBS/libImath.so $FRACTORIUM_LIB +cp $EXTRA_LIBS/libjpeg.so.8 $FRACTORIUM_LIB +cp $EXTRA_LIBS/libpng16.so.16 $FRACTORIUM_LIB +cp $EXTRA_LIBS/libOpenCL.so.1 $FRACTORIUM_LIB + +cp $DATA_PATH/dark_linux.qss $FRACTORIUM_BIN +cp $DATA_PATH/lightdark.qss $FRACTORIUM_BIN +cp $DATA_PATH/uranium.qss $FRACTORIUM_BIN +cp $DATA_PATH/flam3-palettes.xml $FRACTORIUM_BIN +cp $DATA_PATH/*.gradient $FRACTORIUM_BIN +cp $DATA_PATH/*.ugr $FRACTORIUM_BIN +cp -ar $DATA_PATH/examples $FRACTORIUM_BIN +cp $ICON_PATH/Fractorium.png $FRACTORIUM_ICO/fractorium.png +cp $DATA_PATH/fractorium.appimage.desktop $FRACTORIUM_SHR/fractorium.desktop + +cd ../ + +# LINUX_DEPLOY_QT OPTIONS + +# -unsupported-bundle-everything: Bundles ALL dependency libraries, down to and including the ld-linux.so loader and glibc. This will allow applications built on newer systems to run on older target systems, but it is not recommended since it leads to bundles that are larger than necessary + +# -unsupported-allow-new-glibc: Allows linuxdeployqt to run on distributions newer than the oldest still-supported Ubuntu LTS release. This will result in AppImages that will not run on all still-supported distributions, and is neither recommended nor tested or supported + +$LINUX_DEPLOY_QT $APP_DIR/usr/share/applications/fractorium.desktop -executable=Fractorium.AppDir/usr/bin/emberrender -executable=Fractorium.AppDir/usr/bin/embergenome -executable=Fractorium.AppDir/usr/bin/emberanimate -always-overwrite #-unsupported-allow-new-glibc + +rm $APP_DIR/AppRun + +cp $DATA_PATH/AppRun $APP_DIR + +$APP_IMAGE_TOOL $APP_DIR + +echo "" +echo "Creating the DEB package." +echo "" + +mkdir Fractorium +mkdir -p Fractorium/DEBIAN +mkdir -p Fractorium/usr/bin +mkdir -p Fractorium/usr/share/applications +mkdir -p Fractorium/usr/share/fractorium/bench + +cp Fractorium-x86_64.AppImage Fractorium/usr/bin + +cp $DATA_PATH/fractorium.package.desktop Fractorium/usr/share/applications/fractorium.desktop + +cp $ICON_PATH/Fractorium.png Fractorium/usr/share/fractorium/fractorium.png + +cp $DATA_PATH/control.package Fractorium/DEBIAN/control + +cp $DATA_PATH/Bench/* Fractorium/usr/share/fractorium/bench + +#creating symbolic links +cd ./Fractorium/usr/bin + +create_symlinks() +{ + ln -s Fractorium-x86_64.AppImage fractorium + ln -s Fractorium-x86_64.AppImage emberrender + ln -s Fractorium-x86_64.AppImage embergenome + ln -s Fractorium-x86_64.AppImage emberanimate +} + +create_symlinks + +cd ../../../ + +dpkg --build Fractorium + +echo "" +echo "Creating RPM package" +echo "" + +mkdir rpmbuild +mkdir -p rpmbuild/BUILD +mkdir -p rpmbuild/BUILDROOT +mkdir -p rpmbuild/RPMS +mkdir -p rpmbuild/SOURCES +mkdir -p rpmbuild/SPECS +mkdir -p rpmbuild/SRPMS +mkdir -p rpmbuild/tmp + +cp $DATA_PATH/Fractorium.spec rpmbuild/SPECS + +cd Fractorium +cp -r usr ../rpmbuild/BUILDROOT +cd ../rpmbuild + +rpmbuild -v -bb SPECS/Fractorium.spec + +cd ../ + +mv rpmbuild/RPMS/x86_64/* ./ + +emberVersion=$(grep '#define EMBER_VERSION' ../Source/Ember/EmberDefines.h | sed 's/^.*EMBER_VERSION "\([^"]\+\)".*/\1/') + +mv Fractorium.deb Fractorium-$emberVersion.x86_64.deb +mv Fractorium-$emberVersion-1.x86_64.rpm Fractorium-$emberVersion.x86_64.rpm + +echo "" +echo "Finishing AppImage" +echo "" + +rm -rf Fractorium + +mkdir Fractorium + +cp Fractorium-x86_64.AppImage Fractorium +cd Fractorium + +create_symlinks + +mkdir bench + +cp $DATA_PATH/Bench/* bench + +cd ../ + +tar -czvf Fractorium-$emberVersion.x86_64.AppImage.tar.gz Fractorium + +#cleaning +rm -rf Fractorium +rm -rf Fractorium.AppDir +rm -rf rpmbuild +rm -rf Fractorium-x86_64.AppImage