From 933df7305a08e263650a8dfa1a3d1b3cdf733e35 Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Fri, 28 Oct 2022 14:43:56 +0200
Subject: [PATCH] Add files needed for building to flatpak

---
 mbed6/.gitignore                   |  1 +
 mbed6/Makefile                     | 14 +++++++++++---
 mbed6/manual-build-files.install   |  6 ++++++
 mbed6/manual-build-files.json      | 17 +++++++++++++++++
 mbed6/mbed-cli                     | 21 +++++++++++++++++++++
 mbed6/se.lth.control.mbed-cli.json |  6 +-----
 6 files changed, 57 insertions(+), 8 deletions(-)
 create mode 100755 mbed6/manual-build-files.install
 create mode 100644 mbed6/manual-build-files.json
 create mode 100755 mbed6/mbed-cli

diff --git a/mbed6/.gitignore b/mbed6/.gitignore
index 3c20f05..e26cce5 100644
--- a/mbed6/.gitignore
+++ b/mbed6/.gitignore
@@ -1,3 +1,4 @@
 /build
 /.flatpak-builder
 /auto-*.json
+/build-files.tar
diff --git a/mbed6/Makefile b/mbed6/Makefile
index 5b72326..f76c1a7 100644
--- a/mbed6/Makefile
+++ b/mbed6/Makefile
@@ -10,6 +10,8 @@ build:  auto-ignore-installed.json\
 	manual-arm-none-eabi-bootstrap-gcc.json \
 	manual-arm-none-eabi-newlib.json \
 	manual-arm-none-eabi-gcc.json \
+	manual-git.json \
+	manual-build-files.json \
 	manual-mbed-cli-wrap.json 
 	flatpak-builder --force-clean build $(TARGET).json
 	flatpak-builder --user --install --force-clean build/ $(TARGET).json
@@ -22,6 +24,11 @@ setup:
 
 manual-%.json: manual-%.install
 
+manual-build-files.json: build-files.tar
+
+build-files.tar:
+	git ls-files | tar -cf $@ --files-from=-
+
 auto-ignore-installed.json: pip-ignore-installed.txt
 	cat $< | xargs flatpak run se.lth.control.pip-install-to-json \
 		--name $@ --extra-flag --ignore-installed > $@.tmp
@@ -36,10 +43,11 @@ auto-simple.json: pip-simple.txt
 clean:
 	rm -f auto-*.json
 	rm -rf .flatpak-builder/build
+	rm -rf build
+	rm -f build-files.tar
+	rm -f *~ 
 
 .PHONY: distclean
-clean: clean
-	rm -rf build
+distclean: clean
 	rm -rf .flatpak-builder
-	rm -f *~ 
 
diff --git a/mbed6/manual-build-files.install b/mbed6/manual-build-files.install
new file mode 100755
index 0000000..3db98f2
--- /dev/null
+++ b/mbed6/manual-build-files.install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+set -e
+
+mkdir /app/build-files
+cat build-files.tar | tar --directory /app/build-files -x
diff --git a/mbed6/manual-build-files.json b/mbed6/manual-build-files.json
new file mode 100644
index 0000000..39ce27a
--- /dev/null
+++ b/mbed6/manual-build-files.json
@@ -0,0 +1,17 @@
+{
+    "name": "manual-build-files.json",
+    "buildsystem": "simple",
+    "build-commands": [
+        "./manual-build-files.install"
+    ],
+    "sources": [
+        {
+            "type": "file",
+            "path": "manual-build-files.install"
+        },
+        {
+            "type": "file",
+            "path": "build-files.tar"
+        }
+    ]
+}
diff --git a/mbed6/mbed-cli b/mbed6/mbed-cli
new file mode 100755
index 0000000..88d64a8
--- /dev/null
+++ b/mbed6/mbed-cli
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+
+RUN_ARGS=()
+RUN_CWD="--cwd=$(pwd)"
+
+# Handle case when running from within hidden directory
+if [[ "$(pwd)" =~ ^(/var/tmp) ]] ; then
+    RUN_ARGS+=( --filesystem=${BASH_REMATCH[1]} )
+elif [[ "$(pwd)" =~ ^(/tmp) ]] ; then
+    RUN_ARGS+=( --filesystem=${BASH_REMATCH[1]} )
+elif [[ "$(pwd)" =~ ^(/usr) ]] ; then
+    RUN_CWD="--cwd=/run/host/$(pwd)"
+fi
+
+# Handle special trampoline directory (used at control.lth.se)
+if [ -d "${XDG_RUNTIME_DIR}/trampoline" ] ; then
+    RUN_ARGS+=( --filesystem=xdg-run/trampoline )
+fi
+                
+flatpak "${RUN_CWD}"  "${RUN_ARGS[@]}" run se.lth.control.mbed-cli $@
diff --git a/mbed6/se.lth.control.mbed-cli.json b/mbed6/se.lth.control.mbed-cli.json
index 3757463..ae76f65 100644
--- a/mbed6/se.lth.control.mbed-cli.json
+++ b/mbed6/se.lth.control.mbed-cli.json
@@ -17,16 +17,12 @@
         "manual-arm-none-eabi-newlib.json",
         "manual-arm-none-eabi-gcc.json",
         "manual-git.json",
+        "manual-build-files.json",
         "manual-mbed-cli-wrap.json"
     ],
     "finish-args" : [
         "--filesystem=host",
-        "--filesystem=xdg-run/trampoline",
         "--share=network",
-        //    "--share=ipc",
-        "--talk-name=org.freedesktop.Flatpak",
-        //    "--socket=x11",
-        //    "--device=dri",
         "--device=all"
   ]
 }
-- 
GitLab