diff options
Diffstat (limited to 'distribution')
| -rw-r--r-- | distribution/CMakeLists.txt | 9 | ||||
| -rw-r--r-- | distribution/fedora/README | 26 | ||||
| -rw-r--r-- | distribution/fedora/xtrkcad-5.2.2GA-xtrkcad.desktop.patch | 106 | ||||
| -rw-r--r-- | distribution/fedora/xtrkcad.spec | 114 | ||||
| -rw-r--r-- | distribution/flatpak/CMakeLists.txt | 24 | ||||
| -rw-r--r-- | distribution/flatpak/README.txt | 101 | ||||
| -rwxr-xr-x | distribution/flatpak/buildFlatpak.sh | 547 | ||||
| -rwxr-xr-x | distribution/flatpak/make-source-archive | 23 | ||||
| -rw-r--r-- | distribution/flatpak/org.xtrkcad.xtrkcad.yml | 55 | ||||
| -rw-r--r-- | distribution/osx/bundle/xtrackcad-startup | 14 | ||||
| -rwxr-xr-x | distribution/osx/gtk-bundle/xtrkcad-launcher.sh | 30 | ||||
| -rw-r--r-- | distribution/posix/CMakeLists.txt | 24 | ||||
| -rwxr-xr-x | distribution/posix/postinst | 13 | ||||
| -rwxr-xr-x | distribution/posix/prerm | 13 |
14 files changed, 1020 insertions, 79 deletions
diff --git a/distribution/CMakeLists.txt b/distribution/CMakeLists.txt index 119b684..5715ff5 100644 --- a/distribution/CMakeLists.txt +++ b/distribution/CMakeLists.txt @@ -3,11 +3,7 @@ SET(CPACK_PACKAGE_DESCRIPTION "XTrackCad is a CAD program for designing model ra SET(CPACK_PACKAGE_EXECUTABLES "xtrkcad;XTrkCAD ${XTRKCAD_VERSION}") IF(WIN32) # Add suffix - IF(WIN64) - SET(CPACK_PACKAGE_FILE_NAME "xtrkcad-setup-${XTRKCAD_VERSION}-x64") - ELSE(WIN64) - SET(CPACK_PACKAGE_FILE_NAME "xtrkcad-setup-${XTRKCAD_VERSION}-x86") - ENDIF(WIN64) + SET(CPACK_PACKAGE_FILE_NAME "xtrkcad-setup-${XTRKCAD_VERSION}-${XTRKCAD_ARCH_SUBDIR}") ELSE(WIN32) SET(CPACK_PACKAGE_FILE_NAME "xtrkcad-setup-${XTRKCAD_VERSION}") ENDIF(WIN32) @@ -32,6 +28,9 @@ ENDIF(APPLE) IF(UNIX AND NOT APPLE) ADD_SUBDIRECTORY(posix) + if(Flatpak_FOUND) + ADD_SUBDIRECTORY(flatpak) + endif() ENDIF(UNIX AND NOT APPLE) IF(WIN32) diff --git a/distribution/fedora/README b/distribution/fedora/README new file mode 100644 index 0000000..239b454 --- /dev/null +++ b/distribution/fedora/README @@ -0,0 +1,26 @@ +202220315 +This is repository of the files needed to make a fedora release. + +Temporary patches needed for 5.2.2, delete on next GA +xtrkcad-5.2.2GA-xtrkcad.desktop.patch + +Builds the needed fedora rpms +xtrkcad.spec +Also needs (not saved here) +xtrkcad-source-5.2.2GA.tar.gz + +builds the fc37 rpms +fedpkg --release rawhide mockbuild + +builds fc35 rpms +fedpkg --release f 35 mockbuild + +Built xtrkcad-5.2.2-1.fc35.x86_64.rpm installs as +a graphical app, Can be selected by Applications->Graphics->XTrackCAD + +https://bugzilla.redhat.com/show_bug.cgi?id=2040728 +2040728 - xtrkcad - CAD for Model Railroad layout +Approved 03/15 Comment #21 + + + diff --git a/distribution/fedora/xtrkcad-5.2.2GA-xtrkcad.desktop.patch b/distribution/fedora/xtrkcad-5.2.2GA-xtrkcad.desktop.patch new file mode 100644 index 0000000..54f74dc --- /dev/null +++ b/distribution/fedora/xtrkcad-5.2.2GA-xtrkcad.desktop.patch @@ -0,0 +1,106 @@ +diff -ru orig/xtrkcad-source-5.2.2GA/app/bin/CMakeLists.txt xtrkcad-source-5.2.2GA/app/bin/CMakeLists.txt +--- orig/xtrkcad-source-5.2.2GA/app/bin/CMakeLists.txt 2021-12-18 12:12:02.000000000 -0500 ++++ xtrkcad-source-5.2.2GA/app/bin/CMakeLists.txt 2022-02-21 15:22:10.656926058 -0500 +@@ -169,7 +169,6 @@ + utility.c + utility.h + validator.c +- cJSON.c + archive.h + directory.h + manifest.h +@@ -237,10 +236,7 @@ + # This ensures that messages.h has been generated before we build xtrkcad-lib + ADD_DEPENDENCIES(xtrkcad-lib Help) + +-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-lib) +-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-wlib) +-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-cornu) +-TARGET_LINK_LIBRARIES(xtrkcad dynstring) ++TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-lib xtrkcad-wlib xtrkcad-cornu dynstring cjson) + if(XTRKCAD_CREATE_SVG) + IF(UNIX) + if (NOT APPLE) +diff -ru orig/xtrkcad-source-5.2.2GA/app/bin/fileio.c xtrkcad-source-5.2.2GA/app/bin/fileio.c +--- orig/xtrkcad-source-5.2.2GA/app/bin/fileio.c 2021-12-18 10:31:35.000000000 -0500 ++++ xtrkcad-source-5.2.2GA/app/bin/fileio.c 2022-02-20 10:51:17.258176965 -0500 +@@ -20,7 +20,7 @@ + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +-#include <cJSON.h> ++#include <cjson/cJSON.h> + + #include "archive.h" + #include "common.h" +Only in orig/xtrkcad-source-5.2.2GA/app/bin/include: dirent.h +Only in xtrkcad-source-5.2.2GA/app/bin/include: dirent.h.phil +diff -ru orig/xtrkcad-source-5.2.2GA/app/bin/manifest.c xtrkcad-source-5.2.2GA/app/bin/manifest.c +--- orig/xtrkcad-source-5.2.2GA/app/bin/manifest.c 2021-12-18 10:31:34.000000000 -0500 ++++ xtrkcad-source-5.2.2GA/app/bin/manifest.c 2022-02-20 10:51:14.426213927 -0500 +@@ -21,7 +21,7 @@ + + #include <string.h> + +-#include "cJSON.h" ++#include <cjson/cJSON.h> + #include "fileio.h" + #include "layout.h" + #include "misc2.h" +diff -ru orig/xtrkcad-source-5.2.2GA/app/help/CMakeLists.txt xtrkcad-source-5.2.2GA/app/help/CMakeLists.txt +--- orig/xtrkcad-source-5.2.2GA/app/help/CMakeLists.txt 2021-12-18 10:27:44.000000000 -0500 ++++ xtrkcad-source-5.2.2GA/app/help/CMakeLists.txt 2022-02-21 15:24:51.868816364 -0500 +@@ -1,6 +1,6 @@ + PROJECT(help) + +-ADD_EXECUTABLE(genhelp genhelp.c cJSON.c cJSON.h) ++ADD_EXECUTABLE(genhelp genhelp.c) + + ADD_EXECUTABLE(genmessages genmessages.c) + +@@ -10,6 +10,8 @@ + SET(GENMESSAGES_OPTS "") + ENDIF(XTRKCAD_USE_GETTEXT) + ++TARGET_LINK_LIBRARIES(genhelp PUBLIC cjson) ++ + ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/messages.h ${CMAKE_CURRENT_BINARY_DIR}/messages.but + DEPENDS genmessages ${CMAKE_CURRENT_SOURCE_DIR}/messages.in +diff -ru orig/xtrkcad-source-5.2.2GA/app/help/genhelp.c xtrkcad-source-5.2.2GA/app/help/genhelp.c +--- orig/xtrkcad-source-5.2.2GA/app/help/genhelp.c 2021-12-18 10:27:44.000000000 -0500 ++++ xtrkcad-source-5.2.2GA/app/help/genhelp.c 2022-02-20 10:28:37.155745877 -0500 +@@ -20,7 +20,7 @@ + #include <stdlib.h> + #include <stdio.h> + #include <string.h> +-#include "cJSON.h" ++#include <cjson/cJSON.h> + + #define I18NHEADERFILE "i18n.h" + +diff -ru orig/xtrkcad-source-5.2.2GA/app/lib/CMakeLists.txt xtrkcad-source-5.2.2GA/app/lib/CMakeLists.txt +--- orig/xtrkcad-source-5.2.2GA/app/lib/CMakeLists.txt 2021-12-18 12:12:02.000000000 -0500 ++++ xtrkcad-source-5.2.2GA/app/lib/CMakeLists.txt 2022-02-21 15:25:06.717622045 -0500 +@@ -42,10 +42,6 @@ + endif() + + if(UNIX AND NOT APPLE) +- install(PROGRAMS +- xdg-open xtrkcad-setup +- DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR} +- ) + install(FILES + xtrkcad.desktop xtrkcad.xml + DESTINATION "${XTRKCAD_SHARE_INSTALL_DIR}/applications" +diff -ru orig/xtrkcad-source-5.2.2GA/CMakeLists.txt xtrkcad-source-5.2.2GA/CMakeLists.txt +--- orig/xtrkcad-source-5.2.2GA/CMakeLists.txt 2021-12-18 13:10:04.000000000 -0500 ++++ xtrkcad-source-5.2.2GA/CMakeLists.txt 2022-02-21 15:30:10.711643816 -0500 +@@ -1,6 +1,6 @@ + PROJECT(XTrkCAD) + enable_testing() +-cmake_minimum_required(VERSION 2.8) ++cmake_minimum_required(VERSION 3.22) + set(CMAKE_MACOSX_RPATH 0) + + # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked diff --git a/distribution/fedora/xtrkcad.spec b/distribution/fedora/xtrkcad.spec index 84e4be1..b5a0cd2 100644 --- a/distribution/fedora/xtrkcad.spec +++ b/distribution/fedora/xtrkcad.spec @@ -1,16 +1,33 @@ -Summary: XTrkCad CAD for Model Railroad layout Name: xtrkcad -Version: 5.2.2 +Summary: CAD for Model Railroad layout +Version: 5.3.0 Release: 1%{?dist} -License: GPLv2+ +License: GPLv2 URL: https://sourceforge.net/projects/xtrkcad-fork -Source0: https://sourceforge.net/projects/xtrkcad-fork/files/XTrackCad/Version%20%{version}%20/xtrkcad-source-%{version}.zip -BuildRoot: %{_tmppath}/%{name}-root -BuildRequires: gcc, gcc-c++, cmake >= 2.4.7, pkgconfig, gtk2-devel -BuildRequires: libcmocka, libcmocka-devel, libzip, libzip-devel -BuildRequires: tinyxml, tinyxml-devel, pandoc -BuildRequires: gettext, gettext-devel, glibc-devel -Requires: libcmocka, libzip, tinyxml +Source0: https://sourceforge.net/projects/xtrkcad-fork/files/XTrackCad/Version%20%{version}/xtrkcad-source-%{version}GA.tar.gz +# fix build to use dynamic libzip +Patch0: xtrkcad-5.3.0GA.libzip.patch + +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: cmake >= 2.4.7 +BuildRequires: pkgconfig +BuildRequires: gtk2-devel +BuildRequires: libzip-devel +BuildRequires: desktop-file-utils +BuildRequires: gettext-devel +BuildRequires: glibc-devel +BuildRequires: pandoc +BuildRequires: doxygen +BuildRequires: cjson-devel +BuildRequires: mxml +BuildRequires: mxml-devel +BuildRequires: freeimage +BuildRequires: freeimage-devel +BuildRequires: inkscape +BuildRequires: inkscape-libs + +Requires: xdg-utils %description XTrkCad is a CAD program for designing Model Railroad layouts. @@ -22,29 +39,82 @@ flex-track to modify, extend and join tracks and turnouts. Additional features include tunnels, 'post-it' notes, on-screen ruler, parts list, 99 drawing layers, undo/redo commands, benchwork, 'Print to BitMap', elevations, train simulation and -car inventory. +car inventory. Documents/help is in xtrkcad-doc rpm. %prep -%setup -n xtrkcad-source-%{version}/usr/local -q +%setup -n xtrkcad-source-%{version}GA -q +%patch 0 -p1 + +%package doc +Summary: Documentation for %{name} +BuildArch: noarch + +%description doc +This package contains user documentation and help for XTrkCAD, +in HTML format. It also contains demos, and examples. %build -cmake -D CMAKE_INSTALL_PREFIX:PATH=%{_prefix} -D CMAKE_BUILD_TYPE=Debug . -make +%cmake -DBUILD_SHARED_LIBS=OFF -DXTRKCAD_USE_DOXYGEN=ON +%cmake_build %install -rm -rf $RPM_BUILD_ROOT/* -make DESTDIR=$RPM_BUILD_ROOT install +%cmake_install + +desktop-file-install --dir=%{buildroot}/%{_datadir}/applications \ + %{buildroot}/%{_datadir}/%{name}/applications/xtrkcad.desktop +rm %{buildroot}/%{_datadir}/%{name}/applications/xtrkcad.desktop + +mkdir -p %{buildroot}/%{_datadir}/pixmaps +mv %{buildroot}/%{_datadir}/%{name}/pixmaps/xtrkcad.png \ + %{buildroot}/%{_datadir}/pixmaps/xtrkcad.png +rm -rf %{buildroot}/%{_datadir}/%{name}/pixmaps + +mkdir -p %{buildroot}/%{_datadir}/mime/packages +mv %{buildroot}/%{_datadir}/%{name}/applications/xtrkcad.xml \ + %{buildroot}/%{_datadir}/mime/packages/xtrkcad.xml -%check -make test +# Tests require a feature in the next release +#%check +#%ctest %files %license app/COPYING -%defattr(-, root, root) -%{_bindir}/xtrkcad -%{_datadir} +%{_bindir}/%{name} +%{_datadir}/applications/xtrkcad.desktop +%{_datadir}/pixmaps/xtrkcad.png +%{_datadir}/mime/packages/xtrkcad.xml +%{_datadir}/%{name} +%exclude %{_datadir}/%{name}/demos +%exclude %{_datadir}/%{name}/examples +%exclude %{_datadir}/%{name}/html + +%files doc +%{_datadir}/%{name}/demos +%{_datadir}/%{name}/examples +%{_datadir}/%{name}/html +%{_datadir}/locale/cy_GB/LC_MESSAGES/%{name}.mo +%{_datadir}/locale/de_DE/LC_MESSAGES/%{name}.mo +%{_datadir}/locale/fi/LC_MESSAGES/%{name}.mo +%{_datadir}/locale/fr_FR/LC_MESSAGES/%{name}.mo +%{_datadir}/locale/pt_BR/LC_MESSAGES/%{name}.mo +%{_datadir}/locale/ru/LC_MESSAGES/%{name}.mo %changelog -* Tue Dec 14 2021 Phil Cameron +* Fri Apr 26 2024 Phil Cameron <pecameron1 -at- gmail.com> 5.3.0-1 +- V5.3.0 GA + +* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Feb 21 2022 Phil Cameron <pecameron1 -at- gmail.com> 5.2.2-1 - V5.2.2 GA diff --git a/distribution/flatpak/CMakeLists.txt b/distribution/flatpak/CMakeLists.txt new file mode 100644 index 0000000..a9afa1f --- /dev/null +++ b/distribution/flatpak/CMakeLists.txt @@ -0,0 +1,24 @@ +set(FLATPAK_BUILD_SCRIPT "${CMAKE_SOURCE_DIR}/distribution/flatpak/buildFlatpak.sh") +set(FLATPAK_FILE ${CMAKE_BINARY_DIR}/xtrkcad-${XTRKCAD_VERSION}.flatpak) + +add_custom_command( + OUTPUT ${FLATPAK_FILE} + COMMAND ${FLATPAK_BUILD_SCRIPT} ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMENT "Re-compiling xtrkcad within flatpak Sdk; this could take a while ..." + DEPENDS ${FLATPAK_BUILD_SCRIPT} +) + +# makes for an easy target: "make flatpak" or "ninja flatpak" +add_custom_command( + OUTPUT flatpak + COMMAND ${FLATPAK_BUILD_SCRIPT} ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMENT "Re-compiling xtrkcad within flatpak Sdk; this could take a while ..." + DEPENDS ${FLATPAK_BUILD_SCRIPT} +) + +add_custom_target(flatpak + DEPENDS ${FLATPAK_FILE} + COMMENT "Generating xtrkcad-${XTRKCAD_VERSION}.flatpak" +) diff --git a/distribution/flatpak/README.txt b/distribution/flatpak/README.txt new file mode 100644 index 0000000..8da53f4 --- /dev/null +++ b/distribution/flatpak/README.txt @@ -0,0 +1,101 @@ +This is a work-in-progress to build a flatpak package + +BLDDIR is your build directory, +SRCDIR is your source directory + + +Resolved issues so far: + +- FreeImage and Inkscape not available as a flatpak + FreeImage is mainly used on Win32, but also in pngtoxpm + We disable building pngtoxpm in $SRCDIR/CMakeLists.txt + +- gtk2 is included as a shared module + See org.xtrkcad.xtrkcad.yml + +- MiniXML is included as a module + /app is used instead of /usr: FindMiniXML.cmake + +- InkScape/pngtoxpm is used to convert .svg to .xpm3 + Not easy to include into flatpak, so we copy the .xpm3 from the regular build + See make-soure-archive which creates a tar ball from xtrkcad source tree + appended with BLDDIR/app/bin/bitmaps + see make-source-archive and app/bin/bitmaps/CMakeLists.txt + +- Removed the runtime dependencies on .xpm files + +-libzip is included as a module + +- fix wlibPixbufFromXBM to directly generate Pixmap instead of .xpm intermediate + +# Unresolved issues + +- org.xtrkcad.xtrkcad.yml needs cleanup actions +- window background too dark +- need to build a distribution package + +$ flatpak-builder --run workD org.xtrkcad.xtrkcad.yml xtrkcad + see below + + +# DIRECTIONS: + + +# SEtUP: do once + +# install flatpak +$ sudo apt install flatpak + +# set up build environment +$ cd $BLDDIR/distribution +$ mkdir flatpak +$ cd flatpak + +#install gnome sdk, runtime +# choose user, 47 +$ flatpak install org.gnome.Platform +$ flatpak install org.gnome.Sdk + +# initialize git (needed for building gtk2 +$ git init +$ git submodule add https://github.com/flathub/shared-modules.git + +# build init +$ flatpak build-init workD org.xtrkcad.xtrkcad org.gnome.Sdk/x86_64/47 org.gnome.Platform/x86_64/47 + +# create symlink from source to build for org.xtrkcad.xtrkcad.yml +# builder looks for shared-modules in org.xtrkcad.xtrkcad.yml's directory instead of pwd +$ ln -sf $SRCDIR/distribution/flatpak/org.xtrkcad.yml + + +# BUILD + +# build source tarball - you need to do this every time you change the source +$ cd SRCDIR/distribution/flatpak +$ ./make-source-archive $BLDDIR +$ edit $SRCDIR/org.xtrkcad.xtrkcad.yml: replace checksum with updated value +# return to build dir +$ cd $BLDDIR/distribution/flatpak +# build +$ flatpak-builder --force-clean workD org.xtrkcad.xtrkcad.yml + + +# RUN + +# make a symlink so we can find xtrkcad/libdir +# should add /app to search path +$ flatpak-builder --socket=fallback-x11 --run workD org.xtrkcad.xtrkcad.yml ln -s /apt/share ../share +# ta-da +$ flatpak-builder --socket=fallback-x11 --run workD org.xtrkcad.xtrkcad.yml xtrkcad +# xtrkcad runs ok (minimal testing) + +# MISC: + +# Bonus points - run bash (or any other command) in flatpak sandbox +$ flatpak-builder --socket=fallback-x11 --run workD org.xtrkcad.xtrkcad.yml bash + + +I don't know why you might need this but ... +# add repo +flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + diff --git a/distribution/flatpak/buildFlatpak.sh b/distribution/flatpak/buildFlatpak.sh new file mode 100755 index 0000000..9555c6b --- /dev/null +++ b/distribution/flatpak/buildFlatpak.sh @@ -0,0 +1,547 @@ +#!/usr/bin/env bash + +ME=$(basename $0) + +# WARNING: changing this to yes will leave files/directories present in the source +# tree which are not currently part of the .hgignore file +DEBUG=no + +##################################################################### +# U S A G E +##################################################################### +usage() { + cat <<EOF +Usage: $ME [ destination-directory ] + +This script creates a flatpak from this source. The flatpak will end +up in the root directory of this source tree or in the optional directory +passed. + +The current directory should either be the root directory of the source +or the source distribution/flatpak directory. + +Pre-requisities: + flatpak + flatpak-builder + xdg-desktop-portal-gtk (log out or reboot after install) + +Known issues: + - still uses gtk2 +EOF + exit 1 +} +if [ "$1" = "-h" ]; then + usage +fi + +##################################################################### +# D E T E R M I N E V E R S I O N +##################################################################### +PROGRAM_VERSION=ProgramVersion.cmake +if [ ! -f $PROGRAM_VERSION ]; then + cd ../.. +fi +if [ ! -f $PROGRAM_VERSION ]; then + echo + echo "ERROR: not in the correct directory" + echo + usage + exit 1 +fi +MOD_PROGRAM_VERSION=Modified${PROGRAM_VERSION} +cat <<EOF >$MOD_PROGRAM_VERSION +include($PROGRAM_VERSION) +if (XTRKCAD_SHOW_VERSION) + # used by distribution/flatpak/buildFlatpak.sh + message(\${XTRKCAD_VERSION}) +endif() +EOF +XTRKCAD_VERSION=$(cmake -DXTRKCAD_SHOW_VERSION=1 -P $MOD_PROGRAM_VERSION 2>&1) +rm -f $MOD_PROGRAM_VERSION +if [ -z "$XTRKCAD_VERSION" ]; then + echo "Unable to determine version; is the source correct?" + exit 1 +fi + +##################################################################### +# S E T V A R I A B L E S +##################################################################### +WORKING_FILE=xtrkcad-source.tar.gz +FP_BUILD_DIR=workDir +FP_STATE_DIR=${FP_STATE_DIR:-$HOME/.flatpak-builder-xtrkcad} +FP_REPO=dummy_repo +FP_DEST_DIR=${1:-$PWD} +if [ ! -d "$FP_DEST_DIR" ]; then + echo "\"$FP_DEST_DIR\" is not a directory" + exit 1 +fi +BETA_SUFFIX="" +LOCAL_SUBDIR="" +if [[ $XTRKCAD_VERSION = *[bB]eta[0-9]* ]]; then + BETA_SUFFIX="-beta" + #LOCAL_SUBDIR="local/" +fi +if [ $DEBUG != "no" ]; then + XTRKCAD_VERSION=${XTRKCAD_VERSION}-debug +fi +XTRKCADPREFIX=/app +XTRKCADSHARE=share/xtrkcad${BETA_SUFFIX} +XTRKCADLIB=${XTRKCADPREFIX}/${LOCAL_SUBDIR}${XTRKCADSHARE} +XTRKCADBIN=${XTRKCADPREFIX}/${LOCAL_SUBDIR}bin/xtrkcad${BETA_SUFFIX} +FP_XTRKCAD_ORG=org.xtrkcad.xtrkcad${BETA_SUFFIX} +FP_MANIFEST=${FP_XTRKCAD_ORG}.yaml +FP_DESKTOP=${FP_XTRKCAD_ORG}.desktop +FP_META=${FP_XTRKCAD_ORG}.metainfo.xml +XDG_DATA=${XDG_DATA_HOME:-$HOME/.local/share} +INKSCAPE_IMAGE=Inkscape.AppImage +INKSCAPE_TAR="Inkscape.tar.gz" + +##################################################################### +# C L E A N U P +##################################################################### +cleanup() { + trap - 0 1 2 3 15 21 22 + if [ "$DEBUG" = "no" ]; then + rm -f $WORKING_FILE + rm -rf $FP_BUILD_DIR + find $FP_STATE_DIR -name '*build-debug' | xargs -r rm + # removing the flatpak state dir forces fresh build + #rm -rf $FP_STATE_DIR + rm -rf $FP_REPO + # manifest dynamically built, but if you want to look comment out + rm -f $FP_MANIFEST + rm -f $FP_DESKTOP + rm -f $FP_META + rm -f $INKSCAPE_IMAGE + # removing existing inkscape tar file forces download of latest + #rm -f $XDG_DATA/$INKSCAPE_TAR + rm -f $MOD_PROGRAM_VERSION + fi +} +trap cleanup 0 1 2 3 15 21 22 + +##################################################################### +# S T A R T F R E S H +# +# Normally not run in order to take advantage of cached files +##################################################################### +start_fresh() { + rm -f $WORKING_FILE + rm -rf $FP_BUILD_DIR + # removing the flatpak state dir forces fresh build + rm -rf $FP_STATE_DIR + rm -rf $FP_REPO + # manifest dynamically built, but if you want to look comment out + rm -f $FP_MANIFEST + rm -f $FP_DESKTOP + rm -f $FP_META + rm -f $INKSCAPE_IMAGE + # removing existing inkscape tar file forces download of latest + rm -f $XDG_DATA/$INKSCAPE_TAR + flatpak uninstall -y --user org.inkscape.Inkscape +} + +##################################################################### +# F L U S H C A C H E +# +# Prevent cache from growing and growing during development +##################################################################### +flush_cache() { + # in meg + MAX_CACHE_SIZE=1000 + + if [ ! -d "$FP_STATE_DIR" ]; then + return + fi + CACHE_SIZE=$(du -sm $FP_STATE_DIR | cut -f1) + if [[ $CACHE_SIZE -ge $MAX_CACHE_SIZE ]]; then + echo "Removing build cache .." + echo "CACHE_SIZE=$CACHE_SIZE, MAX_CACHE_SIZE=$MAX_CACHE_SIZE" + rm -rf $FP_STATE_DIR + sleep 2 + fi +} + +##################################################################### +# M A K E S O U R C E T A R B A L L +##################################################################### +make_source_tar() { + tar -czf ../$WORKING_FILE --exclude=.hg . + mv ../$WORKING_FILE . +} + +##################################################################### +# G E T A N D E X T R A C T I N K S C A P E +##################################################################### +get_extract_inkscape() { + flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo + flatpak install -y --user flathub org.inkscape.Inkscape + if [ ! -f $XDG_DATA/$INKSCAPE_TAR ]; then + echo "creating tarball of inkscape ..." + flatpak run --user --command=tar org.inkscape.Inkscape -czf $XDG_DATA/$INKSCAPE_TAR --exclude='*/__pycache__*' /app 2>/dev/null + fi +} + +##################################################################### +# B U I L D M A N I F E S T +##################################################################### +build_manifest() { + cat <<EOF >$FP_DESKTOP +[Desktop Entry] +Name=XTrackCAD${BETA_SUFFIX} (flatpak) +Comment=Design model railroad layouts +Exec=run-xtrkcad.sh +Icon=${FP_XTRKCAD_ORG} +Terminal=false +Type=Application +Categories=Graphics +EOF + DT="$(date '+%Y-%m-%d')" + cat <<EOF >$FP_META +<?xml version="1.0" encoding="UTF-8"?> +<component type="desktop-application"> + <id>${FP_XTRKCAD_ORG}</id> + <name>XTrackCAD${BETA_SUFFIX} (flatpak)</name> + <summary>Design model railroad layouts</summary> + <description> + <p>XTrackCAD is a CAD (computer-aided design) program for designing model railroad layouts.</p> + </description> + <releases> + <release version="${XTRKCAD_VERSION}" date="${DT}"/> + </releases> + <metadata_license>CC0-1.0</metadata_license> + <project_license>GPL-3.0</project_license> +</component> +EOF + cat <<EOF >$FP_MANIFEST +id: $FP_XTRKCAD_ORG +runtime: org.gnome.Platform +runtime-version: '48' +sdk: org.gnome.Sdk +command: /app/bin/run-xtrkcad.sh +modules: + - name: libzip + buildsystem: cmake + config-opts: + - -DBUILD_DOC=OFF + - -DBUILD_EXAMPLES=OFF + - -DBUILD_REGRESS=OFF + - -DBUILD_TOOLS=OFF + - -DBUILD_OSSFUZZ=OFF + - -DCMAKE_INSTALL_PREFIX=/app/libzip + - -DBUILD_SHARED_LIBS=OFF + - -DENABLE_COMMONCRYPTO=OFF + - -DENABLE_GNUTLS=OFF + - -DENABLE_MBEDTLS=OFF + - -DENABLE_OPENSSL=OFF + - -DENABLE_WINDOWS_CRYPTO=OFF + - -DENABLE_BZIP2=OFF + - -DENABLE_LZMA=OFF + - -DENABLE_ZSTD=OFF + sources: + - type: archive + url: https://github.com/nih-at/libzip/releases/download/v1.8.0/libzip-1.8.0.tar.gz + sha256: 30ee55868c0a698d3c600492f2bea4eb62c53849bcf696d21af5eb65f3f3839e + post-install: + - mkdir -p /app/include + - mkdir -p /app/lib + - ln -s /app/libzip/include/* /app/include + - ln -s /app/libzip/lib/libzip.a /app/lib + - name: mxml + buildsystem: simple + build-commands: + - ./configure --exec_prefix=/app/mxml --prefix=/app/mxml + - make + - make install + - mkdir -p /app/include + - mkdir -p /app/lib + - ln -s /app/mxml/include/* /app/include + - ln -s /app/mxml/lib/* /app/lib + sources: + - type: archive +# v4 changes names from mxml to mxml4 whch we haven't migrated yet + url: https://github.com/michaelrsweet/mxml/archive/refs/tags/v3.3.1.tar.gz + sha256: 59eba16ce43765f2e2a6cf4873a58d317be801f1e929647d85da9f171e41e9ac + - name: gtk2 + buildsystem: autotools + build-options: + env: + CFLAGS: "-Wno-incompatible-pointer-types -Wno-implicit-int" + CXXFLAGS: "-Wno-incompatible-pointer-types -Wno-implicit-int" + sources: + - type: archive + url: "https://gitlab.gnome.org/GNOME/gtk/-/archive/2.24.33/gtk-2.24.33.tar.gz" + sha256: dedfaf04952434c5e3e1ce4de373ac7474d12da2d99b0afc947ef1983df64601 + config-opts: + - "--prefix=${XTRKCADPREFIX}" + - "--disable-introspection" + - "--enable-shared" + - "--disable-static" + - "--enable-gtk-doc-html=no" +# make-args: +# - "V=1" +# - "-j 1" + - name: inkscape + buildsystem: simple + sources: + - type: file + path: $XDG_DATA/$INKSCAPE_TAR + dest-filename: $INKSCAPE_TAR + build-options: + env: + PKG_CONFIG_PATH: "/app/lib/pkgconfig:/usr/lib/pkgconfig" + LD_LIBRARY_PATH: "/app/lib:/usr/lib:/usr/lib/x86_64-linux-gnu" + build-commands: + - tar -xzf $INKSCAPE_TAR --skip-old-files + - mkdir -p /app/inkscape + - cp -pr --update app/* /app/inkscape 2>&1 +# - name: debug +# buildsystem: simple +# no-make-install: true +# build-commands: +# - echo "D E B U G B E G I N" +# - find /app -type f -o -type l +# - echo "D E B U G E N D" + - name: xtrkcad + buildsystem: simple + sources: + - type: inline + dest-filename: run-xtrkcad.sh + contents: | + #!/bin/sh + export XTRKCADLIB=${XTRKCADLIB} + export XTRKCADBETALIB=${XTRKCADLIB} + # if no access due to sandboxing, copy + #mkdir -p ~/.local/${XTRKCADSHARE} + #rm -rf ~/.local/${XTRKCADSHARE}/* + #cp -pr ${XTRKCADLIB}/* ~/.local/${XTRKCADSHARE} + #export XTRKCADLIB=~/.local/${XTRKCADSHARE} + #export XTRKCADBETALIB=~/.local/${XTRKCADSHARE} + # there is no access to host gtk3 modules + unset GTK3_MODULES + unset GTK_MODULES + BOOKMARK="file://\$XTRKCADLIB xtrkcad-lib${BETA_SUFFIX}" + FILE="\$HOME/.gtk-bookmarks" + touch \$FILE + if ! grep -Fx "\$BOOKMARK" "\$FILE" >/dev/null; then + echo "\$BOOKMARK" >> "\$FILE" + fi + exec ${XTRKCADBIN} "\$@" + - type: inline + dest-filename: run-xtrkcad-debug.sh + contents: | + #!/bin/sh + export XTRKCADLIB=${XTRKCADLIB} + export XTRKCADBETALIB=${XTRKCADLIB} + # if no access due to sandboxing, copy + #mkdir -p ~/.local/${XTRKCADSHARE} + #rm -rf ~/.local/${XTRKCADSHARE}/* + #cp -pr ${XTRKCADLIB}/* ~/.local/${XTRKCADSHARE} + #export XTRKCADLIB=~/.local/${XTRKCADSHARE} + #export XTRKCADBETALIB=~/.local/${XTRKCADSHARE} + # there is no access to host gtk3 modules + unset GTK3_MODULES + unset GTK_MODULES + BOOKMARK="file://\$XTRKCADLIB xtrkcad-lib${BETA_SUFFIX}" + FILE="\$HOME/.gtk-bookmarks" + touch \$FILE + if ! grep -Fx "\$BOOKMARK" "\$FILE" >/dev/null; then + echo "\$BOOKMARK" >> "\$FILE" + fi + # set up for logging by day the app started + DOW=\$(date '+%a') + LOGFILE="\$HOME/.xtrkcad${BETA_SUFFIX}/xtrkcad_\${DOW}.log" + LOG_ALLMODULES=" \\ + -d Bezier=1 \\ + -d block=1 \\ + -d carDlgList=1 \\ + -d carDlgState=1 \\ + -d carInvList=1 \\ + -d carList=1 \\ + -d command=1 \\ + -d control=1 \\ + -d Cornu=1 \\ + -d cornuturnoutdesigner=1 \\ + -d curve=1 \\ + -d curveSegs=1 \\ + -d dumpElev=1 \\ + -d ease=1 \\ + -d endPt=1 \\ + -d group=1 \\ + -d init=1 \\ + -d join=1 \\ + -d locale=1 \\ + -d malloc=0 \\ + -d mapsize=1 \\ + -d modify=1 \\ + -d mouse=0 \\ + -d pan=1 \\ + -d paraminput=1 \\ + -d paramlayout=1 \\ + -d params=1 \\ + -d paramupdate=1 \\ + -d playbackcursor=1 \\ + -d print=1 \\ + -d profile=1 \\ + -d readTracks=1 \\ + -d redraw=1 \\ + -d regression=1 \\ + -d scale=1 \\ + -d sensor=1 \\ + -d shortPath=1 \\ + -d signal=1 \\ + -d splitturnout=1 \\ + -d Structure=1 \\ + -d suppresscheckpaths=1 \\ + -d switchmotor=1 \\ + -d timedrawgrid=1 \\ + -d timedrawtracks=1 \\ + -d timemainredraw=1 \\ + -d timereadfile=1 \\ + -d track=1 \\ + -d trainMove=1 \\ + -d trainPlayback=1 \\ + -d traverseBezier=1 \\ + -d traverseBezierSegs=1 \\ + -d traverseCornu=1 \\ + -d traverseJoint=1 \\ + -d traverseTurnout=1 \\ + -d turnout=1 \\ + -d undo=1 \\ + -d zoom=1 \\ + " + rm -f \$LOGFILE + touch \$LOGFILE + exec ${XTRKCADBIN} -v -l \$LOGFILE \$LOG_ALLMODULES "\$@" + - type: file + path: ./$FP_DESKTOP + dest-filename: $FP_DESKTOP + - type: file + path: ./$FP_META + dest-filename: $FP_META + - type: file + path: ./$WORKING_FILE + dest-filename: $WORKING_FILE + build-options: + env: + PKG_CONFIG_PATH: "/app/lib/pkgconfig:/app/libzip/lib/pkgconfig:/app/libzip/lib64/pkgconfig:/app/mxml/lib/pkgconfig:/app/inkscape/lib/pkgconfig:/usr/lib/pkgconfig" + LD_LIBRARY_PATH: "/app/lib:/app/inkscape/lib:/app/libzip/lib:/app/libzip/lib64:/app/mxml/lib:/usr/lib:/usr/lib/x86_64-linux-gnu" + PATH: "/app/bin:/app/inkscape/bin:/usr/bin" + build-commands: + - | + install -Dm755 run-xtrkcad-debug.sh /app/bin/run-xtrkcad-debug.sh + install -Dm755 run-xtrkcad.sh /app/bin/run-xtrkcad.sh + install -Dm644 $FP_DESKTOP /app/share/applications/${FP_DESKTOP} + install -Dm644 $FP_META /app/share/metainfo/${FP_META} + mkdir src + mkdir build + cd src + tar xzf ../$WORKING_FILE + cd ../build + XTRKCAD_CMAKE_DEBUG="-DCMAKE_TARGET_PROPERTIES=1 -DCMAKE_FIND_DEBUG_MODE=1" + XTRKCAD_CMAKE_DEBUG="" + cmake -G Ninja \$XTRKCAD_CMAKE_DEBUG -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$XTRKCADPREFIX -DCMAKE_C_FLAGS="-I/app/include -Wpointer-sign" ../src + mkdir -p /app/share/icons/hicolor/64x64/apps/ + if false; then + # debug: flatpak ps + # flatpak enter <instance-id> bash + echo -e "\\nSLEEPING for debug purposes" + echo -e "\\nin another window, run\\n flatpak ps\\n flatpak enter <instance-id> bash\\n" + echo "export PKG_CONFIG_PATH=\"/app/lib/pkgconfig:/app/libzip/lib/pkgconfig:/app/libzip/lib64/pkgconfig:/app/mxml/lib/pkgconfig:/app/inkscape/lib/pkgconfig:/usr/lib/pkgconfig\"" + echo "export LD_LIBRARY_PATH=\"/app/lib:/app/inkscape/lib:/app/libzip/lib:/app/libzip/lib64:/app/mxml/lib:/usr/lib:/usr/lib/x86_64-linux-gnu\"" + echo "export PATH=\"/app/bin:/app/inkscape/bin:/usr/bin:\\\$PATH\"" + echo "cd /run/build/xtrkcad/build # to check build environment or build with ninja" + echo "cd /run/build/xtrkcad/src # the source" + echo "# sorry no editor in the Sdk" + sleep 3600 + else + ninja -v + ninja -v install + cp $XTRKCADPREFIX/${XTRKCADSHARE}/pixmaps/xtrkcad.png /app/share/icons/hicolor/64x64/apps/${FP_XTRKCAD_ORG}.png + #cp /run/build/xtrkcad/src/app/lib/xtrkcad.png /app/share/icons/hicolor/64x64/apps/${FP_XTRKCAD_ORG}.png + cd .. + # what is not needed in final flatpak + rm -rf /app/inkscape + rm -rf /app/include + rm -rf /app/share/man + rm -rf /app/lib64/cmake + rm -rf /app/share/doc + rm -rf /app/share/gtk-2.0/demo + rm -f /app/lib/libmxml* + rm -f /app/lib/pkgconfig + rm -rf /app/mxml + rm -rf /app/libzip + rm -f /app/lib/libzip.a + rm -f /app/bin/gtk* + rm -rf /app/share/aclocal + fi +finish-args: + - --socket=x11 + - --socket=wayland + - --socket=session-bus + - --socket=cups + - --socket=pulseaudio + - --share=ipc + - --device=all + - --filesystem=~/.xtrkcad${BETA_SUFFIX}:create + - --filesystem=~/.themes + - --filesystem=~/.icons + - --filesystem=~/.config:create + - --filesystem=~/.gtk-bookmarks + - --filesystem=~/.local/share:create + # if home directory access not allowed, define some common ones for plans + #- --filesystem=~/.local/${XTRKCADSHARE}:create + #- --filesystem=~/Documents:create + #- --filesystem=~/xtrkcad:create + #- --filesystem=~/XtrackCAD:create + - --filesystem=~/Downloads + - --filesystem=xdg-data/applications + - --filesystem=xdg-data/icons + # home directory access + - --filesystem=home + # full system access + #- --filesystem=host + - --talk-name=org.gnome.portal.* + - --talk-name=org.gnome.* + - --talk-name=org.gnome.portal.* + - --system-talk-name=org.gnome.* +EOF +} + +##################################################################### +# B U I L D F L A T P A K +##################################################################### +build_flatpak() { + flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo + flatpak-builder --state-dir=$FP_STATE_DIR --force-clean --user --install --repo=$FP_REPO --install-deps-from=flathub $FP_BUILD_DIR $FP_MANIFEST + ARCH=$(uname -m) + FP_NAME=xtrkcad-${XTRKCAD_VERSION}.${ARCH}.flatpak + rm -f $FP_NAME + flatpak build-bundle ${FP_REPO} $FP_NAME $FP_XTRKCAD_ORG + if [ -f $FP_NAME ]; then + mv $FP_NAME $FP_DEST_DIR/$FP_NAME 2>/dev/null + echo "========================================================================" + echo "$(ls $FP_DEST_DIR/$FP_NAME) created" + echo + flatpak info $FP_XTRKCAD_ORG + echo "========================================================================" + else + echo "========================================================================" + echo "problem creating $FP_NAME " + echo "========================================================================" + fi +} + +##################################################################### +# M A I N +##################################################################### +#start_fresh +echo "========================================================================" +echo "Making xtrkcad-${XTRKCAD_VERSION}.flatpak" +echo "========================================================================" +sleep 3 +flush_cache +make_source_tar +get_extract_inkscape +build_manifest +build_flatpak diff --git a/distribution/flatpak/make-source-archive b/distribution/flatpak/make-source-archive new file mode 100755 index 0000000..5e48823 --- /dev/null +++ b/distribution/flatpak/make-source-archive @@ -0,0 +1,23 @@ +#!/bin/bash +if [ $# -ne 1 ] ; then + echo "$0 <BLDDIR>/distribution/flatpak" + echo "Create source tar ball, with .xpm3 files" + echo "Run from <SRCDIR>/distribution/flatpak" + echo "Computes sha256 checksum which must updated in org.xtrkcad.xtrkcad.yml" + exit 0 +fi + +SRCDIR=`pwd` +BLDDIR=$1 + +cd ../.. +tar cf ${BLDDIR}/source.tar . +cd $BLDDIR/../../app/bin +tar rf ${BLDDIR}/source.tar ./bitmaps + +cd $BLDDIR +rm -f source.tar.gz +# -n zeros the timestamp so repeated runs yield the same checksum +gzip -n source.tar +echo "Update org.xtrkcad.xtrkcad.yml with this checksum" +sha256sum source.tar.gz diff --git a/distribution/flatpak/org.xtrkcad.xtrkcad.yml b/distribution/flatpak/org.xtrkcad.xtrkcad.yml new file mode 100644 index 0000000..d477d55 --- /dev/null +++ b/distribution/flatpak/org.xtrkcad.xtrkcad.yml @@ -0,0 +1,55 @@ +app-id: org.xtrkcad.xtrkcad +runtime: org.gnome.Platform +runtime-version: '47' +sdk: org.gnome.Sdk +command: xtrkcad +env: + - XTRKCADLIB=/app/share/xtrkcad +modules: + - shared-modules/gtk2/gtk2.json + + - shared-modules/libcanberra/libcanberra.json + + - name: mxml + buildsystem: simple + build-commands: + - ./configure --exec_prefix=/app --prefix=/app + - make + - make install + sources: + - type: archive +# v4 changes names from mxml to mxml4 whch we haven't migrated yet + url: https://github.com/michaelrsweet/mxml/archive/refs/tags/v3.3.1.tar.gz + sha256: 59eba16ce43765f2e2a6cf4873a58d317be801f1e929647d85da9f171e41e9ac + +# from https://github.com/tinywrkb/flatpaks/commit/3e0a63a0f78deaec9f06cf61db0659d7773f0a49 + - name: libzip + buildsystem: cmake + config-opts: + - -DBUILD_DOC=OFF + - -DBUILD_EXAMPLES=OFF + - -DBUILD_REGRESS=OFF + - -DBUILD_TOOLS=OFF + sources: + - type: archive + url: https://github.com/nih-at/libzip/releases/download/v1.8.0/libzip-1.8.0.tar.gz + sha256: 30ee55868c0a698d3c600492f2bea4eb62c53849bcf696d21af5eb65f3f3839e + x-checker-data: + type: anitya + project-id: 10649 + stable-only: true + url-template: https://github.com/nih-at/libzip/releases/download/v$version/libzip-$version.tar.gz + cleanup: + - /lib/cmake +# - ../shared-modules/libzip/libzip.json + + - name: xtrkcad + sources: + - type: archive + path: ./source.tar.gz +# if source changes, run ./make-source-archive and replace this checksum + sha256: 97a456c92ffc4d9c4ee2f62bfde74e7e93b493bbd047bf594fca1e4858fff266 + buildsystem: cmake + config-opts: + - -DCMAKE_BUILD_TYPE=DEBUG + - -DCMAKE_INSTALL_PREFIX=/app diff --git a/distribution/osx/bundle/xtrackcad-startup b/distribution/osx/bundle/xtrackcad-startup index e82d444..33abf0c 100644 --- a/distribution/osx/bundle/xtrackcad-startup +++ b/distribution/osx/bundle/xtrackcad-startup @@ -28,13 +28,13 @@ mkdir -p "$XTRKCAD_ETC/pango" sed -e 's|/opt/local/etc|'"$XTRKCAD_ETC|g" "$XTRKCAD_RESOURCES/etc/pango/pangorc" > "$XTRKCAD_ETC/pango/pangorc" sed -e 's|/opt/local|\"'"$XTRKCAD_RESOURCES|g" -e "s/\.so/.so\"/g" "$XTRKCAD_RESOURCES/etc/pango/pango.modules" > "$XTRKCAD_ETC/pango/pango.modules" -export "DYLD_LIBRARY_PATH=$XTRKCAD_RESOURCES/lib" -export "FONTCONFIG_PATH=$XTRKCAD_RESOURCES/etc/fonts" -export "GDK_PIXBUF_MODULE_FILE=$XTRKCAD_GDK_PIXBUF_MODULE_FILE" -export "GTK_IM_MODULE_FILE=$XTRKCAD_GTK_IM_MODULE_FILE" -export "PANGO_RC_FILE=$XTRKCAD_PANGO_RC_FILE" -export "PATH=$XTRKCAD_RESOURCES/bin:$PATH" -export "XTRKCADLIB=$XTRKCAD_RESOURCES/share/xtrkcad" +export DYLD_LIBRARY_PATH="$XTRKCAD_RESOURCES/lib" +export FONTCONFIG_PATH="$XTRKCAD_RESOURCES/etc/fonts" +export GDK_PIXBUF_MODULE_FILE="$XTRKCAD_GDK_PIXBUF_MODULE_FILE" +export GTK_IM_MODULE_FILE="$XTRKCAD_GTK_IM_MODULE_FILE" +export PANGO_RC_FILE="$XTRKCAD_PANGO_RC_FILE" +export PATH="$XTRKCAD_RESOURCES/bin:$PATH" +export XTRKCADLIB="$XTRKCAD_RESOURCES/share/xtrkcad" export exec "$XTRKCAD_RESOURCES/bin/xtrkcad" diff --git a/distribution/osx/gtk-bundle/xtrkcad-launcher.sh b/distribution/osx/gtk-bundle/xtrkcad-launcher.sh index 69aac1e..9bd49af 100755 --- a/distribution/osx/gtk-bundle/xtrkcad-launcher.sh +++ b/distribution/osx/gtk-bundle/xtrkcad-launcher.sh @@ -8,12 +8,6 @@ if test "x$GTK_DEBUG_LAUNCHER" != x; then set -x fi -if test "x$GTK_DEBUG_GDB" != x; then - EXEC="gdb --args" -else - EXEC=exec -fi - name=`basename "$0"` tmp="$0" tmp=`dirname "$tmp"` @@ -186,13 +180,13 @@ echo "XTrackCAD: XTRKCAD_BUNDLE: $XTRKCAD_BUNDLE" #sed -e 's|/opt/local/etc|'"$XTRKCAD_ETC|g" "$XTRKCAD_RESOURCES/etc/pango/pangorc" > "$XTRKCAD_ETC/pango/pangorc" #sed -e 's|/opt/local|\"'"$XTRKCAD_RESOURCES|g" -e "s/\.so/.so\"/g" "$XTRKCAD_RESOURCES/etc/pango/pango.modules" > "$XTRKCAD_ETC/pango/pango.modules" -#export "DYLD_LIBRARY_PATH=$XTRKCAD_RESOURCES/lib" -#export "FONTCONFIG_PATH=$XTRKCAD_RESOURCES/etc/fonts" -#export "GDK_PIXBUF_MODULE_FILE=$XTRKCAD_GDK_PIXBUF_MODULE_FILE" -#export "GTK_IM_MODULE_FILE=$XTRKCAD_GTK_IM_MODULE_FILE" -export "PANGO_RC_FILE=$XTRKCAD_PANGO_RC_FILE" -export "PATH=$XTRKCAD_RESOURCES/bin:$PATH" -export "XTRKCADLIB=$XTRKCAD_RESOURCES/xtrkcad" +#export DYLD_LIBRARY_PATH="$XTRKCAD_RESOURCES/lib" +#export FONTCONFIG_PATH="$XTRKCAD_RESOURCES/etc/fonts" +#export GDK_PIXBUF_MODULE_FILE="$XTRKCAD_GDK_PIXBUF_MODULE_FILE" +#export GTK_IM_MODULE_FILE="$XTRKCAD_GTK_IM_MODULE_FILE" +export PANGO_RC_FILE="$XTRKCAD_PANGO_RC_FILE" +export PATH="$XTRKCAD_RESOURCES/bin:$PATH" +export XTRKCADLIB="$XTRKCAD_RESOURCES/xtrkcad" #export #exec "$XTRKCAD_BUNDLE/Contents/MacOS/XtrkCAD-bin" @@ -208,7 +202,15 @@ if /bin/expr "x$1" : '^x-psn_' > /dev/null; then shift 1 fi -$EXEC "$XTRKCAD_BUNDLE/Contents/MacOS/XtrkCAD-bin" "$@" +if test "x$GTK_DEBUG_GDB" != x; then + gdb --args "$XTRKCAD_BUNDLE/Contents/MacOS/XtrkCAD-bin" "$@" +else + if `tty -s`; then + $XTRKCAD_BUNDLE/Contents/MacOS/XtrkCAD-bin "$@" + else + nohup "$XTRKCAD_BUNDLE/Contents/MacOS/XtrkCAD-bin" "$@" >/dev/null & + fi +fi echo "XTrackCAD: Finishing $0" diff --git a/distribution/posix/CMakeLists.txt b/distribution/posix/CMakeLists.txt index 6e44581..d80322a 100644 --- a/distribution/posix/CMakeLists.txt +++ b/distribution/posix/CMakeLists.txt @@ -8,11 +8,12 @@ set(CPACK_RPM_PACKAGE_GROUP "Applications/Engineering") set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}////xtrkcad-desc.txt") set(CPACK_PACKAGE_FILE_NAME "xtrkcad-setup-${XTRKCAD_VERSION}-${CPACK_PACKAGE_RELEASE}.${CMAKE_SYSTEM_PROCESSOR}") -if(XTRKCAD_PACKAGE_GA_RELEASE) - set(CPACK_INSTALL_PREFIX "/usr" ) -else() +if(XTRKCAD_BETA MATCHES "-beta") set(CPACK_INSTALL_PREFIX "/usr/local" ) +else() + set(CPACK_INSTALL_PREFIX "/usr" ) endif() +set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/postinst;${CMAKE_CURRENT_SOURCE_DIR}/prerm") set(CPACK_PACKAGING_INSTALL_PREFIX ${CPACK_INSTALL_PREFIX}) @@ -36,12 +37,6 @@ if(NOT XTRKCAD_USE_BROWSER) # message(AUTHOR_WARNING "Add dependency to webkitgtk for viewing help!") endif() -#Add dependency to MiniXML (mxml) if configured -if(XTRKCAD_CREATE_SVG) - set(CPACK_RPM_PACKAGE_REQUIRES - "${CPACK_RPM_PACKAGE_REQUIRES} mxml") -endif() - # exclude these directories from the rpm set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/usr/local" @@ -55,11 +50,17 @@ set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/usr/share/pixmaps" ) +set(CPACK_RPM_DEFAULT_DIR_PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) + + set(CPACK_RPM_CHANGELOG_FILE "${CMAKE_CURRENT_SOURCE_DIR}////changelog.txt") set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) -set(CPACK_DEBIAN_PACKAGE_NAME "XTrkCad") +set(CPACK_DEBIAN_PACKAGE_NAME "XTrkCad${XTRKCAD_BETA}") set(CPACK_DEBIAN_PACKAGE_VERSION "1:${XTRKCAD_VERSION}") @@ -95,7 +96,4 @@ set(CPACK_PACKAGE_EXECUTABLES "xtrkcad;XTrkCad-5.2.1-Beta") set(CPACK_CREATE_DESKTOP_LINKS "xtrkcad") -set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/postinst;${CMAKE_CURRENT_SOURCE_DIR}/prerm") - include(CPack) - diff --git a/distribution/posix/postinst b/distribution/posix/postinst index 914534d..d4e22cb 100755 --- a/distribution/posix/postinst +++ b/distribution/posix/postinst @@ -1,5 +1,5 @@ #!/bin/sh -LOGF=/tmp/xtrkcad-setup.log +LOGF=${HOME}/xtrkcad-setup.log if [ -f "${LOGF}" ] ; then chmod 666 ${LOGF} echo postinst: $* >> ${LOGF} @@ -7,14 +7,9 @@ else LOGF=/dev/null fi -if [ -d /usr/local/share/xtrkcad ] ; then - INSTALLDIR=/usr/local/share/xtrkcad -elif [ -d /usr/share/xtrkcad ] ; then - INSTALLDIR=/usr/share/xtrkcad -else - echo No existing XTrkCad install >> ${LOGF} - exit 1 -fi +# Note: when branching for Beta, change the next line to /usr/local/share/xtrkcad-beta +# when building for GA, change the next line back to /usr/share/xtrkcad +INSTALLDIR=/usr/local/share/xtrkcad-beta ( su -c "sh ${INSTALLDIR}/xtrkcad-setup install ${INSTALLDIR}" -l $SUDO_USER ) >> ${LOGF} 2>&1 diff --git a/distribution/posix/prerm b/distribution/posix/prerm index 3c5db28..71cfd00 100755 --- a/distribution/posix/prerm +++ b/distribution/posix/prerm @@ -1,5 +1,5 @@ #!/bin/sh -LOGF=/tmp/xtrkcad-setup.log +LOGF=${HOME}/xtrkcad-setup.log if [ -f "${LOGF}" ] ; then chmod 666 ${LOGF} echo prerm: $* >> ${LOGF} @@ -7,14 +7,9 @@ else LOGF=/dev/null fi -if [ -d /usr/local/share/xtrkcad ] ; then - INSTALLDIR=/usr/local/share/xtrkcad -elif [ -d /usr/share/xtrkcad ] ; then - INSTALLDIR=/usr/share/xtrkcad -else - echo No existing XTrkCad install >> ${LOGF} - exit 1 -fi +# Note: when branching for Beta, change the next line to /usr/local/share/xtrkcad-beta +# when building for GA, change the next line back to /usr/share/xtrkcad +INSTALLDIR=/usr/local/share/xtrkcad-beta ( su -c "sh ${INSTALLDIR}/xtrkcad-setup remove ${INSTALLDIR}" -l $SUDO_USER ) >> ${LOGF} 2>&1 |
