Bug#783030: vcmi: lookup path is does not follow Filesystem Hierarchy Standard

Alexandre Detiste alexandre.detiste at gmail.com
Wed Apr 29 12:46:13 UTC 2015


Le mercredi 29 avril 2015, 11:12:37 Johannes Schauer a écrit :
> correct, vcmi stores its static game data in /usr/share/vcmi.
> 
> Now here are some concerns:

I feel when reading between the lines that it's what the FHS really had in mind,
when it says:

| /usr/share : Architecture-independent data
| ...
| Specific Options
| ...
| The following directories, or symbolic links to directories, must be in /usr/share, if the corresponding subsystem is installed:
| ...
| games	Static data files for /usr/games (optional)

As it's there in Debian, even if it's not explitely mandated, why not use it ?

>    So it does not exclude the
>    option of storing static game data outside of /usr/share/games
Indeed.

---

Now about Debian:
"dpkg -S /usr/share/games"
will give me a lenghty list of some games that follow this rule,
it's much more work to get a list of games that don't follow
the rule (attached games.sh); and that glimpse is only applicable
for the games someone has currently installed.

That gives me a list ("list | grep -v kde4 .txt"):
 - all KDE games follow their own rules, at least that's consitent

 - cowsay: but is more a "other frivolous programs" than a game properly

 - doomsday: filed #783707, as it seams to be a 3-line patch
                      ... but there is currently no uploader anymore

 - gootool: unofficial .deb

 - gnuchess: seems that overriding $pkgdatadir would be enough

 - scummvm & residualvm: they share their namespace with the
         games that have been freed and are avaible as huge .deb
         in Debian, like "Beneath a steel sky" etc...

         Some games are even split in different .debs,
         /usr/share/scummvm/sky.cpt (needed by Beneeth..) is found in scummvm-data
         That would be tricky to change.

 - and vcmi                                     

---

> 4. Deviating from upstream in where static game data is stored would not be
>    good

If this game is patched in Debian to merely _add_ an extra lookup location;
this couldn't hurt. 

For OpenTyrian, this was a local patch before it was accepted upstream:
http://anonscm.debian.org/cgit/pkg-games/opentyrian.git/tree/debian/patches/data_dir.patch

A patch for Doom3 engine to look in a engine-agnostic folder.
http://anonscm.debian.org/cgit/pkg-games/dhewm3.git/tree/debian/patches/01-changedatadir.patch

There must be a lot of games patched this way.

> Given this unclear situation, would deviating from upstream be worth it?
Upstream reference is vcmibuilder, which put stuff in /home;
some users have to run it (as root) with --dest /usr/share/vcmi
to put data there.

> Given how the situation is so not-explicit in the FHS I even wonder how to
> convince upstream to change to something the XDG doesn't even mention in the
> first place...
I would say the XDG completes the FHS, not replace it,
so all the "obvious" stuff (/bin , /lib ...) is left out.

This is not absolutely needed to convince them,
this only makes packaging easier with one patch less to refresh.

Most upstreams agrees when the gains are clearfully explained.

> Thus setting the severity to minor.
It already was.



> > By the way: I've added a rule to game-data-packager in git to let it repack
> > HoMM3 data in ~/.local/share/vcmi in a .deb that can be installed
> > system-wise.
> 
> This is awesome! Is there anything I can do from the vcmi side to integrate
> this or make it nicer to use? Any examples I could follow of other packages
> using game-data-packager in a similar way?

You could set a Recommends: or Depends: heroes3-data | game-data-packager,
so that deborphan doesn't tell users to remove generated heroes3-data.

Of course this pull-in g-d-p if the data hasn't already been packaged/re-packaged.
 
