site  contact  subhomenews

Automatic generation of dependencies for Slackware packages

June 25, 2019 — BarryK

I posted about progress with generating dependencies for the Slackware package database in Woof (my fork of Woof, sometimes named woofQ or woofE):

http://bkhome.org/news/201906/generating-dependencies-took-10-days.html

...that script created file 'DEPENDENCIES'.

I have now modified the '0setup' script in Woof, so that it maps the dependencies in file 'DEPENDENCIES' to 'DEPENDENCIES-slackware', which is names of all Slackware packages and their dependencies.

I have done this for the 14.2 version of Slackware. '0setup' downloads the 'PACKAGES.TXT' files from the Slackware package repositories, and converts to "Puppy package database format", which is these files:

Packages-slackware-14.2-official
Packages-slackware-14.2-patches
Packages-slackware-14.2-salix
Packages-slackware-14.2-salixextra
Packages-slackware-14.2-slacky

'0setup' uses the information in 'DEPENDENCIES-slackware' to insert the dependencies into these files (field-9 of each line).

Yes, I know that the Salix distro does have deps for each package, and '0setup' does read that. However, going forward, I don't want to have to be dependent on Salix. I may do a build that accesses only the official Slackware repositories, which do not have deps information.

Mapping the Ubuntu package names to Slackware names is in most cases no problem, as it is the same name, sometimes with some capitalization in the Slackware name -- for example Ubuntu has 'libx11', Slackware has 'libX11'.

Some name differences are more tricky, and I hope that I have caught most of them. For example, Ubuntu has 'libfile-basedir-perl' and Slackware has 'perl-File-BaseDir'.

Slackware64-current

Any distribution that is built from the slackware*-current packages, is, by definition, a rolling release. This includes some puppies that you can find in the Puppy Forum.

I was considering trying to provide package management for this scenario. It is easy to include version of each dependency in the above 'Packages-*' files, for example "+libX11&eq3.6.7", however, actually using this information is tricky.

I don't have sufficient motivation to follow this through. Instead, my intention is to build Easy from the Slackware version 15.0 binary packages, when it is released. In that scenario, it will not be required to have versions of dependencies in the database.

Alternatively, I could take a snapshot of all the slackware-current repos, and host them somewhere, give them some arbitrary version number such as 14.90. However, that is rather a lot to host. 

Woof-project

The latest Woof tarball is here (note, there is no online version management hosting for my Woof):

http://distro.ibiblio.org/easyos/project/woof/woof-project-20190625.tar.gz 

The modified scripts, as described above, are easy-code/0setup, easy-code/3buildeasydistro and easy-code/support/generate-deps-list. The generated easy-code/DEPENDENCIES and easy-distro/amd64/slackware/14.2/DEPENDENCIES-slackware files are included in the tarball. 

Tags: easy