Re: env_helper

2009-03-16 Thread Boyd Waters
Very weird, I was working on path_helper yesterday!

I like the port env idea.

We need rpath and lpath -- to add to the beginning or end of a PATH


Here's what we use at work:

#!/bin/ksh
#
# Script to define path-related manipulation functions. Must be run with .
#
# Revision history: 1.0 MRM 940204 Functions from Chris Flatters' .profile
#  with permission
#   1.1 MRM 950817 Corrections  updates from Chris

# Define some useful functions for setting paths:

# PrependPath pathname dir makes dir the first element of
# the search path stored in pathname unless the first element
# of the path is the current working directory (.), in which case
# dir becomes the second element of the search path, or unless
# dir is already an element of the search path, in which case
# the search path is left unchanged.

function PrependPath
{
typeset path

eval path=\${${1}}

if   [ -n $path ]
then
 case $path in
 ${2}*);;# Directory already at beginning
 *:${2}*)  ;;# Directory already present
 .:*)   eval ${1}=.:${2}:${path##.:} ;;
 *) eval ${1}=${2}:$path ;;
 esac
else eval export ${1}=${2}
fi

}

# PostpendPath pathname dir makes dir the last element of
# the search path stored in pathname unless the last element
# of the path is the current working directory (.), in which case
# dir becomes the second-last element of the search path, or unless
# dir is already an element of the search path, in which case
# the search path is left unchanged.

function PostpendPath
{
typeset path

eval path=\${${1}}

if   [ -n $path ]
then
 case $path in
 ${2}*);;   # Directory already at beginning
 *:${2}*)  ;;   # Directory already present
 *:.)   eval ${1}=${path%%:.}:${2}:. ;;
 *) eval ${1}=$path:${2} ;;
 esac
else eval export ${1}=${2}
fi
}

# PrependXPath pathname dir prepends a set of pathnames
# for XtResolvePathname rooted at dir to the path stored
# in pathname.  This is intended for use with XFILESEARCHPATH
# etc.

function PrependXPath
{
typeset dir

eval dir=${2}

# Items suggested in X11R6 man page for XtResolvePathname
PrependPath ${1} ${dir}/%T/%N%S
PrependPath ${1} ${dir}/%l/%T/%N%S
PrependPath ${1} ${dir}/%L/%T/%N%S
PrependPath ${1} ${dir}/%T/%N%C%S
PrependPath ${1} ${dir}/%l/%T/%N%C%S
PrependPath ${1} ${dir}/%L/%T/%N%C%S
}

# PostpendXPath pathname dir appends a set of pathnames
# for XtResolvePathname rooted at dir to the path stored
# in pathname.  This is intended for use with XFILESEARCHPATH
# etc.

function PostpendXPath
{
typeset dir

eval dir=${2}

# Items suggested in X11R6 man page for XtResolvePathname
PostpendPath ${1} ${dir}/%L/%T/%N%C%S
PostpendPath ${1} ${dir}/%l/%T/%N%C%S
PostpendPath ${1} ${dir}/%T/%N%C%S
PostpendPath ${1} ${dir}/%L/%T/%N%S
PostpendPath ${1} ${dir}/%l/%T/%N%S
PostpendPath ${1} ${dir}/%T/%N%S
}

# PrependUIDPath pathname dir prepends a set of pathnames
# for the Mrm functions rooted at dir to the path stored
# in pathname.  If the path begins with %U%S then the new
# entries will be inserted following %U%S

function PrependUIDPath
{
typeset dir
typeset path
typeset pcu

eval dir=${2}
eval path=\${${1}}
pcu=%U  # To get around SCCS %U% keyword substitution

case $path in
%U?S*)eval ${1}=${path#\%U\%S}
  eval path=\${${1}}
  eval ${1}=${path#:}
  PrependPath ${1} ${dir}/%T/$pcu%S
  PrependPath ${1} ${dir}/%l/%T/$pcu%S
  PrependPath ${1} ${dir}/%L/%T/$pcu%S
  eval ${1}=$pcu%S:\${${1}}
  ;;
*)PrependPath ${1} ${dir}/%T/$pcu%S
  PrependPath ${1} ${dir}/%l/%T/$pcu%S
  PrependPath ${1} ${dir}/%L/%T/$pcu%S
  ;;
esac
}

