Howto contribute PET packages for Puppy 5.0
May 01, 2009 —
BarryK
When the alpha7 gets released, I intend that the Puppy Package Manager will have a "puppy-5" radiobutton in the choice of repositories. These PET packages will reside at ibiblio.org in the pet_packages-5 directory.
All Puppy developers are invited to contribute PET packages for this repository.
The requirements are that you must compile it in Upup (Jaunty Puppy). It is done in the usual way, for example:
Howto create a PET package
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=i486-pc-linux-gnu
# make
# new2dir make install
The 'new2dir' utility creates a directory of the installed packages, though do note it isn't perfect and needs to be manually checked. Some packages do not work at all well with 'new2dir'.
We then have 'dir2pet' which will convert a directory into a PET package, for example:
# dir2pet abiword-1.2.3
The above steps are explained here:
http://puppylinux.com/development/createpet.htm
Puppy package database entry
The 'dir2pet' utility invokes the 'petspec' utility, which is an easy way to create a package database entry, which gets put inside the package, as /pet.specs.
The 'petspec' utility is introduced in my recent blog post:
http://bkhome.org/archive/blog2/200904/petspec.html
One thing you should give some thought to is the dependencies. The 'Dependencies' box in petspec can be left blank if all dependencies are already in Puppy. Otherwise, if you had to create some dep packages, say for example 'aiksaurus', then put that in. It needs to be entered with a '+' prefix, and dependencies are comma-delimited.
The Puppy package database format is introduced here:
http://puppylinux.com/woof/pkg-db-format.htm
Submitting the PET package
WhoDo will be coordinating this. Send him the PET package, also the database entry that 'petspec' generated.
WhoDo will test the package, although it would probably be a good idea to post it on the forum first for many to test, so that any bugs are fixed.
If it looks like a good addition to Puppy5, WhoDo will upload it to pet_packages-5 directory at ibiblio.org. That will be here:
http://distro.ibiblio.org/pub/linux/distributions/puppylinux/
If you look at the above URL, you will see files named like 'Packages-puppy-4-official', etc. These are the package database files. We will be adding 'Packages-puppy-5-official' and when your PET package gets added to the repository, WhoDo will add your database entry to this file.
A running Woof-built Puppy has these files at /root/.packages/Packages-* and the Puppy Package Manager reads them. The PPM also has an 'Update' button to download the latest 'Packages-*' files, so you can update to the latest packages that are at ibiblio.org.
Adding more repositories
Eric Caneri and MU host more PET packages, and these can also be recognised by the Puppy Package Manager in the future. Basically, just let me know where these repos are, that is, the URLs, and you have to create a 'Packages-*' file for the repo, at that URL (and keep it up-to-date when you add/remove packages).
Note, the naming of these 'Packages-*' files has the convention:
Packages-<distro>-<distro-release>-<unique repo name>
Examples:
Packages-ubuntu-jaunty-universe
Packages-slackware-12.2-slacky
Packages-puppy-5-official
...the first three fields must be adhered to exactly. All PET repos must have 'puppy' in the second field. If Caneri has his own repo, he can name the file like this:
Packages-puppy-5-caneri
Comments
packages for the repoUsername: ttuuxxx
Wow barry that sounds complicated, hard to remember, why all the extra naming steps? could we just have a puppy section for each woof 5 series? /puppy5j/ /puppy5d/ /puppy5s/ and name the packages like abiword-1.2.3-i486-j abiword-1.2.3-i486-d abiword-1.2.3-i486-s so when searching the online repo you won't have to scroll up and down over 1000 packages because it has the same abiword 4-5 times but based on another woof release, why group them together? actually you could easily make the new2dir script add the -j,-d,-s on the end of the i486 automatically, depending on which release your using. Also why are we compiling as i486 when Ubuntu and Debian compile as i386 and slackware is i486 and arch is i686. plus on distrowatch you said that puppy is "Processor Architecture i386" even though all of 3&4 series is i486 or is that a typo? Sorry not to be a pain, but why mix and match? I'll have to think real hard on this one, for the time being until I decide maybe I'll just post links in the forum and if WhoDo likes the packages he can convert them for the repo. ttuuxxx
What needs to be upgraded
Username: happypuppy
"* ALSA 1.0.18 -> 1.0.19 (the complete ALSA package,not the half-assed job ttuuxxx did with Puppy 4.2 :( ) * Puppy Wallpaper Setter 0.5 -> 0.5.3 * gFTP 2.0.18 -> 2.0.19 * Pfind 4.4 -> 4.8 * HardInfo 0.4.2 -> 0.5.1 * mtPaint 3.21 -> 3.31 + PNG patch * SeaMonkey 1.1.14 -> 1.1.16 * Leafpad 0.8.13 -> 0.8.16 * ChmSee 1.0.0 -> 1.0.4 * ePDFView 0.1.6 -> 0.1.7 * Poppler -> 0.10.6 * Upgrade bcrypt's Blowfish with a better encryption algorithm * Xorg with latest 'radeon' driver and DRI kernel modules for ATI cards. The drivers in upup are old and useless (don't work) for R600/R700-based cards. The latest drivers work like a charm. * kernel 2.6.29.2 (with PCI_MSI option enabled,to enable installation of nVidia and ATI closed-source video drivers) Other things to consider: * Transmission BitTorrent Client (1.60 beta1) * XArchiver (0.5.2+ SVN build) instead of Xarchive * PCursorsel cursor theme selector from Puppy 4.2
pet packages
Username: ttuuxxx
"happypuppy : I didn't make the "half-assed job ttuuxxx did with Puppy 4.2" I was told not to make it and had, because of headers and stuff, so I didn't. Also the Xarchiver package that was used in 4.2 was a custom made version from the developer for puppy, I talked to him via pm, to work on some specific issues we were having with the default svn releases. So I wouldn't go upgrading it, just download from the 4.0 repo it works in upup just fine :) http://distro.ibiblio.org/pub/linux/distributions/puppylinux/pet_packages-4/xarchiver-0.5.2-PupZip-v5.pet ttuuxxx
pet packages
Username: ttuuxxx
"happypuppy : I didn't make the "half-assed job ttuuxxx did with Puppy 4.2" I was told not to make it and had, because of headers and stuff, so I didn't. Also the Xarchiver package that was used in 4.2 was a custom made version from the developer for puppy, I talked to him via pm, to work on some specific issues we were having with the default svn releases. So I wouldn't go upgrading it, just download from the 4.0 repo it works in upup just fine :) http://distro.ibiblio.org/pub/linux/distributions/puppylinux/pet_packages-4/xarchiver-0.5.2-PupZip-v5.pet ttuuxxx
Package naming
Username: BarryK
"[i]Wow barry that sounds complicated, hard to remember, why all the extra naming steps? could we just have a puppy section for each woof 5 series? /puppy5j/ /puppy5d/ /puppy5s/ and name the packages like abiword-1.2.3-i486-j abiword-1.2.3-i486-d abiword-1.2.3-i486-s [/i] ttuuxx, you're not seeing the wood for the trees. Understandable as this is all new. It's actually very simple. The 'Packages-puppy-5-official' can have multiple abiword package entries in it, named differently like you have suggested. It doesn't matter if they are all together in the 'pet_packages-5' directory on ibiblio. or, the packages could be in different directories, like you suggested. In the case of ibiblio, I decided it is neater to have just one directory for the Puppy5 series, as per past practice. The Puppy Package Manager will only list the relevant ones. You need to study the fields in a database entry. There is one field for the subdirectory in which the package is located on the repo. There are fields on the end that are used for the screening: [i]ubuntu|jaunty|5|[/i] PPM will look at the 3rd-last and 2nd-last fields and display the package only if there is a match with the currently running version of Puppy. If you have a package that you would like to be available in all versions of Ubuntu Puppy (Intrepid, Jaunty, Koala, etc) then make an entry like this: [i]ubuntu||5|[/i] If you have a package that you would like to be available for all compatible-distro Woof builds, do this: [i]||5|[/i] Or this: [i]puppy||5|[/i] ...but, be sure that you have a package that is likely to work in all those different puppies! What this means is that users will see different packages in the 'puppy-5' repo, depending upon what compat-distro Puppy they are running.
new2dir
Username: BarryK
"ttuuxx, the idea of adding a few letters on the end of the package name is a good one. That will avoid, or at least minimise confusion if lots of different abiword packages are in the 'pet_packages-5' directory. Like: [i]abiword-1.2.3-uj.pet[/i] where the two letters 'uj' mean ubuntu-jaunty. ...I'll do that in the 'new2dir' script. However, I'm not really in favour of multiple different Abiwords being in the repo, of the same version number, all compiled in Ubuntu Jaunty. Just do one package. However, if you create a package for Ubuntu Jaunty, and compile another in Debian Lenny Puppy, and they are both going to be in the same 'pet_packages-5' directory on ibiblio, then yes, they will need different names, so the two-letter suffix would be useful: [i]abiword-1.2.3-uj.pet abiword-1.2.3-dl.pet[/i] The PPM will only display the relevant one, so the user will never be confused. On any other repo, you can physically store packages in different directories, like: debian-lenny/abiword-1.2.3.pet ubuntu-jaunty/abiword-1.2.3.pet ...it's all taken care of by the database entries.
Pfind 4.9 and Pfilesearch 1.13
Username: happypuppy
"New bugfixed versions: http://www.murga-linux.com/puppy/index.php?f=11
Pbackup 3.16
Username: happypuppy
"Zigbert is on fire :) This time with a new fixed version of Pbackup: http://www.murga-linux.com/puppy/viewtopic.php?t=10975
CUPS in Puppy 5
Username: nic2109
"Well; if by using Jaunty we get the same CUPS as it has then that's a winner for me. Puppy still hasn't "got" CUPS yet, especially for networked printers. Under Jaunty (that's Ubuntu, not Woof) to use my network attached HP All-in-one it's 3 clicks, all on the Yes or OK button 'cos it's found it correctly and selected the right driver. Puppy doesn't come close, even 4.2. Nick
Help Naming Packages
Username: ttuuxxx
"Hi Barry your new way of doing things is confusing me, I've sat on this compiled version of PNG/Apng for 2 days now, not knowing what to call it :) Here's the 3 names the package produced, what should I rename them to? libpng-1.2.35-i486 libpng_DEV-1.2.35-i486 libpng_DOC-1.2.35-i486 thanks, probably after getting the right names once will probably be all that I'll need. thanks for your time ttuuxxx
re: pkg names
Username: BarryK
"I have just reread you first post in this thread. Actually, you seemed to have missed the point totally. You are seeing complexity where there is none. You don't have to rename the packages, they are fine as they are. You somehow got the idea that you have to rename packages in some complicated way. That is not what my post says. The 'Packages-*' that my post refers to is the file that has the database entries. That has nothing to do with naming of PET packages. The naming you have shown above is fine.
An idea of enhancementes for PPM
Username: Michalis
"Barry, I have an idea on how to make the installation of packages a little bit easier and the appearance of the list with the packages more clear. That is in the list to show only the main package and to make after the installation of the main program PPM to ask the user if he wants to install the NLS, DEV, DOC packages of the program. Even better another enhancement would be that during the installation of the locales to have a code in PPM which reads what locales are included in the NLS package and pop up a dialog where the user could tick which locales wants installed. That could save a lot of space since sometimes the locales all together are bigger than the program itself. I think that both of them are easy to implement in the PPM and could give a help By the way using opera still can't post in your blog Michalis.
More software needs to be updated
Username: happypuppy
"Lots of packages are outdated. Here's the second part of the list: OSMO 0.2.4 -> 0.2.6 glipper 0.8.9 -> 1.0 GdMap 0.7.5 -> 0.8.1 ISOmaster 1.3.4 -> 1.3.5 mhWaveEdir 1.4.14 -> 1.4.15 Gnumeric 1.8.4 -> 1.9.6 HomeBank 4.0.2 -> 4.0.3 GWhere 0.2.3 -> 0.3.0 InkscapeLite 0.36pre0 -> 0.46 abiword 2.6.6 -> 2.6.8 mp (minimum profit) 3.3.17 -> 5.1.1
gcc-4.4.0
Username: coolpup
"Barry Before someone starts compiling in earnest it would be best if alpha7 contains the latest compiler. https://launchpad.net/ubuntu/+source/gcc-4.4/4.4.0-0ubuntu6 This would ensure that any packages we create now would be compatible for longer with later upup editions.
karmic upup
Username: coolpup
" gcc latest version always on this page https://launchpad.net/ubuntu/+source/gcc-4.4/ Oops, just realized that since jaunty upup makes use of gcc-4.3.3 we are forced to continue to use it. But what if ...we skip building jaunty upup and go straight to karmic upup and release it [u]before[/u] Karmic Ubuntu is released! Talk about Woof being [b]revolutionary[/b]!
Tags: woof