| Summary: | [RFE] Automatically generate appdata and include it in a package to be shipped in the repository | ||
|---|---|---|---|
| Product: | Infrastructure | Reporter: | Ankur Sinha "FranciscoD" <sanjay.ankur> |
| Component: | Build System | Assignee: | Nicolas Chauvet <kwizart> |
| Status: | ASSIGNED --- | ||
| Severity: | enhancement | CC: | elad, fierce.brake, leamas.alec, lxtnow, matthias, mike, xsaipc0d |
| Priority: | P5 | ||
| Version: | NA | ||
| Hardware: | All | ||
| OS: | GNU/Linux | ||
| namespace: | |||
| Bug Depends on: | 3023, 3657, 3658 | ||
| Bug Blocks: | |||
| Attachments: |
script to run on packages
Python file that downloads cache |
||
|
Description
Ankur Sinha "FranciscoD"
2013-10-23 05:20:06 CEST
How is this is implemented in fedora ? (ansible infrastructure module) ? Is there any RPM fusion packages known to implement appdata ? Fedora requires packages to ship an AppData file. You can find the file specification here: http://people.freedesktop.org/~hughsient/appdata/ I suggest we create a list of all packages with a .desktop file and e-mail the package maintainers to request they add an AppData file. You could additionally open bugs against these packages and make this a tracker bug. (In reply to comment #2) > Fedora requires packages to ship an AppData file. Does it?, can you provide the link to the guideline for this. (In reply to comment #3) > (In reply to comment #2) > > Fedora requires packages to ship an AppData file. > > Does it?, can you provide the link to the guideline for this. It isn't so much a guideline yet. It's a request from Richard, the gnome-software upstream. This is the draft: https://fedoraproject.org/wiki/User:Rhughes/DraftAppDataGuidelines This is his blog post explaining it: http://people.freedesktop.org/~hughsient/appdata/ This is the fpc ticket which is approved: https://fedorahosted.org/fpc/ticket/414 This is upstream's repository: https://github.com/hughsie/fedora-appstream At the moment, applications in Fedora that do not ship appdata have files upstream. For example, the file for vlc is submitted here at the moment. Richard takes all the appdata files from the Fedora repositories and the ones upstream and processes them to generate metadata. He's explained the complete process here: http://blogs.gnome.org/hughsie/2013/10/16/how-to-generate-appstream-metadata-for-fedora/ I hope this helps clear up some queries. Thanks, Warm regards, Ankur (In reply to comment #2) > Fedora requires packages to ship an AppData file. You can find the file > specification here: > http://people.freedesktop.org/~hughsient/appdata/ > > I suggest we create a list of all packages with a .desktop file and e-mail the > package maintainers to request they add an AppData file. You could additionally > open bugs against these packages and make this a tracker bug. A list of packages in rpmfusion with desktop files shouldn't be too tough. I can do the bug filing if you folks think this is the best way to go. Note that: we'll have to confirm with Richard if he can generate the appdata for RPMFusion packages also or if it'll have to be done here elsewhere because of licensing concerns. This is the list that I got. Of course, some may not require appdata files from this:
[asinha@ankur-laptop ~]$ sudo repoquery --disablerepo=* --enablerepo=rpmfusion-nonfree --enablerepo=rpmfusion-free -f '/usr/share/applications/*.desktop' --qf "%-40{repoid} %{name}" | sort
rpmfusion-free acoustid-fingerprinter
rpmfusion-free amule
rpmfusion-free arcem
rpmfusion-free audacity-freeworld
rpmfusion-free avidemux-gtk
rpmfusion-free avidemux-qt
rpmfusion-free BasiliskII
rpmfusion-free bino
rpmfusion-free bombono-dvd
rpmfusion-free bsnes
rpmfusion-free bubbros
rpmfusion-free cairo-dock-core
rpmfusion-free desmume
rpmfusion-free desmume-glade
rpmfusion-free devede
rpmfusion-free dvbcut
rpmfusion-free dvd95
rpmfusion-free DVDAuthorWizard
rpmfusion-free dvdrip
rpmfusion-free DVDRipOMatic
rpmfusion-free dvdstyler
rpmfusion-free fakenes
rpmfusion-free fceux
rpmfusion-free freeguide
rpmfusion-free gambatte-qt
rpmfusion-free gltron
rpmfusion-free gmediafinder
rpmfusion-free gnome-mplayer
rpmfusion-free gtetrinet
rpmfusion-free guvcview
rpmfusion-free gxine
rpmfusion-free imagination
rpmfusion-free k9copy
rpmfusion-free kaffeine
rpmfusion-free kdenlive
rpmfusion-free kmediafactory
rpmfusion-free kplayer
rpmfusion-free lightspark
rpmfusion-free ltris
rpmfusion-free lxdream
rpmfusion-free megamario
rpmfusion-free minitube
rpmfusion-free mixxx
rpmfusion-free mplayer-gui
rpmfusion-free mpv
rpmfusion-free mythtv-frontend
rpmfusion-free mythtv-setup
rpmfusion-free Nestopia
rpmfusion-free ogmrip
rpmfusion-free openmw
rpmfusion-free openshot
rpmfusion-free osmose
rpmfusion-free oxine
rpmfusion-free pangzero
rpmfusion-free pcsxr
rpmfusion-free ProjectX
rpmfusion-free SheepShaver
rpmfusion-free smc
rpmfusion-free smplayer
rpmfusion-free sonic-visualiser-freeworld
rpmfusion-free stella
rpmfusion-free terminatorX
rpmfusion-free traverso
rpmfusion-free vagalume
rpmfusion-free vbam-gtk
rpmfusion-free VirtualBox
rpmfusion-free vlc
rpmfusion-free wormsofprey
rpmfusion-free xbill
rpmfusion-free xbmc
rpmfusion-free xine-ui
rpmfusion-free xmris
rpmfusion-free xmris-editor
rpmfusion-free xroar
rpmfusion-free xvid4conf
rpmfusion-free yabause
rpmfusion-free zsnes
rpmfusion-nonfree abuse
rpmfusion-nonfree assaultcube
rpmfusion-nonfree caja-dropbox
rpmfusion-nonfree d1x
rpmfusion-nonfree dolphin-emu
rpmfusion-nonfree doom-shareware
rpmfusion-nonfree e-uae
rpmfusion-nonfree freecad
rpmfusion-nonfree Frodo
rpmfusion-nonfree frogatto
rpmfusion-nonfree fuse-emulator-roms
rpmfusion-nonfree gens
rpmfusion-nonfree gmameui
rpmfusion-nonfree gnome-video-arcade
rpmfusion-nonfree gsview
rpmfusion-nonfree lpf-skype
rpmfusion-nonfree lpf-spotify-client
rpmfusion-nonfree mari0
rpmfusion-nonfree meka
rpmfusion-nonfree Mosaic
rpmfusion-nonfree OCE-draw
rpmfusion-nonfree pcsx2
rpmfusion-nonfree pgadmin3
rpmfusion-nonfree plus4emu
rpmfusion-nonfree pushover
rpmfusion-nonfree pyskool
rpmfusion-nonfree qchdman
rpmfusion-nonfree qmc2-sdlmame
rpmfusion-nonfree qmc2-sdlmess
rpmfusion-nonfree realcrypt
rpmfusion-nonfree roadfighter
rpmfusion-nonfree snes9x
rpmfusion-nonfree steam
rpmfusion-nonfree ufoai
rpmfusion-nonfree ufoai-server
rpmfusion-nonfree ufoai-uforadiant
rpmfusion-nonfree vice
rpmfusion-nonfree wolf4sdl-registered-apogee
rpmfusion-nonfree wolf4sdl-registered-id
rpmfusion-nonfree wolf4sdl-shareware
rpmfusion-nonfree wolf4sdl-spear
rpmfusion-nonfree wolf4sdl-spear-demo
rpmfusion-nonfree xcpc
rpmfusion-nonfree xorg-x11-drv-nvidia
rpmfusion-nonfree xorg-x11-drv-nvidia-173xx
rpmfusion-nonfree xorg-x11-drv-nvidia-304xx
rpmfusion-nonfree xrick
rpmfusion-nonfree xv
rpmfusion-nonfree yapeSDL
Should I send this list to the devel ML and request all maintainers to add appdata files as a first pass? We could then start filing bugs on packages that still don't have appdata files after a week or so?
Hi, Any progress on this? I'm interested in helping too. Getting this in time for Fedora 21 will vastly improve the RPM Fusion user experience. (In reply to comment #6) > Should I send this list to the devel ML and request all maintainers to add > appdata files as a first pass? We could then start filing bugs on packages that > still don't have appdata files after a week or so? Ideally the maintainers need to get upstream to create an AppData file and then we can ship it from the upstream tarball. I have started the RFE process with XBMC (Kodi) today. I'm not sure how many maintainers are subscribed to the ML but feel free to send an e-mail out. Then we can approach the bug reports if no one is responding to the ML. One thing worth mentioning is that you don't need to wait for packages to ship appdata: you can generate the metadata without any package shipping an appdata file. You won't have long descriptions or screenshots, but the apps will be shown in Software. Adding the appdata files should be the second step. I went ahead and tried it out. I'll attach the scripts used. The actual metadata generation didn't take much time. Downloading the required packages did, but if the process is run on rpmfusion infra, this step won't be required:
[asinha@ankur-laptop 01_rpmfusion_appdata]$ ./rpmfusion.sh
Scanning packages...
Processing packages...
Merging applications... Starting
Writing /home/asinha/dump/01_rpmfusion_appdata/contrib/metadata/rpmfusion-20.xml.gz...
Writing /home/asinha/dump/01_rpmfusion_appdata/contrib/metadata/rpmfusion-20-failed.xml.gz...
Writing /home/asinha/dump/01_rpmfusion_appdata/contrib/metadata/rpmfusion-20-icons.tar.gz...
WARNING: livna-amule.desktop and livna-alc.desktop share the package 'amule'
WARNING: livna-amulegui.desktop and livna-alc.desktop share the package 'amule'
WARNING: livna-wxcas.desktop and livna-alc.desktop share the package 'amule'
WARNING: skool_daze.desktop and back_to_skool.desktop share the package 'pyskool'
WARNING: assaultcube_server.desktop and assaultcube.desktop share the package 'assaultcube'
WARNING: assaultcube_server_lan.desktop and assaultcube.desktop share the package 'assaultcube'
WARNING: openmw.desktop and opencs.desktop share the package 'openmw'
WARNING: smtube.desktop and rpmfusion-smplayer.desktop share the package 'smplayer'
WARNING: k9copy_assistant.desktop and k9copy.desktop share the package 'k9copy'
WARNING: cairo-dock.desktop and cairo-dock-cairo.desktop share the package 'cairo-dock-core'
Done!
real 1m35.826s
user 3m42.963s
sys 0m25.560s
[asinha@ankur-laptop contrib]$ du -hsc packages/
1.7G packages/
1.7G total
[asinha@ankur-laptop contrib]$
The metadata is quite small at the moment:
[asinha@ankur-laptop contrib]$ du -hsc metadata/
376K metadata/
376K total
[asinha@ankur-laptop 01_rpmfusion_appdata]$ pwd
/home/asinha/dump/01_rpmfusion_appdata
[asinha@ankur-laptop 01_rpmfusion_appdata]$ tree -d
.
├── cache
├── contrib
│ ├── cache
│ ├── logs
│ │ └── fedora-20
│ ├── metadata
│ ├── packages
│ └── screenshots
│ ├── 112x63
│ ├── 624x351
│ ├── 752x423
│ └── source
└── tmp
└── fedora-20
└── icons
15 directories
Of course, there aren't any screenshots in there, and no actual appdata files. This info has only been extracted from desktop files.
Created attachment 1322 [details] script to run on packages I've created a git repo here for extra appdata files: https://github.com/sanjayankur31/rpmfusion-appdata Until maintainers add appdata files to their packages and send them upstream, we can maintain them externally here - it's what Richard is doing for Fedora. Created attachment 1323 [details] Python file that downloads cache This probably won't be needed if the metadata generation is run on rpmfusion infra where all the packages are already available. Attaching it, nevertheless. It's almost the same as the helper script Richard uses: https://github.com/hughsie/appstream-glib/tree/master/contrib I've just disabled the rawhide part in the script. I've placed the generated metadata files here if anyone wants to have a look: https://ankursinha.fedorapeople.org/rpmfusion-appdata-metadata/ I created an rpm too. The spec/srpm/rpms are here: https://ankursinha.fedorapeople.org/rpmfusion-appdata-metadata/rpms/rpmfusion-appstream-data-20.spec https://ankursinha.fedorapeople.org/rpmfusion-appdata-metadata/rpms/rpmfusion-appstream-data-20-1-1.fc20.noarch.rpm https://ankursinha.fedorapeople.org/rpmfusion-appdata-metadata/rpms/rpmfusion-appstream-data-20-1-1.fc20.src.rpm It works as expected. For example, here's a gnome-software screenshot showing kdenlive: https://ankursinha.fedorapeople.org/rpmfusion-appdata-metadata/rpms/kdenlive-rpmfusion-gnome-software.png The rpm is quite small at the moment: [asinha@ankur-laptop noarch]$ du -hc rpmfusion-appstream-data-20-1-1.fc20.noarch.rpm 332K rpmfusion-appstream-data-20-1-1.fc20.noarch.rpm Similar to what Elad had suggested on the mailing list, we could have a metapackage: "rpmfusion-workstation" that pulls in the repo configs and this appdata file. That way, folks that don't want to have the appdata rpm aren't forced to use it - folks not using gnome-software, or using DEs other than gnome3. I see lot of scripts but I fail to see appstream-builder from rpmfusion.sh in a package ? Is it unpackaged still ? Also you seems to mix information about contributors to add support for appdata and for the infrastructure for the appdata to be provided in the repository. (I would only focus on providing the appdata within the repository, not as packages). Out of curiosity, would it be possible to extend the appdata specification to allow to provide 3rd repository information ? (such as the url of adobe-release.rpm or google-chrome.repo and gpg files ) ? That way it will be possible to provide the related package as soon as users add the related rpmfusion-free/nonfree-release. (In reply to comment #14) > I see lot of scripts but I fail to see appstream-builder from rpmfusion.sh in a > package ? Is it unpackaged still ? Hrm, no. I have it here: [asinha@ankur-laptop ~]$ rpm -qf /usr/bin/appstream-builder libappstream-glib-builder-0.2.4-1.fc20.x86_64 It isn't in F20 stable, though. It's available in the Gnome 3.14 copr that the workstation sig hosts. > Also you seems to mix information about contributors to add support for appdata > and for the infrastructure for the appdata to be provided in the repository. > (I would only focus on providing the appdata within the repository, not as > packages). Sorry - I'm not really sure what you're saying here. Are you referring to the github repo that I've set up? That's completely optional. At the moment, just building metadata from whatever we have in the packages is enough. Maintainers can improve this be including appdata files in their packages. The github repo is just another way of providing appdata for packages that is missing it. It isn't a must to use it at all. (In reply to comment #15) > Out of curiosity, would it be possible to extend the appdata specification to > allow to provide 3rd repository information ? (such as the url of > adobe-release.rpm or google-chrome.repo and gpg files ) ? That way it will be > possible to provide the related package as soon as users add the related > rpmfusion-free/nonfree-release. I'm not sure. I'll have to ask Richard to get details on this. I remember there was a proposal where the workstation SIG wanted to include just repo info for third party repos to give users the ability to enable them - exactly like your question. However, there was a long discussion regarding whether this was in line with the Fedora foundation of being 100% open source and not promoting non free software in any way. The entire thread and the resulting FESCo ticket is here: https://lists.fedoraproject.org/pipermail/board-discuss/2014-January/012275.html https://fedorahosted.org/fesco/ticket/1201 I'll have to re-read the discussion to see if gnome-software and appstream include a way to make third party repositories available or not. Elad, would you know the details on this off the top of your head? I'm quite sure we don't have a way to do what you want to do with appstream. I also don't think specifying a URL to a -release rpm is the right way to go. You could build your own foo-release package in rpmfusion, after all it's just a repo configuration. I'll discuss the details with Richard when he has time. While it would be a fantastic thing (in terms of user experience) to add to rpmfusion, it shouldn't "block" the appdata efforts - we can always add that later. I have added appdata support in the upstream packaging for lpf-spotify-make, i. e., http://github.com/leamas/spotify-make. I see no reason to push this to users which as of now doesn't get any benefit of it (?). I can build test packages if/when there is interest. Until automation comes, I've generated the metadata and submitted two review tickets here: https://bugzilla.rpmfusion.org/show_bug.cgi?id=3658 - nonfree https://bugzilla.rpmfusion.org/show_bug.cgi?id=3657 - free Cheers, Ankur The reviews are up and I've uploaded screenshots to my fedorapeople space for the time being. Very few apps have appdata at the moment. What is the right way to go here? Should I start filing bugreports asking maintainers to add appdata now? Hello!
I am getting the following when trying to install spotify using lpf. WHat should i do? i guess its related to Gtk.
Gtk-Message: 07:57:07.781: GtkDialog mapped without a transient parent. This is discouraged.
spotify-client: downloading sources
spotify-client: build failed
/usr/share/lpf/scripts/build_error.py:7: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
from gi.repository import Gtk # pylint:disable=no-name-in-module
(build_error:5319): Gtk-WARNING **: 07:57:09.968: Theme directory categories/24 of theme Arrongin-Suru has no size field
(build_error:5319): Gtk-WARNING **: 07:57:09.968: Theme directory mimetypes/32 of theme Arrongin-Suru has no size field
Gtk-Message: 07:57:09.979: GtkDialog mapped without a transient parent. This is discouraged.
(In reply to David Valiente from comment #22) > Hello! > > I am getting the following when trying to install spotify using lpf. WHat > should i do? i guess its related to Gtk. Please report an issue to the lpf spotify Don't use unrelated report. Thx |