# PostpendUIDPath pathname dir appends a set of pathnames
# for the Mrm functions rooted at dir to the path stored
# in pathname.

function PostpendUIDPath
{
typeset dir
typeset pcu

eval dir=${2}
pcu=%U  # Get around SCCS %U% substitution

PostpendPath ${1} ${dir}/%L/%T/$pcu%S
PostpendPath ${1} ${dir}/%l/%T/$pcu%S
PostpendPath ${1} ${dir}/%T/$pcu%S
}
___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev


Re: New XCode version

2008-07-13 Thread Boyd Waters

On Jul 13, 2008, at 10:23 AM, William Davis wrote:


FYI: a new version of XCode dated 11 July 08 is available on ADC.
Interestingly, it includes gcc 4.2 as well as 4.0.



Interesting; it's probably the iPhone SDK version that shipped last  
Friday.


Apple has been great about posting the GCC 4.0 patches associated with  
the various iPhone SDK releases, but they haven't released the patches  
for GCC 42 (last gcc-4.2 patch was 5553).


See
http://www.opensource.apple.com/darwinsource/tarballs/other/
http://r.research.att.com

I expect that they will eventually release newer patches, I could  
really use them!


I am *almost* done with a full quad-architecture (ppc,intel,32-bit,64- 
bit) GCC 4.2 that incorporates changes from ATT so that gfortran can  
be built as well as Objective-C. But it requires testing.


Here's what I've got so far... so close...



Portfile
Description: Binary data






make-universal-gcc.sh
Description: Binary data





