Github Actions for NoM repos

Awesome. I will test on Mac M1 and Linux tomorrow.

1 Like

I’m not sure how multi-address is supposed to work.

The widget displays a list of all generated addresses but it seems you were trying to display a subset of the addresses?
I didn’t understand the meaning of the # of 10 indicator at the bottom, since iterating from 1 to 10 doesn’t really change the widget.
When I reached 11, the widget re-loaded and created 10 new addresses for me?

Edit: Obviously, I didn’t understand what the 1 of 10 meant. If a user wants to add 6 addresses, they increment to 6 then press Add addresses. Is this clear to everyone else?
The + sign can still be pressed/activated when the user reaches 10, maybe that’s intended?

Maybe we need to have the integer in the “Add addresses” button, such that it clearly tells the user they are about to “Add 6 addresses”.

I’ve tested the Windows and Linux releases.
Both work as expected, though I still encountered an issue with Linux.

Display Driver Error

I had forgotten about this issue, but the Linux Release build crashes often since I’m using nouveau display drivers instead of nvidia.
Error: syrius: ../nouveau/pushbuf.c:730: nouveau_pushbuf_data: Assertion `kref' failed.
If it impacts enough users, I’ll try to find a workaround, though I may not be successful.

Despite all that, the Debug version of the app runs well-ish (it stutters a bit) while the Release build is snappy.

I’ve made several changes to the cicd branch and will submit a PR with a detailed summary after some MacOS testing with 0x.

I just setup on a clean Ubuntu 22.04 VM and have 2 errors.

(syrius:4410): Gtk-WARNING **: 07:21:29.297: Error loading icon from file 'linux/resources/app_icon.png':
	Failed to open file “linux/resources/app_icon.png”: No such file or directory
Starting znnd.
current time is 2022-12-30 07:21:33
version: v0.0.4-libznn
git-commit-hash: 7e9c440f7e5e368efbade77ca900efa1219af0d4
znnd will use at most 4 cpu-cores
WARN[12-30|07:21:33] Config file missing: you can provide a data path using the --data flag or provide a config file using the --config flag module=zenon configPath=/home/x3639/.znn/config.json

And when I try to create a json export of the keyfile, I get this error.

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: [FileSystemException: Directory listing failed, path = '/home/x3639/.pub-cache/' (OS Error: No such file or directory, errno = 2), #0      _Directory._fillWithDirectoryListing (dart:io-patch/directory_patch.dart:42)
#1      _Directory.listSync (dart:io/directory_impl.dart:243)
#2      initArgon2.<anonymous closure> (package:znn_sdk_dart/src/argon2/argon2.dart:30)
#3      Argon2FfiFlutter._loadLib (package:argon2_ffi_base/src/argon2_ffi_impl.dart:160)
#4      new Argon2FfiFlutter (package:argon2_ffi_base/src/argon2_ffi_impl.dart:92)
#5      initArgon2 (package:znn_sdk_dart/src/argon2/argon2.dart:15)
#6      KeyFile._encryptEntropy (package:znn_sdk_dart/src/wallet/keyfile.dart:95)
<asynchronous suspension>
#7      saveKeyStoreFunction (package:znn_sdk_dart/src/wallet/manager.dart:22)
<asynchronous suspension>
]
#0      KeyStoreManager.saveKeyStore.<anonymous closure> (package:znn_sdk_dart/src/wallet/manager.dart:54)
#1      _RootZone.runUnaryGuarded (dart:async/zone.dart:1586)
#2      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339)
#3      _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271)
#4      _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:774)
#5      _StreamController._add (dart:async/stream_controller.dart:648)
#6      _StreamController.add (dart:async/stream_controller.dart:596)
#7      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192)

This is how to recreate the error. I was able to replicate it as sudo also.

1 Like

I see two warnings:

  1. failed to open a .png file
  2. config file missing

For #1, I’ve opted to remove that check until we have a proper mechanism to display the icon. My repo also has Github Actions so you may try the build here.

I don’t believe #2 is an issue; the wallet experience recovers gracefully when the config file is not initially present.

As for the KeyStore issue, I’ve submitted a PR to aliencoder’s znn_sdk_dart repo.

1 Like

Just wanted to let you know that I tried to install the new release on my Mac M1 and experienced the same issue with not being able to export the .json key. I stopped testing at that point.

@0x3639 I’ll check everything you’ve reported again and try to fix all the issues.

@sol_sanctum I responded to your PR on Github. I think it’s better to verify if the .pub-cache directory exists instead of throwing an error.

1 Like

I’ve added the fix.

1 Like

The problem with the missing icon on Linux is that it doesn’t find it at this path linux/resources/app_icon.png. I’ll try to fix it by using a relative path.

I opted to remove the configuration until we have a proper .desktop file in place.
I don’t think we’ll be able to devise a universal Linux solution without package management, though we may be able to fix the window icon, as per this post.

The main reasons for this:

  1. ELF files don’t natively support icons
  2. .desktop files don’t typically support relative paths

Unfortunately that post doesn’t work, neither this one.

The only way to get it showing properly is to have a dynamic reference to the asset’s directory at runtime.

Also I think by properly packaging the app we’ll be able to solve the issue without using the gtk_window_set_icon method.

Tried to use this library to create DMG exe and deb, but without success.

1 Like

Took a look at the workflow file. I think we will want to add testing before creating a release.

2 Likes

Do you mean QA testing, code coverage or both?

I’ve noticed that some Zenon releases have also an additional alpha tag appended - we can do the same.

We can use this action for syrius and znn_sdk_dart.

For go-zenon I’ve added govulncheck-action, but now it’s (Commented out govulncheck · zenon-network/go-zenon@344e080 · GitHub).

1 Like

The codebase has unit tests and we’ll probably want to continue to add tests. I just wouldn’t want to create downloaded releases through a pipeline unless the pipeline included running tests.

1 Like

I agree, I’ll add unit-testing. Do you see something else worth integrating into the pipeline? I want to finish the cicd pipeline and open PRs as soon as possible.

Fixed unit-tests and added version command in the Makefile. Take a look.

Update: abort when a test fails and automatically set a version for the release.

1 Like

Added action status badges in the README and updated syrius_library_updater such that it won’t fail if changes are not present.

1 Like