Open Feichtmeier opened 2 years ago
I would like to try this :-D
Thanks for the help @krillefear We are still missing a lot of pages though, currently slowed the development a bit down due to some IRL stuff, but hopefully back soon 🤞
Sorry... looks like I failed with this task. I have tried a lot to make this work but I ran into bugs every time. So this is my current approach:
name: settings
base: core18
version: git
summary: Unofficial Ubuntu Desktop Settings App made with Flutter
description: Unofficial Ubuntu Desktop Settings App made with Flutter
grade: stable
confinement: devmode
parts:
settings:
plugin: flutter
source: .
slots:
dbus-svc:
interface: dbus
bus: session
name: github.Feichtmeier.settings
apps:
settings:
command: settings
extensions: [flutter-stable]
And it crashes while trying to build it with flutter with this error:
[ +53 ms] -- Checking for module 'gio-2.0'
[ +16 ms] -- Found gio-2.0, version 2.56.4
[ +63 ms] -- Checking for module 'libhandy-1'
[ +4 ms] -- No package 'libhandy-1' found
[ ] CMake Error at
/snap/flutter/111/usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:419 (message):
[ +3 ms] A required package was not found
[ ] Call Stack (most recent call first):
[ ] /snap/flutter/111/usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:597
(_pkg_check_modules_internal)
[ ] CMakeLists.txt:45 (pkg_check_modules)
[ +1 ms] -- Configuring incomplete, errors occurred!
[ ] See also
"/root/parts/settings/build/build/linux/x64/release/CMakeFiles/CMakeOutput.log".
[ +21 ms] Building Linux application... (completed in 1,520ms)
[ ] "flutter linux" took 2,509ms.
[ +5 ms] Unable to generate build files
[ +3 ms]
#0 throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
#1 _runCmake (package:flutter_tools/src/linux/build_linux.dart:155:5)
<asynchronous suspension>
#2 buildLinux (package:flutter_tools/src/linux/build_linux.dart:75:5)
<asynchronous suspension>
#3 BuildLinuxCommand.runCommand
(package:flutter_tools/src/commands/build_linux.dart:88:5)
<asynchronous suspension>
#4 FlutterCommand.run.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command.dart:1140:27)
<asynchronous suspension>
#5 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#6 CommandRunner.runCommand (package:args/command_runner.dart:209:13)
<asynchronous suspension>
#7 FlutterCommandRunner.runCommand.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command_runner.dart:288:9)
<asynchronous suspension>
#8 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#9 FlutterCommandRunner.runCommand
(package:flutter_tools/src/runner/flutter_command_runner.dart:236:5)
<asynchronous suspension>
#10 run.<anonymous closure>.<anonymous closure>
(package:flutter_tools/runner.dart:62:9)
<asynchronous suspension>
#11 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#12 main (package:flutter_tools/executable.dart:94:3)
<asynchronous suspension>
[ +40 ms] ensureAnalyticsSent: 37ms
[ +1 ms] Running shutdown hooks
[ ] Shutdown hooks complete
[ ] exiting with code 1
Failed to run 'flutter build linux --release -v -t lib/main.dart' for 'settings': Exited with code 1.
Verify that the part is using the correct parameters and try again.
Run the same command again with --debug to shell into the environment if you wish to introspect this failure.
I guess No package 'libhandy-1' found
is the important error here. Looks like there is no libhandy package in Ubuntu 18.04?
Thanks for investing time into this @krillefear !
Libhandy is needed to get the four rounded window corners Eventually use a more up to date ubuntu as the snap base? Would this be possible?
The flutter plugin is only compatible with core18 but I will try out what happens if I overwrite the build step
Okay I ran into another problem I already had with other flutter apps:
[ ] [ +63 ms] gen_dart_plugin_registrant: Complete
[ ] [ +2 ms] unpack_linux: Complete
[ ] [ +333 ms] kernel_snapshot: Starting due to {}
[ +2 ms] [ +18 ms] /root/parts/settings/build/flutter/bin/cache/dart-sdk/bin/dart
--disable-dart-dev
/root/parts/settings/build/flutter/bin/cache/artifacts/engine/linux-x64/frontend_server.dar
t.snapshot --sdk-root
/root/parts/settings/build/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk_pr
oduct/ --target=flutter --no-print-incremental-dependencies -Ddart.vm.profile=false
-Ddart.vm.product=true --aot --tfa --packages
/root/parts/settings/build/.dart_tool/package_config.json --output-dill
/root/parts/settings/build/.dart_tool/flutter_build/212631e842521512b4b7f739bc1e5fbc/app.di
ll --depfile
/root/parts/settings/build/.dart_tool/flutter_build/212631e842521512b4b7f739bc1e5fbc/kernel
_snapshot.d /root/parts/settings/build/.dart_tool/flutter_build/generated_main.dart
[ +1 ms] [+64090 ms] Persisting file store
[ ] [ +7 ms] Done persisting file store
[ ] [ +4 ms] Target kernel_snapshot failed: Exception
[ ] #0 KernelSnapshot.build
(package:flutter_tools/src/build_system/targets/common.dart:241:7)
[ ] <asynchronous suspension>
[ ] #1 _BuildInstance._invokeInternal
(package:flutter_tools/src/build_system/build_system.dart:839:9)
[ ] <asynchronous suspension>
[ ] #2 Future.wait.<anonymous closure> (dart:async/future.dart)
[ ] <asynchronous suspension>
[ ] #3 _BuildInstance.invokeTarget
(package:flutter_tools/src/build_system/build_system.dart:777:32)
[ ] <asynchronous suspension>
[ ] #4 Future.wait.<anonymous closure> (dart:async/future.dart)
[ ] <asynchronous suspension>
[ ] #5 _BuildInstance.invokeTarget
(package:flutter_tools/src/build_system/build_system.dart:777:32)
[ ] <asynchronous suspension>
[ ] #6 Future.wait.<anonymous closure> (dart:async/future.dart)
[ ] <asynchronous suspension>
[ ] #7 _BuildInstance.invokeTarget
(package:flutter_tools/src/build_system/build_system.dart:777:32)
[ ] <asynchronous suspension>
[ ] #8 FlutterBuildSystem.build
(package:flutter_tools/src/build_system/build_system.dart:606:16)
[ ] <asynchronous suspension>
[ ] #9 AssembleCommand.runCommand
(package:flutter_tools/src/commands/assemble.dart:317:32)
[ ] <asynchronous suspension>
[ ] #10 FlutterCommand.run.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command.dart:1140:27)
[ ] <asynchronous suspension>
[ ] #11 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
[ ] <asynchronous suspension>
[ ] #12 CommandRunner.runCommand
(package:args/command_runner.dart:209:13)
[ ] <asynchronous suspension>
[ ] #13 FlutterCommandRunner.runCommand.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command_runner.dart:288:9)
[ ] <asynchronous suspension>
[ ] #14 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
[ ] <asynchronous suspension>
[ ] #15 FlutterCommandRunner.runCommand
(package:flutter_tools/src/runner/flutter_command_runner.dart:236:5)
[ ] <asynchronous suspension>
[ ] #16 run.<anonymous closure>.<anonymous closure>
(package:flutter_tools/runner.dart:62:9)
[ ] <asynchronous suspension>
[ ] #17 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
[ ] <asynchronous suspension>
[ ] #18 main (package:flutter_tools/executable.dart:94:3)
[ ] <asynchronous suspension>
[ ] [ +29 ms] "flutter assemble" took 65,337ms.
[ ] [ +6 ms]
[ ] #0 throwToolExit
(package:flutter_tools/src/base/common.dart:10:3)
[ ] #1 AssembleCommand.runCommand
(package:flutter_tools/src/commands/assemble.dart:334:7)
[ ] <asynchronous suspension>
[ ] #2 FlutterCommand.run.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command.dart:1140:27)
[ ] <asynchronous suspension>
[ ] #3 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
[ ] <asynchronous suspension>
[ ] #4 CommandRunner.runCommand
(package:args/command_runner.dart:209:13)
[ ] <asynchronous suspension>
[ ] #5 FlutterCommandRunner.runCommand.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command_runner.dart:288:9)
[ ] <asynchronous suspension>
[ ] #6 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
[ ] <asynchronous suspension>
[ ] #7 FlutterCommandRunner.runCommand
(package:flutter_tools/src/runner/flutter_command_runner.dart:236:5)
[ ] <asynchronous suspension>
[ ] #8 run.<anonymous closure>.<anonymous closure>
(package:flutter_tools/runner.dart:62:9)
[ ] <asynchronous suspension>
[ ] #9 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
[ ] <asynchronous suspension>
[ ] #10 main (package:flutter_tools/executable.dart:94:3)
[ ] <asynchronous suspension>
[ ] [ +153 ms] ensureAnalyticsSent: 150ms
[ ] [ +1 ms] Running shutdown hooks
[ ] [ ] Shutdown hooks complete
[ ] [ ] exiting with code 1
[ ] ninja: build stopped: subcommand failed.
[ +6 ms] Building Linux application... (completed in 68.7s)
[ ] "flutter linux" took 74,609ms.
[ +14 ms] Build process failed
[ +7 ms]
#0 throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
#1 _runBuild (package:flutter_tools/src/linux/build_linux.dart:185:5)
<asynchronous suspension>
#2 buildLinux (package:flutter_tools/src/linux/build_linux.dart:77:5)
<asynchronous suspension>
#3 BuildLinuxCommand.runCommand
(package:flutter_tools/src/commands/build_linux.dart:88:5)
<asynchronous suspension>
#4 FlutterCommand.run.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command.dart:1140:27)
<asynchronous suspension>
#5 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#6 CommandRunner.runCommand (package:args/command_runner.dart:209:13)
<asynchronous suspension>
#7 FlutterCommandRunner.runCommand.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command_runner.dart:288:9)
<asynchronous suspension>
#8 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#9 FlutterCommandRunner.runCommand
(package:flutter_tools/src/runner/flutter_command_runner.dart:236:5)
<asynchronous suspension>
#10 run.<anonymous closure>.<anonymous closure>
(package:flutter_tools/runner.dart:62:9)
<asynchronous suspension>
#11 AppContext.run.<anonymous closure>
(package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#12 main (package:flutter_tools/executable.dart:94:3)
<asynchronous suspension>
[ +108 ms] ensureAnalyticsSent: 103ms
[ +1 ms] Running shutdown hooks
[ ] Shutdown hooks complete
[ ] exiting with code 1
With the current snapcraft.yaml file:
name: settings
base: core20
version: git
summary: Unofficial Ubuntu Desktop Settings App made with Flutter
description: Unofficial Ubuntu Desktop Settings App made with Flutter
grade: stable
confinement: devmode
parts:
libhandy:
plugin: meson
meson-parameters:
- -Dvapi=false
- -Dtests=false
- -Dexamples=false
- -Dintrospection=disabled
- -Dglade_catalog=disabled
- -Dbuildtype=release
source-type: git
source: https://source.puri.sm/Librem5/libhandy
build-packages:
- gcc
- libgtk-3-dev
settings:
plugin: dump
source: .
build-packages:
- git
- curl
- cmake
- meson
- make
- clang
- libgtk-3-dev
- pkg-config
- unzip
override-build: |
git clone https://github.com/flutter/flutter.git -b stable
export PATH="$PATH:`pwd`/flutter/bin"
flutter doctor
flutter pub get
flutter config --enable-linux-desktop
flutter build linux --release -v
slots:
dbus-svc:
interface: dbus
bus: session
name: github.Feichtmeier.settings
apps:
settings:
command: settings
extensions: [gnome-3-38]
I don't know how to fix this. The only way I see is, to prebuild the app in any kind of CI and then package the prebuilt executable with snapcraft. Thats how it works for FluffyChat as well.
Using gnome-3-38 you don't need to build libhandy yourself, as it's included in the SDK snap. Here's a modified yaml that built for me:
name: settings
base: core20
version: git
summary: Unofficial Ubuntu Desktop Settings App made with Flutter
description: Unofficial Ubuntu Desktop Settings App made with Flutter
grade: stable
confinement: devmode
parts:
settings:
plugin: nil
source: .
build-packages:
- cmake
- clang
- curl
- git
- unzip
override-build: |
git clone https://github.com/flutter/flutter.git -b stable
export PATH="$PATH:`pwd`/flutter/bin"
flutter doctor
flutter pub get
flutter config --enable-linux-desktop
flutter build linux --release -v
cp -rp $SNAPCRAFT_PART_BUILD/build/linux/x64/release/bundle/* $SNAPCRAFT_PART_INSTALL/
slots:
dbus-svc:
interface: dbus
bus: session
name: github.Feichtmeier.settings
apps:
settings:
command: settings
extensions: [gnome-3-38]
Using gnome-3-38 you don't need to build libhandy yourself, as it's included in the SDK snap. Here's a modified yaml that built for me:
I have tried it out and on my machine I ran into the same error with Target kernel_snapshot failed: Exception
. I use a Ubuntu 20.04 desktop PC with 16GB RAM. I will try the remote-build now. Maybe this helps...
This failed as well but we have full logs here now at least:
@kenvandine or @krille-chan could anyone of you re-tackle this one? :smile_cat:
((( @krille-chan awesome work with fluffy chat, using it daily :1st_place_medal: )
registered the name settings-app
I'll take this, can you please add me as a collaborator on the snap? ken.vandine@canonical.com
Thanks Ken ! Done 😃
Added a snapcraft skeleton, desktop file and icon (icon needs prbly changing to not have the same icon as GCC) and notes for you in the snapcraft file :)