Skip to content

Commit

Permalink
Linux: add Flatpak integration.
Browse files Browse the repository at this point in the history
To test it, use:
  $ ./pkg/flatpak/build.sh
  $ flatpak install ./pkg/flatpak/solvespace.flatpak
  $ flatpak run com.solvespace.SolveSpace
  • Loading branch information
whitequark committed May 11, 2019
1 parent bc3e09e commit 0b7b8a4
Show file tree
Hide file tree
Showing 7 changed files with 211 additions and 21 deletions.
4 changes: 4 additions & 0 deletions pkg/flatpak/.gitignore
@@ -0,0 +1,4 @@
/.flatpak-builder
/build-dir
/repo
*.flatpak
4 changes: 4 additions & 0 deletions pkg/flatpak/build.sh
@@ -0,0 +1,4 @@
#!/bin/sh -ex
cd $(dirname $0)
flatpak-builder "$@" --force-clean --repo repo build-dir com.solvespace.SolveSpace.json
flatpak build-bundle repo solvespace.flatpak com.solvespace.SolveSpace
141 changes: 141 additions & 0 deletions pkg/flatpak/com.solvespace.SolveSpace.json
@@ -0,0 +1,141 @@
{
"app-id": "com.solvespace.SolveSpace",
"runtime": "org.gnome.Platform",
"runtime-version": "3.30",
"sdk": "org.gnome.Sdk",
"finish-args": [
/* Access to display server and OpenGL */
"--share=ipc", "--socket=fallback-x11", "--socket=wayland", "--device=dri",
/* Access to save files */
"--filesystem=home"
],
"cleanup": [
"/include", "/lib/*/include",
"*.a", "*.la", "*.m4", "/lib/libslvs*.so*", "/lib/libglibmm_generate_extra_defs*.so*",
"/share/pkgconfig", "*.pc",
"/share/man", "/share/doc",
"/share/aclocal",
/* mm-common junk */
"/bin/mm-common-prepare",
"/share/mm-common"
],
"command": "solvespace",
"modules": [
{
"name": "mm-common",
"sources": [
{
"type": "archive",
"url": "http://ftp.gnome.org/pub/GNOME/sources/mm-common/0.9/mm-common-0.9.12.tar.xz",
"sha256": "ceffdcce1e5b52742884c233ec604bf6fded12eea9da077ce7a62c02c87e7c0b"
}
]
},
{
"name": "sigc++",
"config-opts": [
"--disable-documentation"
],
"sources": [
{
"type": "archive",
"url": "http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.10/libsigc++-2.10.1.tar.xz",
"sha256": "c9a25f26178c6cbb147f9904d8c533b5a5c5111a41ac2eb781eb734eea446003"
}
]
},
{
"name": "glibmm",
"config-opts": [
"--disable-documentation"
],
"sources": [
{
"type": "archive",
"url": "http://ftp.gnome.org/pub/GNOME/sources/glibmm/2.58/glibmm-2.58.1.tar.xz",
"sha256": "6e5fe03bdf1e220eeffd543e017fd2fb15bcec9235f0ffd50674aff9362a85f0"
}
]
},
{
"name": "cairomm",
"config-opts": [
"--disable-documentation"
],
"sources": [
{
"type": "archive",
"url": "http://ftp.gnome.org/pub/GNOME/sources/cairomm/1.12/cairomm-1.12.0.tar.xz",
"sha256": "a54ada8394a86182525c0762e6f50db6b9212a2109280d13ec6a0b29bfd1afe6"
}
]
},
{
"name": "pangomm",
"config-opts": [
"--disable-documentation"
],
"sources": [
{
"type": "archive",
"url": "http://ftp.gnome.org/pub/GNOME/sources/pangomm/2.40/pangomm-2.40.2.tar.xz",
"sha256": "0a97aa72513db9088ca3034af923484108746dba146e98ed76842cf858322d05"
}
]
},
{
"name": "atkmm",
"config-opts": [
"--disable-documentation"
],
"sources": [
{
"type": "archive",
"url": "http://ftp.gnome.org/pub/GNOME/sources/atkmm/2.28/atkmm-2.28.0.tar.xz",
"sha256": "4c4cfc917fd42d3879ce997b463428d6982affa0fb660cafcc0bc2d9afcedd3a"
}
]
},
{
"name": "gtkmm",
"config-opts": [
"--disable-documentation"
],
"sources": [
{
"type": "archive",
"url": "http://ftp.gnome.org/pub/GNOME/sources/gtkmm/3.24/gtkmm-3.24.1.tar.xz",
"sha256": "ddfe42ed2458a20a34de252854bcf4b52d3f0c671c045f56b42aa27c7542d2fd"
}
]
},
{
"name": "libjson-c",
"sources": [
{
"type": "archive",
"url": "https://s3.amazonaws.com/json-c_releases/releases/json-c-0.13.1-nodoc.tar.gz",
"sha256": "94a26340c0785fcff4f46ff38609cf84ebcd670df0c8efd75d039cc951d80132"
}
],
"buildsystem": "cmake",
"builddir": true
},
{
"name": "SolveSpace",
"sources": [
{
"type": "git",
"path": "/home/whitequark/Projects/solvespace"
}
],
"buildsystem": "cmake",
"builddir": true,
"config-opts": [
"-DFLATPAK=ON",
"-DENABLE_CLI=OFF",
"-DENABLE_TESTS=OFF"
]
}
]
}
65 changes: 44 additions & 21 deletions res/CMakeLists.txt
Expand Up @@ -126,28 +126,51 @@ elseif(APPLE)
else()
add_resource(freedesktop/solvespace-48x48.png)

configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/freedesktop/solvespace.desktop.in
${CMAKE_CURRENT_BINARY_DIR}/freedesktop/solvespace.desktop)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/freedesktop/solvespace.desktop
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)

install(FILES freedesktop/solvespace-slvs.xml
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mime/packages)

foreach(SIZE 16x16 24x24 32x32 48x48)
install(FILES freedesktop/solvespace-${SIZE}.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}/apps
RENAME solvespace.png)
install(FILES freedesktop/solvespace-${SIZE}.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}/mimetypes
RENAME application.x-solvespace.png)
endforeach()
if(FLATPAK)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/freedesktop/solvespace-flatpak.desktop.in
${CMAKE_CURRENT_BINARY_DIR}/freedesktop/solvespace-flatpak.desktop)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/freedesktop/solvespace-flatpak.desktop
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications
RENAME com.solvespace.SolveSpace.desktop)

foreach(SIZE 16x16 24x24 32x32 48x48)
install(FILES freedesktop/solvespace-${SIZE}.xpm
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pixmaps)
endforeach()
install(FILES freedesktop/solvespace-flatpak-mime.xml
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mime/packages
RENAME com.solvespace.SolveSpace-slvs.xml)

foreach(SIZE 16x16 24x24 32x32 48x48)
install(FILES freedesktop/solvespace-${SIZE}.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}/apps
RENAME com.solvespace.SolveSpace.png)
install(FILES freedesktop/solvespace-${SIZE}.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}/mimetypes
RENAME com.solvespace.SolveSpace.png)
endforeach()
else()
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/freedesktop/solvespace.desktop.in
${CMAKE_CURRENT_BINARY_DIR}/freedesktop/solvespace.desktop)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/freedesktop/solvespace.desktop
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)

install(FILES freedesktop/solvespace-mime.xml
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mime/packages
RENAME solvespace-slvs.xml)

foreach(SIZE 16x16 24x24 32x32 48x48)
install(FILES freedesktop/solvespace-${SIZE}.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}/apps
RENAME solvespace.png)
install(FILES freedesktop/solvespace-${SIZE}.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}/mimetypes
RENAME application.x-solvespace.png)
endforeach()

foreach(SIZE 16x16 24x24 32x32 48x48)
install(FILES freedesktop/solvespace-${SIZE}.xpm
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pixmaps)
endforeach()
endif()
endif()

add_resources(
Expand Down
8 changes: 8 additions & 0 deletions res/freedesktop/solvespace-flatpak-mime.xml
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-solvespace">
<comment xml:lang="en">SolveSpace model</comment>
<generic-icon name="com.solvespace.SolveSpace"/>
<glob pattern="*.slvs"/>
</mime-type>
</mime-info>
10 changes: 10 additions & 0 deletions res/freedesktop/solvespace-flatpak.desktop.in
@@ -0,0 +1,10 @@
[Desktop Entry]
Version=1.0
Name=SolveSpace
Comment=A parametric 2d/3d CAD
Exec=${CMAKE_INSTALL_FULL_BINDIR}/solvespace
MimeType=application/x-solvespace
Icon=com.solvespace.SolveSpace
Type=Application
Categories=Graphics
Keywords=parametric;cad;2d;3d;
File renamed without changes.

0 comments on commit 0b7b8a4

Please sign in to comment.