[Lazarus] An online package manager

Graeme Geldenhuys mailinglists at geldenhuys.co.uk
Mon Aug 10 08:30:03 CEST 2015

On 2015-08-09 23:30, luiz americo pereira camara wrote:
> I would download from the SCM (
> git/svn) directly, like bower does. The data necessary to register the
> package would be name, description, dependencies, the SCM type, and the
> repository URL.

I would suggest the same idea. Take a look at how the FreeBSD "ports"
system works. Much can be learned from that.

For those that don't know FreeBSD ports system, here is a short explanation:

* The ports information lives in a directory hierarchy. The first level
  defines the group in which each packages belongs: eg: devel, editors,
  games, audio etc. Then inside those you have a directory for each

* Each package directory contains a couple of files and one "files"
   - distinfo:  lists the source archive name, its size and SHA256
                checksum value
   - Makefile:  describes the version number of the package, category
                the package belongs too, where the port can be
                downloaded from (straight from SF.net, Github etc),
                package maintainer's email address, dependencies
                and compiler options (user configurable at build time).
   - pkg-descr: full multi-line description of the package
   - pkg-plist: full list of installed files (including path
   - files/     any small patches that get applied to the unpacked
                source archive before it gets compiled.
The whole "ports" directory hierarchy lives in a code repository. The
end-user (developer in this case) can update their local copy from time
to time. Package source code (release archives) get downloaded directly
from each projects original location on SF.net, Github, etc. Unpacking
the source archive for compilation happens in a temp directory inside
each package directory in the ports tree. Packages can also be marked as
Broken or Suspended for various reasons (eg: original source archive is
not available for download any more)

For Lazarus, the ports repository is the only "bandwidth" the Lazarus
server will use. A gui front-end can be written to update and search the
local ports tree.

A star rating system (optional) would probably need to be implemented at
the GUI front-end level, and could submit a rating via some web service.
Login could be made optional, but a simple registration will most likely
reduce "spam" and allow to keep track of who made ratings against what

  - Graeme -

fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal

More information about the Lazarus mailing list