deploying pre-build ports with macports
Boyd Waters
bwaters at nrao.edu
Thu Jul 5 12:31:46 PDT 2007
On Jul 5, 2007, at 1:11 PM, Barry Wark wrote:
> Boyd,
>
> It sounds like you've been down this road already, then :)
>
>> From your answer, it sounds like things won't work. I'm a bit
> confused, though. I thought that macports would keep receipts for the
> installed ports (e.g. hdf5) (in /opt/local/var/db/dports/?) and that
> those receipts would do the trick on the client machine as well. I
> planned to compile the dependencies (e.g. hdf5) using "port install
> XXX"--a source install--, then to make an installer that has it's root
> at /opt/local and with an install target of /opt/local. Wouldn't the
> client macports still have those receipts?
>
> Sorry for my confusion.
Wow, you don't need to be sorry -- I think it is confusing.
The binary package created with "port pkg" won't write that receipt to
${prefix}/var/db/dports/?
I'm talking about binary packages created with MacPorts -- via the
"port pkg" command -- they cause me no end of trouble. My opinion. I'd
like to find the time to fix the MacPorts package-creation stuff, but
my Tcl skills may not be adequate.
Anyway. I created a large collection of packages - one for each port -
via the "port pkg" command.
I gave these to my fellow developers, and many scientists, who also
had Macports installed.
They double-click the pkg file, which launches the Apple installer,
and installs the libraries, binaries, under /opt/local.
Great.
Then later they want to go build some MacPorts that need the packages
that they've already installed with the bianry installer.
Example: I gave them the fortran compiler as a binary package created
from MacPorts, and they want to install (from source) a package that
needs this compiler.
When they say "port build fortran-thing", MacPorts *ignores* the
binary-installed fortran compiler -- even though it came from a
MacPorts-created binary package -- and goes ahead and builds every
last little thing. Which may take hours. And may fail, depending upon
which MacPorts tree they have.
MacPorts packages that I have created have another nasty nasty bug, in
that they cannot handle symbolic links in directory paths. The example
I gave earlier on this list was MacPorts emacs -- which all of our
users assumed they needed (they don't know that OS X already has it).
The emacs package wants to add a file to /etc/X11. But /etc is a
symlink to /private/etc. Since the MacPorts installer doesn't handle
that, it *deletes* the symlink to /private/etc, creates a new, blank
directory at /etc, and then write its file, and claims that
installation completed successfully. Rendering the Macintosh unusable
in the process.
So I gave up on distributing binary packages created from MacPorts,
and I just rely upon MacPorts on my developer-build box, and roll a
tarball "by hand" for our scientific application. The tarball includes
its own distribution of Python, Qt, etc.
Since we roll out the application to people in different institutions,
different configurations, this is the most robust: we try to assume as
little as possible about what might already be set up on the end-
users' Macs.
Hope this helps! Some..
- boyd
More information about the macports-dev
mailing list