Le 02/07/2016 20:40, Jasem Mutlaq a écrit : > Hello, Hey Jasem! > > I wanted to create a single snap package for KStars > (http://edu.kde.org/kstars) including all dependencies. I started off > from Krita's snapcraft.yaml file and customized it to fit KStars. > However, since KStars leverages several KDE components (KNewStuff, > kinit, kded5..etc) and also includes INDI server, drivers, and tools > which communicate with devices for control and data acquisition, it is > quite complex compared to other snaps I've seen so far.
Waow, you are attacking a great beast! Glad you are trying to figure out how we could snap a component with so many system/session KDE components! Good project :) > > At first, I ran it in strict confinement mode and used all the plugs > necessary for it to work, but ran into several issues and used it in > devmode since. The snap is created on my primary machine (64bit > Kubuntu 16.04), and all testing is done on a fresh Ubuntu Mate 16.04 > Virtual Machine. I would advise you to always start with devmode. Then, once your snap works reasonably well, you can switch the confinement on and look at missing plugs, errors and I so on. > > Thus far, I ran into the follow issues: > > 1. Cannot read from usr/share/indi. It keeps referring to $SNAP_DATA > and $SNAP_USER_DATA but INDI is a 3rd party program that installs its > data files to /usr/share/data, so how do I deal with that exactly? > Where is $SNAP_DATA located with respect the root FS? Most of the apps have either some runtime env variable or some package build configuration (like --prefix or --datadir). One of the issue we are discussing with upstream is that there is nothing that ensure you those paths will stay the same. Gustavo (CCed here) mentioned maybe some declarative open() redirection in libc would be in order. To ensure directly to your question, SNAP_DATA is currently located at /var/snap/<snap_name>/<current_snap_rev> (current/ is a symlink to current_snap_rev directory). You can have a quick look at those env variables by installing the hello-world snap and run: $ hello-world.env > > 2. Cannot play audio notifications: org.kde.knotifications: Audio > notification requested, but sound file from notifyrc file was not > found, aborting audio notification We can have a look at that if you have this issue with the pulseaudio plug, but let's quick out confinement for now. > > 3. Breeze icons installed but not loaded up. As indicated in the YAML > file, the breeze icon theme is installed, but it is not loading up. > Tried modifying qt5-launch file (export QT_QPA_PLATFORMTHEME=kde) > tried changing QT_SELECT (snappy-qt5 vs qt5) but the icons never load up. Interesting, we'll announce a new launcher in a couple of days, I have hope that this one supports theme in a better way that the current qt5-launch one. Stay tuned to this ML! > > 4. Download New Data (KNewStuff3) loads up providers, show download > list, and when selecting a component to download, it downloads it but > fails to install any file. In strict confinement mode, it fails to > load the providers.xml file I wonder where it tries to install them, is that by any chance in $SNAP? (and so, in a read only area?) > > 5. dbus calls fail in strict confinement mode. I'm ccing Jamie here, he may have a look at them if they make sense to add to any interface. > > 6. Keep getting this message: > > XmbTextListToTextProperty result code -2 > XmbTextListToTextProperty result code -2 > XmbTextListToTextProperty result code -2 > XmbTextListToTextProperty result code -2 I confirm that one with other Qt projects. Didn't find a way personally to fix this, maybe some other have more chance? > > 7. Other apparmor problems (see log below) > > Here is a link to the files: > > 1. snapcraft.yaml: http://www.indilib.org/jdownloads/snap/snapcraft.yaml > 2. qt5-lunch: http://www.indilib.org/jdownloads/snap/qt5-lunch > 3. AppArmor log: http://www.indilib.org/jdownloads/snap/apparmor.txt > > > As you can see from the AppArmor log, there are a lot of calls been > made among all the various components, libraries, file system..etc. > Even when an executable like indi_simulator_ccd is accessing a > dependent library, it says: > > = AppArmor = > Time: Jul 2 20:30:33 > Log: apparmor="ALLOWED" operation="open" > profile="snap.kstars.kstars//null-/snap/kstars/x2/usr/bin/indiserver//null-/snap/kstars/x5/usr/bin/indi_simulator_ccd" > name="/snap/kstars/x5/usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2" > pid=4015 comm="indi_simulator_" requested_mask="r" denied_mask="r" > fsuid=1000 ouid=0 > File: /snap/kstars/x5/usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2 (read) > Suggestion: > * adjust program to read necessary files from $SNAP, $SNAP_DATA or > $SNAP_USER_DATA > > Again, not sure how to adjust program to read from dependent library. > Same, needing Jamie's feedback on those :) Cheers, Didier -- Snapcraft mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/snapcraft