I'd really like newer patches from Apple, because Apple builds before  
 have an inline-assembly bug (rdar://5705060)



- boyd

Boyd Waters
Scientific Programmer
National Radio Astronomy Observatory
https://wikio.nrao.edu/bin/view/Software/ObtainingCasaMacIntel

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev


Re: gcc 4.2 on 10.4 tiger: ld: unknown flag: -compatibility_version

2008-07-13 Thread Boyd Waters

On Jul 13, 2008, at 8:44 PM, Peter O'Gorman wrote:

 Easiest solutions are to update the libtool version in the package  
 that
 you are attempting to build (autoreconf -fi) or simple sed out ${wl}
 before the -compatibility_version etc in ltmain.sh

 This is what I committed when the gcc build problem was reported:

 http://git.savannah.gnu.org/gitweb/?p=libtool.git;a=commitdiff;h=eee885d7c58eea2b9fef52798ef2a1e7adb9be4f

 Using sed to remove the '${wl}' from verstring in ltmain.sh before
 configure should work fine:
 sed -e '/verstring=/s/\${wl}//g'  ltmain.sh  ltmain.fixed; mv
 ltmain.fixed ltmain.sh


Peter:

This explanation helps me a *lot*, thanks!

In our collection of ~50 MacPorts, I've had to twiddle libtool in a  
number of them. I just applied a patch to the libtool script that  
comes with the package, essentially what your sed example does.  Now I  
know why.


___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev


Re: [Pythonmac-SIG] 64-bit Python?

2008-07-01 Thread Boyd Waters

On Jul 1, 2008, at 8:29 AM, Blair Zajac wrote:

 How would a quad-architecture build work with other C/C++ modules?

I haven't tested other modules yet; I'm still building quad- 
architecture GCC 4.2.4 with ATT and Apple patches. Got that MacPorted  
yesterday after two weeks' work... now we have a gfortran that plays  
nice with Apple-patched GCC, I think.

 Having a 64-bit itself would be nice, but that would require all  
 Python modules also be compiled in 64-bit, such as Qt, Subversion,  
 anything that is a C/C++ package on its own that has a Python  
 module.  So I think the ramifications of going to a pure 64-bit  
 Python would be large and would have to be decided by MacPorts group  
 as a whole if we want to move in that direction.

Yes, I am hoping to build up our local NRAO/CASA package toolchain  
quad-architecture. I don't know how far I can get. I already have an  
Intel 32/64-bit Qt; that's TrollTech's Cocoa version (expected to  
release as Qt 4.5). I would need to build all of SciPy quad-arch to  
make this fly...

   - boyd


Boyd Waters
Scientific Programmer
National Radio Astronomy Observatory
Socorro, New Mexico

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev


Re: Variables, options, and keys -- oh my!

2008-06-20 Thread Boyd Waters

On Jun 19, 2008, at 10:42 PM, Ryan Schmidt wrote:

 But I manage a build system that uses 30-40 ports, and I've had to
 tweak individual portfiles rather than modify a global parameter.

 Why do you need to tweak the portfiles? What's the matter with them  
 the way they're written? If they're not working, please report bugs  
 so we can fix the portfiles so everyone can benefit from the fixes.


Well, you are absolutely right... there's no use in thinking about  
vague things.

I'll post some bugs.


___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev


Re: gcc-4.2 for Leopard

2008-06-19 Thread Boyd Waters

On Jun 18, 2008, at 10:11 PM, Ryan Schmidt wrote:

 If there's an option you want to have set globally, it should be in  
 the macports.conf


So if I set configure.compiler in macports.conf, it gets picked up  
unless overridden in the Port file?

Is that documented anywhere?

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev


Variables, options, and keys -- oh my!

2008-06-19 Thread Boyd Waters

On Jun 19, 2008, at 5:57 PM, Rainer Müller wrote:

 Boyd Waters wrote:
 So if I set configure.compiler in macports.conf, it gets picked up   
 unless overridden in the Port file?

 There is no option yet in macports.conf, that's what I am proposing  
 here.

 Currently you can only use it from command line, but this will  
 override configure.compiler from the Portfile.


Ok, thanks. I thought I was missing something really fundamental.

So here's a fundamental question: why can't we set port parameters in  
the macports.conf?

Then if the option is set in the Portfile, it overrides what is in the  
macports.conf. And if the user specifies it on the command line, that  
overrides anything in either of them. If the option isn't set  
anywhere, use a reasonable default value.


Most of my users never look inside that macports.conf file, they are  
not aware it exists. They would be safe.

But I manage a build system that uses 30-40 ports, and I've had to  
tweak individual portfiles rather than modify a global parameter.



   - boyd


Boyd Waters
Scientific Programmer
National Radio Astronomy Observatory
Socorro, New Mexico

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev


Re: gcc-4.2 for Leopard

2008-06-18 Thread Boyd Waters
Is there some way to specify a global set of command-line arguments?

You can set EXTRA_ENV in macports.conf, but not command-line args?

I've had to hack portconfigure.tcl in order to get what I want. Is  
there a better way?

On Jun 18, 2008, at 4:22 PM, Rainer Müller wrote:

 Ryan Schmidt wrote:
 I don't want to introduce yet more ways for two users to think they
 have installed the same thing but in fact they haven't. You're just
 creating more support headaches that way.

 It is already possible to choose another compiler from the command  
 line:

   $ sudo port install portname configure.compiler=gcc-4.2

 So adding a new option in macports.conf just moves this from the  
 command
 line to a config file.

 But I can understand your concerns that users might be blindly  
 choosing
 gcc-4.2 (that's the one with the greater number!) without knowledge.

 Rainer
 ___
 macports-dev mailing list
 macports-dev@lists.macosforge.org
 http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev


Re: Building python2.5 extensions under MacPorts

2008-05-28 Thread Boyd Waters
I have a Python 2.5.2 port that builds just fine with PyQt4.

I also have one that builds quad-architecture universal (with quad- 
architecture Qt4).

I've only tested it on Leopard, and I'm working on it now with another  
Mac, and testing Tiger as well.

I'll post the port to this list later tonight.


On May 12, 2008, at 7:14 PM, Blair Zajac wrote:

 Robert Liesenfeld wrote:
 Anyone built any Python extensions, specifically for Python 2.5?   
 I'm trying to make a py25-pyqt4 port, and i'm running into trouble  
 with building the extension .so's; they keep getting linked against  
 the system (i.e. Apple-provided) Python, not the MacPorts Python:

 The python 2.5 provided by MacPorts is not a framework Python, which  
 I'm pretty sure is required by PyQt.

 There's a thread that was started last week about getting Python 2.5  
 to a Framework build.

 Regards,
 Blair
 ___
 macports-dev mailing list
 macports-dev@lists.macosforge.org
 http://lists.macosforge.org/mailman/listinfo/macports-dev

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev


Versioned ports (again)

2008-03-06 Thread Boyd Waters
Rainer:

Thanks for the clarification!

Ah, I see... put things in the portgroup. Of course...


On Mar 6, 2008, at 11:48 AM, Rainer Müller wrote:

 I am pretty sure I don't understand all the issues, I still think  
 that  MacPorts versioning (-24, -25, -30) is profoundly flawed,  
 aside from  installation issues.

 Do you have any other solution? This is a bit unrelated to the  
 framework transition. Multiple versions of the same software also  
 apply to gcc and perl.


Well, I don't want to kick over old sand, but I came to MacPorts after  
years of Gentoo on Linux. It may not seem like a big deal to have some  
port dirs with versions, and some without, but I find it quite  
difficult to manage. I prefer having the Port *files* have versions.

The way MacPorts manages the *installation* of gcc versions is fine:
   * specify a trailing version specifier on the files or dirs that  
get installed: for example gcc-mp-4.2
   * provide a packagename-select utility to modify symlinks that  
point gcc - gcc-mp-4.2 (among other things)

Gentoo also had this notion of provides and slots. I haven't used  
Gentoo for a while, so I'm trying to think of an example relevant to  
MacPorts. Well, I know that the Python Tkinter port has a variant to  
use the system (OS X-provided) Tk, rather than a MacPorts one. Another  
example might be X11 packages, or GCC (Apple 4.x versus MacPorts 4.x)  
-- the idea that a port dep can be satisfied by something that  
occupies a certain slot or role, rather than a specific file at a  
specific location. So the GCC 4.x dependency could be satisfied by  
either Apple's or MacPort's package.  Not a great example, perhaps  
someone else can help explain.


But I don't think it's OK to add a specific version number to each  
port dir, without some notion of slot. Port groups are some of that,  
but upside-down, as every leaf-level port needs to be aware of a  
particular port group.  For example I've been hacking through the  
Python ports on Leopard, teaching them about the Apple-supplied Python  
2.5.1... I added a port group python-25-apple to make that happen,  
but now I need to touch *every* python port and change their port  
group membership.   In this case, it isn't a version: both the MacPort  
and the Apple Pythons are 2.5.1.  It's something else, and the leaf- 
level ports should NOT have to know about that.


I felt comfortable contributing Gentoo ports, because I could add  
versions or whatnot without changing the whole framework, and it was  
easy to drop something in. I have been quite nervous about perturbing  
the MacPorts, because if I have a different notion of Python  
deployment (for example) then that's too destructive, the framework  
has to be changed a bit to accommodate that, and certainly not  
everyone is going to want to do it my way. But I can't provide easy  
hooks to switch between my way and the default way.


I hope these comments help. I suspect they won't make any sense to  
people who haven't used Gentoo much.  It's not the same thing as the  
FreeBSD ports tree.

Thanks!



   - boyd

Boyd Waters
http://www.aoc.nrao.edu/~bwaters





___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev


Re: [MacPorts] #14342: python25 drops modules by default, but python25 doesn't

2008-02-19 Thread Boyd Waters

On Feb 18, 2008, at 9:53 AM, Markus Weissmann wrote:

 For people who don't need e.g. tk-support,
 building all those dependencies is unnecessary.


Yes!

And for those who are banging on a 64-bit Python, we can't touch  
anything that uses a Carbon API. Like Tk.

Has anyone successfully built a 64-bit version of Python 2.5.1 on  
Macintosh?



  - boyd

Boyd Waters
National Radio Astronomy Observaotory
New Mexico, USA, Earth

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev


Re: 'Lingon' for launchd items (on 10.5)

2007-12-20 Thread Boyd Waters

On Dec 19, 2007, at 2:19 PM, Markus Weissmann wrote:


Hi folks,

does anyone here use 'Lingon' [1] for managing his/her launchd items?
I'd be interested to hear if this tool rocks -- if so, we could give  
advice to users to more easily use our launchd items on 10.5. Anyone?




Markus:

I have used Lingon on 10.4.x, and it helped me get started.

So I think it may be a good tool to learn the launchd options,  
complementing the man pages.


It is a good tool.


I think that after a bit of experience with launchd configuration  
items, the tool is not necessary. I have not yet used Lingon with  
Leopard.



But if you have not played with Lingon, and you're interested in  
launchd items, I'd recommend that you give it a try!


http://lingon.sourceforge.net


  - boyd

Boyd Waters
http://www.aoc.nrao.edu/~bwaters

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/macports-dev


Re: Patchfile naming guidelines (was: Re: [31766] trunk/dports/audio/libao)

2007-12-11 Thread Boyd Waters


On Dec 11, 2007, at 7:58 PM, Ryan Schmidt wrote:

To the best of my knowledge, Mac OS X cannot assign a file to an  
application based on a filename prefix. It can only do so based on a  
filename extension.



And for viewing them: How do you highlight diff files?


Currently, TextWrangler uses no syntax highlighting on diff files.  
This is better than the incorrect syntax highlighting that could  
result by trying to highlight based on the rules of the diffed file.  
There is such a thing as a multiline comment, or a multiline string.  
It's possible a diff might include either the opening or closing  
quote or comment mark, but not the other one, which would result in  
chaotic highlighting. I have seen this before.


In the future, I might write my own syntax highlighting rules for  
diff files which could, for example, color lines beginning with a +  
or - in green and red, respectively, similar to what we see in the  
Trac repository browser or the commit mails.



FWIW...

TextMate does highlighting of diff files if the file is named '*.diff'  
or if you explicitly select diff as the mode.


It does not attempt to do _syntax_ highlighting _within_ a diff -- so  
no C or Perl or whatever syntax highlighting.




  - boyd


Boyd Waters
Scientific Programmer
National Radio Astronomy Observatory
Socorro, New Mexico

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/macports-dev


Re: [Pythonmac-SIG] Round 2 with Leopard+Python

2007-11-02 Thread Boyd Waters

FYI:

On Leopard, sudo filters environment variables, including PYTHONPATH.


I have not tested this with MacPorts yet; I've been running MacPorts  
as a normal user without sudo. Will this matter for MacPorts?



Running sudo -V as root shows sudo's settings; part of that is  
environment variables that it will not pass on or that it will  
check for dangerous content.



On Nov 2, 2007, at 2:59 PM, Boyd Waters wrote:


One work-around is to add this line to /etc/sudoers:

Defaultsenv_keep += PYTHONPATH



But that would involve editing a file in /etc as root.  
Straightforward enough, but likely to get overwritten and what if  
the user screws this up?



So Plan B -

what if you added something in a .pth file in /Library/Python/2.5/ 
site-packages that re-orders the sys.path?


Wouldn't that always work?




On Nov 2, 2007, at 2:49 PM, Boyd Waters wrote:



On Nov 2, 2007, at 10:16 AM, Brian Granger wrote:


 First, if you have set PYTHONPATH to point
sys.path at the site-packages in /Library, this setting will be lost
when you do:

sudo python setup.py install



Ouch, another good one...

This is almost certainly not a bug, but rather a security feature.


The administrator can add a line to the sudoers file:

Defaults  env_reset

that will reset the environment to only contain the variables  
HOME, LOGNAME,

PATH, SHELL, TERM, and USER, preventing this attack.








___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/macports-dev


Re: [28120] trunk/dports/lang/python24/Portfile

2007-08-21 Thread Boyd Waters


On Aug 21, 2007, at 9:18 AM, Anders F Björklund wrote:

This change will break ports that depends on python24 and then  
try to use the python binary, either directly with #!/opt/local/ 
bin/python or with e.g. #!/usr/bin/env python.


Maybe those ports using port:python24 should be patched to use  
python2.4 instead ?



Ouch, I agree...

Does python-select set a link to python24 or python25 ?

If so, then things should work...  ${prefix}/bin/python should be a  
link to the currently-selected Python.


And of course ${prefix}/Frameworks/Python/Current should be set to  
point to the correct version, as well.



- boyd

Boyd Waters
National Radio Astronomy Observatory
Socorro, New Mexico

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/macports-dev


Re: [28120] trunk/dports/lang/python24/Portfile

2007-08-21 Thread Boyd Waters


On Aug 21, 2007, at 11:01 AM, Blair Zajac wrote:

I think we we should have separate Framework directories for each  
Python version, otherwise if you have 2.4 and 2.5 installed on your  
system, then the Current symlink will point to 2.5, presumably, and  
you won't be able to do a framework build against 2.4.



I'm glad we're discussing this, but isn't the version issue exactly  
what the Framework structure is supposed to address?


I will look into Framework/Versions and see if I can't suggest  
something better, but in any event I vote against multiple, top-level  
Python framework directories (such as Libarary/Frameworks/Python24).


Regards,

 - boyd

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/macports-dev


Re: [27155] trunk/dports/python/py-psyco/Portfile

2007-07-22 Thread Boyd Waters


On Jul 22, 2007, at 2:10 PM, Rainer Müller wrote:


Do we
really need to take care of other Operating Systems than Mac OS X? I
mean, it's called MacPorts now and is targeted on users of Mac OS  
X. Who

is using it on another system?


We use MacPorts for a large software system that is Mac and Linux at  
the moment, and our group is considering using MacPorts for managing  
our Linux dependencies, as well.


So we'd perhaps port MacPorts to Linux.


And also see the wine port again, LDFLAGS like -framework won't work
on other platforms... As platform is set to darwin, I think this is
okay, but contrary to your statement above.


Exactly what the platform tag is designed to do: we'd add platform  
linux stanzas to our ports, that would (of course) not have settings  
like -framework in them. Many (if not most) open-source packages  
already target linux successfully, so in most cases autoconf would  
determine the correct settings. I think.


We haven't started a Linux port in earnest yet.

Of course, I'm one of those nut jobs who tried to bring gentoo  
portage to Mac OS X about five years ago. Oy.


 - boyd

Boyd Waters
Scientific Programmer (no, really, that's what they call me)
National Radio Astronomy Observatory
Socorro, New Mexico


___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/macports-dev


Re: deploying pre-build ports with macports

2007-07-05 Thread Boyd Waters


On Jul 5, 2007, at 12:04 PM, Barry Wark wrote:


I'm planning a deployment of scientific software to several users in
my lab. The software depends on several libraries that aren't
installed by default on OS X. We've settled on macports for providing
those dependencies (and have been very impressed with the whole
project- kudos!). I would like to deploy our whole package


I had the same sort of project for our astronomy software.


My first thing was to create a meta-package that installed binary  
versions of all of our MacPorts dependencies.

Then I ran another package that installed our (non-MacPorts) things.


Note that the binary packages that MacPorts creates have little to do  
with MacPorts itself: in particular, they do not create MacPorts  
receipts. If you expect to be able to install binary packages on top  
of a standard MacPorts distribution, and then subsequently build  
MacPorts that depend upon the binary-installed things, then you'll be  
in for a surprise: MacPorts will go ahead and install everything from  
source, ignoring the binary packages.


That is, the binaries and the source ports are two different things  
and don't talk to one another.


For us, this lead to lots of confusion for everyone: scientists, IT  
staff, developers.


So now, I just build everything I need to - MacPorts for the community- 
developed things! - and then I create a tarball installer that  
includes all of our stuff (which isn't in MacPorts yet), and the  
handful of dynamic libs and binary commands that are required by our  
system (mostly Python).



I don't know if my response helps you, but if you have other  
questions, I'd be happy to discuss them with you -- I'd like to know  
how other scientific applications are being deployed when using  
MacPorts.


Regards,

 - boyd

Boyd Waters
National Radio Astronomy Observatory
Socorro, New Mexico


___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/macports-dev


Re: deploying pre-build ports with macports

2007-07-05 Thread Boyd Waters


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


___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/macports-dev


symbolic link traversal

2007-07-02 Thread Boyd Waters

Howdy all!

When you get finished playing with your shiny new iPhone, I have a  
maybe-stupid question about symbolic links:


1) Does MacPorts traverse symlinks in the middle of a path/like/this  
(where like would be a symlink)


I found a likely bit of Tcl code, and attempted to set it up to  
recursively resolve symlinks correctly during path traversal, but was  
not able to fix the problem.


I've been holding off on committing my Python ports -- which permit  
multiple, parallel versions of MacPorts to co-exist on a system -- but  
I would rather get this path-traversal thing addressed and then clean  
up the work-arounds in my ports.




A related issue: the binary PKG files that are produced by MacPorts  
are very dangerous for a similar reason: they don't resolve  
intermediate symlinks, either. Instead, the installer with *wipe out*  
the intermediate symlink, replacing it with a real directory --  
which of course only contains the stuff in that particular package.


For example,  /etc -- which is a symlink to /private/etc -- is  
*deleted* and *replaced* by an /etc that only contains an X11 subdir  
by the emacs binary pkg installer. Ouch!


2) I will try to clean up pkg-creation, unless someone else wants to  
hit it.

  Who maintains the PKG binary-installer part of MacPorts?

Thanks!


- boyd

Boyd Waters
National Radio Astronomy Observatory
middle of nowhere
New Mexico
USA

___
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/macports-dev