Cheers, 
Alexandre
-------------- next part --------------
amor
blinken
bomber
bovo
cowsay
/usr/share/cowsay
/usr/share/cowsay/cows
/usr/share/cowsay/cows/vader.cow
/usr/share/cowsay/cows/bud-frogs.cow
/usr/share/cowsay/cows/elephant-in-snake.cow
/usr/share/cowsay/cows/pony.cow
/usr/share/cowsay/cows/stegosaurus.cow
/usr/share/cowsay/cows/luke-koala.cow
/usr/share/cowsay/cows/three-eyes.cow
/usr/share/cowsay/cows/suse.cow
/usr/share/cowsay/cows/snowman.cow
/usr/share/cowsay/cows/gnu.cow
/usr/share/cowsay/cows/moofasa.cow
/usr/share/cowsay/cows/meow.cow
/usr/share/cowsay/cows/sodomized-sheep.cow
/usr/share/cowsay/cows/cock.cow
/usr/share/cowsay/cows/kosh.cow
/usr/share/cowsay/cows/hellokitty.cow
/usr/share/cowsay/cows/milk.cow
/usr/share/cowsay/cows/ren.cow
/usr/share/cowsay/cows/ghostbusters.cow
/usr/share/cowsay/cows/koala.cow
/usr/share/cowsay/cows/unipony-smaller.cow
/usr/share/cowsay/cows/skeleton.cow
/usr/share/cowsay/cows/beavis.zen.cow
/usr/share/cowsay/cows/daemon.cow
/usr/share/cowsay/cows/flaming-sheep.cow
/usr/share/cowsay/cows/sheep.cow
/usr/share/cowsay/cows/unipony.cow
/usr/share/cowsay/cows/duck.cow
/usr/share/cowsay/cows/kitty.cow
/usr/share/cowsay/cows/cheese.cow
/usr/share/cowsay/cows/turkey.cow
/usr/share/cowsay/cows/apt.cow
/usr/share/cowsay/cows/calvin.cow
/usr/share/cowsay/cows/turtle.cow
/usr/share/cowsay/cows/moose.cow
/usr/share/cowsay/cows/bunny.cow
/usr/share/cowsay/cows/dragon.cow
/usr/share/cowsay/cows/dragon-and-cow.cow
/usr/share/cowsay/cows/pony-smaller.cow
/usr/share/cowsay/cows/eyes.cow
/usr/share/cowsay/cows/tux.cow
/usr/share/cowsay/cows/www.cow
/usr/share/cowsay/cows/mutilated.cow
/usr/share/cowsay/cows/cower.cow
/usr/share/cowsay/cows/stimpy.cow
/usr/share/cowsay/cows/head-in.cow
/usr/share/cowsay/cows/vader-koala.cow
/usr/share/cowsay/cows/elephant.cow
/usr/share/cowsay/cows/kiss.cow
/usr/share/cowsay/cows/mech-and-cow.cow
/usr/share/cowsay/cows/bong.cow
/usr/share/cowsay/cows/default.cow
doomsday
/usr/share/doomsday
/usr/share/doomsday/modules
/usr/share/doomsday/modules/recutil.de
/usr/share/doomsday/modules/Config.de
/usr/share/doomsday/data
/usr/share/doomsday/data/jdoom64
/usr/share/doomsday/data/jdoom64/libdoom64.pk3
/usr/share/doomsday/data/jhexen
/usr/share/doomsday/data/jhexen/libhexen.pk3
/usr/share/doomsday/data/jheretic
/usr/share/doomsday/data/jheretic/libheretic.pk3
/usr/share/doomsday/data/jdoom
/usr/share/doomsday/data/jdoom/libdoom.pk3
/usr/share/doomsday/data/doomsday.pk3
/usr/share/doomsday/data/fonts
/usr/share/doomsday/data/fonts/normallight24.dfn
/usr/share/doomsday/data/fonts/normallight18.dfn
/usr/share/doomsday/data/fonts/normallight12.dfn
/usr/share/doomsday/data/fonts/normalbold24.dfn
/usr/share/doomsday/data/fonts/normalbold18.dfn
/usr/share/doomsday/data/fonts/normalbold12.dfn
/usr/share/doomsday/data/fonts/normal24.dfn
/usr/share/doomsday/data/fonts/normal18.dfn
/usr/share/doomsday/data/fonts/normal12.dfn
/usr/share/doomsday/data/fonts/console18.dfn
/usr/share/doomsday/data/fonts/console14.dfn
/usr/share/doomsday/data/fonts/console11.dfn
/usr/share/doomsday/data/graphics
/usr/share/doomsday/data/graphics/logo.png
/usr/share/doomsday/data/graphics/loading2.png
/usr/share/doomsday/data/graphics/loading1.png
/usr/share/doomsday/data/graphics/background.pcx
gnuchess
/usr/share/gnuchess
/usr/share/gnuchess/smallbook.bin
/usr/share/gnuchess/gnuchess.ini
gnugo
/usr/share/emacs
/usr/share/emacs/site-lisp
/usr/share/emacs/site-lisp/gnugo.el
gootool
/usr/share/gootool
/usr/share/gootool/AppleJavaExtensions.jar
/usr/share/gootool/gootool.jar
/usr/share/gootool/jsch-0.1.42.jar
/usr/share/gootool/lcrypto-jdk15-141.jar
/usr/share/gootool/uiruntime.jar
/usr/share/gootool/48x48.png
granatier
kapman
katomic
kblackbox
kblocks
kbounce
kbreakout
kdegames-card-data
kdegames-mahjongg-data
kdiamond
kfourinline
kgoldrunner
kigo
killbots
kiriki
kjumpingcube
klickety
klines
kmahjongg
kmines
knavalbattle
knetwalk
knights
kolf
kollision
konquest
kpat
kreversi
kshisen
ksirk
kspaceduel
ksquares
ksudoku
ktron
ktuberling
kubrick
lskat
pairs
palapeli
palapeli-data
picmi
residualvm-data
/usr/share/residualvm
/usr/share/residualvm/modern.zip
/usr/share/residualvm/residualvm-grim-patch.lab
scummvm-data
/usr/share/scummvm
/usr/share/scummvm/scummclassic.zip
/usr/share/scummvm/scummmodern.zip
/usr/share/scummvm/lure.dat
/usr/share/scummvm/teenagent.dat
/usr/share/scummvm/drascula.dat
/usr/share/scummvm/neverhood.dat
/usr/share/scummvm/toon.dat
/usr/share/scummvm/queen.tbl
/usr/share/scummvm/hugo.dat
/usr/share/scummvm/kyra.dat
/usr/share/scummvm/mort.dat
/usr/share/scummvm/sky.cpt
/usr/share/scummvm/wintermute.zip
/usr/share/scummvm/translations.dat
/usr/share/scummvm/tony.dat
/usr/share/scummvm/pred.dic
vcmi
/usr/share/vcmi
/usr/share/vcmi/launcher
/usr/share/vcmi/launcher/icons
/usr/share/vcmi/launcher/icons/menu-game.png
/usr/share/vcmi/launcher/icons/menu-mods.png
/usr/share/vcmi/launcher/icons/menu-settings.png
/usr/share/vcmi/launcher/icons/mod-delete.png
/usr/share/vcmi/launcher/icons/mod-disabled.png
/usr/share/vcmi/launcher/icons/mod-download.png
/usr/share/vcmi/launcher/icons/mod-enabled.png
/usr/share/vcmi/launcher/icons/mod-update.png
/usr/share/vcmi/Mods
/usr/share/vcmi/Mods/vcmi
/usr/share/vcmi/Mods/vcmi/Data
/usr/share/vcmi/Mods/vcmi/Data/StackQueueLarge.png
/usr/share/vcmi/Mods/vcmi/Data/StackQueueSmall.png
/usr/share/vcmi/Mods/vcmi/Data/questDialog.png
/usr/share/vcmi/Mods/vcmi/Data/s
/usr/share/vcmi/Mods/vcmi/Data/s/std.verm
/usr/share/vcmi/Mods/vcmi/Data/s/testy.erm
/usr/share/vcmi/Mods/vcmi/Data/stackWindow
/usr/share/vcmi/Mods/vcmi/Data/stackWindow/bonus-effects.png
/usr/share/vcmi/Mods/vcmi/Data/stackWindow/button-panel.png
/usr/share/vcmi/Mods/vcmi/Data/stackWindow/commander-abilities.png
/usr/share/vcmi/Mods/vcmi/Data/stackWindow/commander-bg.png
/usr/share/vcmi/Mods/vcmi/Data/stackWindow/icons.png
/usr/share/vcmi/Mods/vcmi/Data/stackWindow/info-panel-0.png
/usr/share/vcmi/Mods/vcmi/Data/stackWindow/spell-effects.png
/usr/share/vcmi/Mods/vcmi/Sprites
/usr/share/vcmi/Mods/vcmi/Sprites/PortraitsLarge.json
/usr/share/vcmi/Mods/vcmi/Sprites/PortraitsSmall.json
/usr/share/vcmi/Mods/vcmi/Sprites/buttons
/usr/share/vcmi/Mods/vcmi/Sprites/buttons/commander.json
/usr/share/vcmi/Mods/vcmi/Sprites/buttons/commanderNormal.png
/usr/share/vcmi/Mods/vcmi/Sprites/buttons/commanderPressed.png
/usr/share/vcmi/Mods/vcmi/Sprites/buttons/resolution.json
/usr/share/vcmi/Mods/vcmi/Sprites/buttons/resolutionNormal.png
/usr/share/vcmi/Mods/vcmi/Sprites/buttons/resolutionPressed.png
/usr/share/vcmi/Mods/vcmi/Sprites/itpa.json
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/cancel-normal.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/cancel-pressed.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/cancelButton.json
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/level-0.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/level-1.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/level-10.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/level-2.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/level-3.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/level-4.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/level-5.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/level-6.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/level-7.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/level-8.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/level-9.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/levels.json
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/switchModeIcons.json
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/upgrade-normal.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/upgrade-pressed.png
/usr/share/vcmi/Mods/vcmi/Sprites/stackWindow/upgradeButton.json
/usr/share/vcmi/Mods/vcmi/mod.json
/usr/share/vcmi/config
/usr/share/vcmi/config/ERMU_to_picture.json
/usr/share/vcmi/config/NEUTRAL.PAL
/usr/share/vcmi/config/artifacts.json
/usr/share/vcmi/config/battleStartpos.json
/usr/share/vcmi/config/battles_graphics.json
/usr/share/vcmi/config/bonuses.json
/usr/share/vcmi/config/bonuses_texts.json
/usr/share/vcmi/config/buildings5.json
/usr/share/vcmi/config/campaignMedia.json
/usr/share/vcmi/config/campaignSets.json
/usr/share/vcmi/config/campaign_regions.json
/usr/share/vcmi/config/commanders.json
/usr/share/vcmi/config/creatures
/usr/share/vcmi/config/creatures/castle.json
/usr/share/vcmi/config/creatures/conflux.json
/usr/share/vcmi/config/creatures/dungeon.json
/usr/share/vcmi/config/creatures/fortress.json
/usr/share/vcmi/config/creatures/inferno.json
/usr/share/vcmi/config/creatures/necropolis.json
/usr/share/vcmi/config/creatures/neutral.json
/usr/share/vcmi/config/creatures/rampart.json
/usr/share/vcmi/config/creatures/special.json
/usr/share/vcmi/config/creatures/stronghold.json
/usr/share/vcmi/config/creatures/tower.json
/usr/share/vcmi/config/defaultMods.json
/usr/share/vcmi/config/factions
/usr/share/vcmi/config/factions/castle.json
/usr/share/vcmi/config/factions/conflux.json
/usr/share/vcmi/config/factions/dungeon.json
/usr/share/vcmi/config/factions/fortress.json
/usr/share/vcmi/config/factions/inferno.json
/usr/share/vcmi/config/factions/necropolis.json
/usr/share/vcmi/config/factions/neutral.json
/usr/share/vcmi/config/factions/rampart.json
/usr/share/vcmi/config/factions/stronghold.json
/usr/share/vcmi/config/factions/tower.json
/usr/share/vcmi/config/filesystem.json
/usr/share/vcmi/config/fonts.json
/usr/share/vcmi/config/gameConfig.json
/usr/share/vcmi/config/heroClasses.json
/usr/share/vcmi/config/heroes
/usr/share/vcmi/config/heroes/castle.json
/usr/share/vcmi/config/heroes/conflux.json
/usr/share/vcmi/config/heroes/dungeon.json
/usr/share/vcmi/config/heroes/fortress.json
/usr/share/vcmi/config/heroes/inferno.json
/usr/share/vcmi/config/heroes/necropolis.json
/usr/share/vcmi/config/heroes/rampart.json
/usr/share/vcmi/config/heroes/special.json
/usr/share/vcmi/config/heroes/stronghold.json
/usr/share/vcmi/config/heroes/tower.json
/usr/share/vcmi/config/mainmenu.json
/usr/share/vcmi/config/mapOverrides.json
/usr/share/vcmi/config/objects
/usr/share/vcmi/config/objects/creatureBanks.json
/usr/share/vcmi/config/objects/dwellings.json
/usr/share/vcmi/config/objects/generic.json
/usr/share/vcmi/config/objects/moddables.json
/usr/share/vcmi/config/objects/rewardable.json
/usr/share/vcmi/config/obstacles.json
/usr/share/vcmi/config/resolutions.json
/usr/share/vcmi/config/resources.json
/usr/share/vcmi/config/rmg.json
/usr/share/vcmi/config/schemas
/usr/share/vcmi/config/schemas/artifact.json
/usr/share/vcmi/config/schemas/bonus.json
/usr/share/vcmi/config/schemas/creature.json
/usr/share/vcmi/config/schemas/faction.json
/usr/share/vcmi/config/schemas/hero.json
/usr/share/vcmi/config/schemas/heroClass.json
/usr/share/vcmi/config/schemas/mapHeader.json
/usr/share/vcmi/config/schemas/mod.json
/usr/share/vcmi/config/schemas/object.json
/usr/share/vcmi/config/schemas/objectTemplate.json
/usr/share/vcmi/config/schemas/objectType.json
/usr/share/vcmi/config/schemas/spell.json
/usr/share/vcmi/config/schemas/townBuilding.json
/usr/share/vcmi/config/schemas/townSiege.json
/usr/share/vcmi/config/schemas/townStructure.json
/usr/share/vcmi/config/schemas/settings.json
/usr/share/vcmi/config/sp_sounds.json
/usr/share/vcmi/config/spells
/usr/share/vcmi/config/spells/ability.json
/usr/share/vcmi/config/spells/adventure.json
/usr/share/vcmi/config/spells/offensive.json
/usr/share/vcmi/config/spells/other.json
/usr/share/vcmi/config/spells/timed.json
/usr/share/vcmi/config/startres.json
/usr/share/vcmi/config/terrainViewPatterns.json
/usr/share/vcmi/config/terrains.json
/usr/share/vcmi/config/translate.json
-------------- next part --------------
A non-text attachment was scrubbed...
Name: games.sh
Type: application/x-shellscript
Size: 1192 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-games-devel/attachments/20150429/22c20a6a/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.alioth.debian.org/pipermail/pkg-games-devel/attachments/20150429/22c20a6a/attachment-0001.sig>


More information about the Pkg-games-devel mailing list