It occurred to me that while I’ve got a package manifest for Solaris 11 builds of Darktable included in the git repo, I haven’t provided any details on how to actually turn what you install into $PREFIX into an installable package.
At the widest, least-focused view, you create a repo, spin up a pkg.depotd over that repo and then pkgsend to it. Simple!
So having built the bits, you’re given this message:
Darktable finished building, to actually install darktable you need to type: # cd build; sudo make install
Following those instructions (noting that on Solaris you need to use gmake), you’ll find yourself with built objects under /opt/darktable. Now you need to create the repo:
# /usr/bin/pkgrepo create /scratch/src/REPO # /usr/bin/pkgrepo add-publisher -s /scratch/src/REPO JMCP
This creates a repo rooted at /scratch/src/REPO, and gives it a publisher attribute of JMCP. You can some information about this repo by using the info subcommand to pkgrepo:
root@build:~# /usr/bin/pkgrepo info -s /scratch/src/REPO PUBLISHER PACKAGES STATUS UPDATED JMCP 9 online 2012-03-14T22:39:46.655791Z root@build:~# /usr/bin/pkgrepo info -s http://localhost:24601 PUBLISHER PACKAGES STATUS UPDATED JMCP 9 online 2012-03-14T22:39:46.655791Z # root@build:~# /usr/bin/pkgrecv -s http://localhost:24601 --newest pkg://JMCPemail@example.com,1.0.0:20120314T223944Z pkg://JMCPfirstname.lastname@example.org,1.0.0:20120305T134755Z pkg://JMCP/darktable/library/OpenEXR@1.7.0,1.0.0:20120130T161629Z pkg://JMCPemail@example.com,1.0.0:20120130T161616Z pkg://JMCPfirstname.lastname@example.org,1.0.0:20120130T161619Z pkg://JMCPemail@example.com,1.0.0:20120130T162615Z pkg://JMCPfirstname.lastname@example.org,1.0.0:20120130T161623Z pkg://JMCPemail@example.com,1.0.0:20120130T161625Z pkg://JMCPfirstname.lastname@example.org,1.0.0:20120130T161632Z
(See what I did there? :>)
Now you can spin up the pkg.depotd:
I told the daemon to use port 24601, with a repo that’s rooted at /scratch/src/REPO, to send the output to a file named /tmp/pkg.depotd.$$ (where $$ is the PID of this shell), and to background itself.
$ sudo pkgsend publish -s http://localhost:24601 --fmri-in-manifest -d / /scratch/src/photostuff/darktable/fromgit/1.0/packaging/Solaris_11/darktable-manifest.pkg5 Password: PUBLISHED pkg://JMCPemail@example.com,1.0.0:20120314T223944Z
This pkgsend command publishes the package with a manifest found in /scratch/src/photostuff/darktable/fromgit/1.0/packaging/Solaris_11/darktable-manifest.pkg5 (which includes the pkg fmri) to the depot operating at http://localhost:24601, and looks for the files specified in the manifest starting at the root of my filesystem. When successful, the result is as you see above: the fully-specified pkg fmri.
On my client system I can then (after enabling the JMCP publisher), utter
and I’ll get the latest version of the package installed.
The tedious part is turning the output from sudo gmake install > install.log 2>&1 into a manifest. However, once you’ve got a basic version figured out, you can make use of /usr/bin/pkgfmt and /usr/bin/pkglint to help you iron out the bugs.
Version 1.0 of Darktable is just around the corner, so I expect to be making a new version of the package available at the usual location within a day of the announcement.