Page 1 of 2
Package categories help wanted
Posted: Thu 15 Nov 2012, 11:50
by L18L
Let's start with Fun
s5.sed wrote:s/Game; /Fun_Sub /
s/Game;ActionGame; /Fun_adventure /
s/Game;Action; /Fun_adventure /
s/Game;BlocksGame; /Fun_Sub /
s/Game;Blocks; /Fun_Sub /
s/Game;AdventureGame; /Fun_adventure /
s/Game;Adventure; /Fun_adventure /
s/Game;ArcadeGame; /Fun_arcade /
s/Game;Arcade; /Fun_arcade /
s/Game;BoardGame; /Fun_boardgame /
s/Game;Board; /Fun_boardgame /
s/Game;CardGame; /Fun_cardgame /
s/Game;Card; /Fun_cardgame /
s/Game;KidsGame; /Fun_Sub /
s/Game;LogicGame; /Fun_puzzle /
s/Game;RolePlaying; /Fun_adventure /
s/Game;Simulation; /Fun_Sub /
s/Game;SportsGame; /Fun_Sub /
s/Game;StrategyGame; /Fun_puzzle /
s/Game;Strategy; /Fun_puzzle /
Code: Select all
sed -f s5.sed Categories_package.sorted | sort > xxx
mv xxx Categories_package.sorted
has given puppy category and subcategory to 330 Fun packages
The sad rest is:
Game;Emulator; bsnes
Game;Emulator; dosbox
Game;Emulator; kcemu
Game;Emulator; rlvm
Game;FileTools; snespurify
Game;GPE; gpe-julia
Game;Music;Education linthesia
dosbox a game is not a joke. Is it?
So what now? Silently forget that rest?
@technosaurus, I think that I have now
found one way to continue.
Inserting package names into categories.dat will be be the very last step....
Posted: Fri 16 Nov 2012, 01:43
by BarryK
L18L,
Ha ha, 'dosbox' a game
Well, yesterday I did a test Precise build, and the 'debdb2pupdb' utility created this package database entry for dosbox:
Code: Select all
dosbox_0.74-2|dosbox|0.74-2||Graphic|2468K|pool/universe/d/dosbox|dosbox_0.74-2_i386.deb|+libasound21.0.24.1,+libc6&ge2.7,+libgcc1&ge4.1.1,+libgl1-mesa-glx,+libpng12-0&ge1.2.13-4,+libsdl-net1.2,+libsdl-sound1.2&ge1.0.1,+libsdl1.2debian&ge1.2.10-1,+libstdc++6&ge4.6,+libx11-6,+zlib1g&ge1.1.4|x86 emulator with Tandy/Herc/CGA/EGA/VGA/SVGA graphics sound and DOS|ubuntu|precise||
...assigned it as "Graphic" category. It would have picked up on that keyword "graphics" in the description and assigned the category -- obviously it has done that before discovering "emulator".
That's one reason a more fleshed-out categories.dat will be very helpful. debdb2pupdb will check that first, failing that can then fall back to the somewhat-less-than-perfect method of checking description keywords.
Thanks for all the work you are doing on this, it is great!
Posted: Fri 16 Nov 2012, 02:06
by BarryK
L18L,
while putting pkgs into categories.dat, or preparing to do so, if you think that there is a bunch of packages that really should have another sub-category, we can easily add that.
For example, maybe many of the top-level categories should have a "utility" sub-category. For example:
Code: Select all
CONST PKG_CAT_Business_Sub$=" "
CONST PKG_CAT_Business_spreadsheet$=" gnumeric "
CONST PKG_CAT_Business_planner$=" planner "
CONST PKG_CAT_Business_finance$=" acct expensetracker grisbi homebank moneymanagerx "
CONST PKG_CAT_Business_calc$=" calcoo cgtkcalc galculator gmeasures ycalc xcalc "
There may be some utility-type business apps, for which we should have "PKG_CAT_Business_utility" variable.
Note, in the menu we don't have to have horizontal lines between all of the sub-categories. Some can be grouped. So, these variables are for organizational purposes, actual display in the menu is flexible.
In fact, in Precise there are no horizontal bars between "spreadsheet" and "finance".
Posted: Fri 16 Nov 2012, 10:24
by L18L
BarryK wrote:... a more fleshed-out categories.dat will be very helpful. debdb2pupdb will check that first, failing that can then fall back to the somewhat-less-than-perfect method of checking description keywords...
This dosbox example has made it very clear what to do:
Assign exactly 1 (puppy) category/subcategory to each package.
Existing Categories (in .desktop file) may have more than 1 category, example:
dosbox.desktop wrote:[Desktop Entry]
Type=Application
Name=DOSBox Emulator
Comment=Run old DOS applications
Icon=dosbox
Exec=dosbox
Terminal=false
Categories=Game;Emulator;
What can be done automatically?
Everything that has just 1 (sub)category.
I have continued to use some sed snippets and came to about
750 which cannot be automatically processed.
But before I publish this I will repeat this process to make sure that it is reproducible.
Then we will see if
there is a bunch of packages that really should have another sub-category,
Posted: Fri 16 Nov 2012, 23:36
by sunburnt
While you`re writing specialized scripts to parse the desktop files...
Why not generate an app. library dependency data base with ldd.?
I`ve said that statistics on library usage is a key item for O.S. design.
Puppy`s installed libraries are probably a good list of common ones.
But many apps. need more, so which libs. are only used 1 or 2 times?
Include the commonly used libs. in Puppy or make an add-on SFS file.
The rarely used odd libs. just include with the apps. It`s good design!
# Sorry for stepping on your thread Barry... The thought struck me.
Posted: Sat 17 Nov 2012, 14:51
by pemasu
Is this finding relevant to the packages categories work:
http://www.murga-linux.com/puppy/viewto ... 179#665179
Inspecting desktop files
Posted: Sun 18 Nov 2012, 18:17
by seaside
While there are some perl and python programs to convert a deb file to a tar.gz file, I was surprised to find that just using linux tools was actually faster.
I found that the tar file starts at exactly 60 bytes offset from the header "data.tar.gz". (At least in the 6 deb files I tested). So here's an extractor for *.desktop files.
Code: Select all
#!/bin/sh
# extract *.desktop file from .deb file $1
# seaside November 18 2012
p=`grep --binary-files=text -m1 -b -o 'data.tar.gz' "$1"`
startp=$((${p%:*} + 60)) # add 60 to 'data.tar.gz'
dd if="$1" bs="$startp" skip=1 | tar -xz --strip 4 --wildcards --no-anchored '*.desktop'
Some further processing, checking right from the download could also be possible.
Actually, I might as well make a right-click deb2tar program out of this.
EDIT: deb2tgz. pet here
http://murga-linux.com/puppy/viewtopic. ... 691#665691
Cheers,
s
Package categories help wanted
Posted: Tue 20 Nov 2012, 20:03
by L18L
All data and scripts are in one directory.
fill_categories.tgz came a little later than the pictures
Code: Select all
./reset # (only if starting or restart)
./fill_categories_GUI
The inserted package names are merged with the existing package names and sorted.
---------------------------------
edit
Note please
fill_categories_GUI line 154 wrote: comm="`grep Comment= ../bk/a/$packagename.desktop | cut -d '=' -f2`"
this has to changed to link to the directory containing the .desktop files. These data have been uploaded
here.
------
edit
above
link here corrected (start=12, not 13)
Posted: Tue 20 Nov 2012, 21:16
by L18L
Posted: Tue 20 Nov 2012, 21:17
by pemasu
Re: Package categories help wanted
Posted: Wed 21 Nov 2012, 08:54
by L18L
L18L wrote:edit
Note please
fill_categories_GUI line 154 wrote: comm="`grep Comment= ../bk/a/$packagename.desktop | cut -d '=' -f2`"
this has to changed to link to the directory containing the .desktop files. These data have been uploaded
here.
Sorry, my fault, wrong link to .desktop files.
All
needed .desktop files are in
applications.tar.gz down loadable from
http://murga-linux.com/puppy/viewtopic. ... 6&start=12 (not ....13)
Getting these .desktop files was the bandwidth consuming part.
Posted: Wed 21 Nov 2012, 21:01
by technosaurus
I went through the desktop files looking for any gotchas and to see if it would be feasible to just include the icons but noticed that:
(41) apps use svg icons (not supported by jwm) ... need a wrapper to convert to png and modify desktop file on install
(15) specify no icon
Posted: Fri 23 Nov 2012, 02:54
by sunburnt
Oddly I can`t find any standard saying the icons are to have no extension.
But it`s obviously the case as none ( or few ) icons in desktop files do.
I`ve gotten an error once with a desktop file that had an icon extension.
# So it`s a good idea for Puppy to follow the no icon extension standard.
I think it was intended for the user app. to parse for the icon type it wants.
Example for JWM:
Code: Select all
icon=`cat (app).desktop |grep 'Icon='`
Icon=`ls $ThemeIconPath/${icon#*=} |egrep '(png|xpm)'`
Here are links to the FreeDesktop standards for Catagories, Icons, etc.
http://standards.freedesktop.org/menu-s ... c-1.0.html
Has code near bottom of page for parsing icons:
http://standards.freedesktop.org/icon-t ... atest.html
http://standards.freedesktop.org/icon-n ... atest.html
http://standards.freedesktop.org/deskto ... 01s06.html
http://standards.freedesktop.org/deskto ... 01s05.html
Posted: Fri 23 Nov 2012, 10:10
by amigo
"standard saying the icons are to have no extension" It's in the specs for desktop files. For icons which are correctly installed under /usr/share/icons, no path nor file extension should be given. This is assuming that your WM knows how to correctly find the icon -respecting any theme you have chosen, etc.
However, if using some non-standard location for the icon, then you should give the full path and filename.