On Jul 9, 2009, at 1:07 AM, Bryan Blackburn wrote:

On Wed, Jul 08, 2009 at 09:21:40PM -0700, Scott Haneda said:
[...]

http://trac.macports.org/wiki/FAQ#WillMacPortslinktosystemlibrariesratherthanitsown

and the entry following that.

Thanks.  One thing that is not clear, is you say "make sure things
link to".  How does one do that, the docs above do not explain that.
When I make a port file, especially in the case of p5's, it is pretty
simple.  I have never seen any way to specify any paths for linking
to any dependencies libs.

By default though, port should be telling most software how to find the
right headers and libraries installed by MacPorts with various
configure-time settings. You should be able to see this if you run port in
debug, eg for p5-io-socket-ssl:

DEBUG: Environment: CFLAGS='-pipe -O2 -arch i386' CPPFLAGS='-I/opt/ local/include' CXXFLAGS='-pipe -O2 -arch i386' MACOSX_DEPLOYMENT_TARGET='10.5' CPP='/usr/bin/cpp-4.0' CXX='/usr/bin/ g++-4.0' F90FLAGS='-pipe -O2 -arch i386' LDFLAGS='-L/opt/local/lib - arch i386' FCFLAGS='-pipe -O2 -arch i386' OBJC='/usr/bin/gcc-4.0' INSTALL='/usr/bin/install -c' PERL_AUTOINSTALL='--skipdeps' OBJCFLAGS='-pipe -O2 -arch i386' FFLAGS='-pipe -O2 -arch i386' CC='/ usr/bin/gcc-4.0'

Note the -I/opt/local/include and -L/opt/local/lib in there.

Ok, I always run on debug mode, I will look out for those thing. When I am installing something like ASSP, it has 20 or so p5's to do, so there is a lot going by. I will do them one at a time and look at each.

I updated openssl, `sudo port updgrade openssl`
        $which openssl
        /opt/local/bin/openssl
        $/opt/local/bin/openssl version
        OpenSSL 0.9.8k 25 Mar 2009

Does that mean, that p5-net-ssleay will now use the updated version?
Maybe I do not get this, and openssl updates just the binary, and has
nothing to do with the libs.

Upgrading the port upgrades all bits for it, any binaries, libs, headers, etc. So if 'openssl version' says 0.9.8k, then the headers and libraries
should be that version as well.

port upgrade openssl took all of 5 seconds, if that. I would have expected it to take longer, if it had to rebuilt modules that depended on it. Or are these libs and headers just files that get pointed to, and not built into the binary. The binary just holds paths to the libs and headers?

So, If I were to take a binary that was made on an intel machine, and take it to another identical intel machine, but did not bring along the libs and headers, it would not work until I did so?

What I do know, is ASSP needs p5-net-ssleay, there is a suspicion
that the openssl version I am working against is too old, or too
buggy, so I need to try to solve that.

Hard to say without knowing how things aren't working; I know some software doesn't like when you compile using one version of headers then link against
a different version of libraries.

ASSP is a email proxy, it supports SSL and TLS mostly by using p5's to make it all happen. The setup is Internet -> ASSP -> MTA

If I made a SSL or TLS enabled connection directly to the MTA on port 25, SSL and/or TLS will work fine.

If I make a connection to the ASSP proxy, it works some of the time. I send a email in the command line:
`mail u...@remote-mta-machine`
This will always work

`mail u...@assp-proxy` this simply hits port 25, which is set to proxy to the far end MTA. It fails the SSL parts entirely. Some hosts that I send the `mail` command from work, others do not. I subscribed to a few mailing lists, some get through, some do not.

I can use openssl as a client, and connect to the remote far end MTA just fine, connecting to ASSP, and I get the connection, but that is as far as I get.

I have little knowledge of how this all works, so it is hard for me to even make test cases.

I do not know if I just need to update openssl via ports, or if I
need to remove all related perl modules, and install them again, or
if I need to remove all of ASSP and install that again as well to get
the new bits.

Worst case would call for rebuilding anything which links against OpenSSL, but also make sure everything which wants it declares a dependency on the port. Otherwise, you end up with one port without the dependency and then it may link against the system OpenSSL, then another port comes along with
that dependency and installs it then links against MacPorts' OpenSSL.
If you try using those two together, you get a mess.

Perhaps I am in this mess. I made many of these p5 port files, and most just amounted to finding an older p5, editing the name and version, dropping in a description, maintainer, and hash. Maybe there was more research into those port files I needed to do. I looked at cpan for any dependencies, and add those as needed, but that is as far as I usually took it, other than running it, and if there were test cases, giving them a quick try. If it loaded, I considered it ok.

Last night, I ran sudo port -df uninstall all and removed everything. I then ran sudo port -d install assp. It all went in, in one go, no errors, that was nice.

However, I am still not able to get ASSP to work in SSL mode.

I know what p5's ASSP installs, and can easily tell what dependencies I need to track down to look at. However, those depend on perl, which was installed, and curses was installed; a lot of other things too. Can I be reasonably confident, if any of those use openssl libs and headers, I need not run otool on them, and do any checking?

Can you suggest any automated why to run otool against all the p5's and anything else you can think of, so I can find out if this is the area of my problems.

This very well could be a bug in ASSP, and I am yet to find more than one person who has gotten this to work. So far, I am having a hard time finding the person who wrote the SSL sub routines in ASSP, to even get to the point where it can be debugged.

Toss in postfix, which also uses openssl as well and I am not sure
what and where I need to look to update things.  Add to that, ASSP is
on a different machine than postfix, and I have two places I get to
answer these questions.  Ugh :)

If they run on different servers, then precise OpenSSL versions should
technically not matter, as long as the SSL/TLS protocols are properly
followed. Of course if there's a bug in the protocol handling of a given
version, then you have a problem.

Agreed. I have been delivering email from several machines that can not deliver to ASSP, for years. Millions of messages sent from php scripts that end up on some server somewhere. I am confident that things are ok on those sending machines. I am pretty sure the openssl versions on the MUA sending side, and the destination receiving side are ok. So something is happening on the ASSP machine. (I am running the ASSP proxy on a separate machine)

So, by seeing "OpenSSL 0.9.8k 25 Mar 2009" in the version that I now
have installed, and seeing 0.9.8 returned by otool, does that mean
that when I ran port update openssl those files were updated?  Or,
does it mean that macports already happened to have the 0.98 versions
in place, and I just happened to get to use those?

Hard to say, if you used 'port install openssl' then you didn't have the port installed at all; if you used upgrade, then that's a bit odd as the openssl port has never been at 0.9.7l, it went from 0.9.7g to 0.9.8 four
years ago:

<http://trac.macports.org/changeset/12976>

I used upgrade. I suspect this was PATH related, I may have been logged in as a user that did not have the .profile set up so it was polling the Apple supplied version.

There are no patche for IO::Socket::SSL, so it is just being
installed, nothing changed in it to point to a specific openssl.

Further, p5-event none of the example in IO::Socket::SSL work for me.

I'm not sure what you mean here.

Me neither :) I had something on the clipboard I did not mean to
have.  I think I meant that, in the IO::Socket::SSL download, there
are a set of sample files, and running them, none of them work, and
all barf with errors.

I tried a couple of them, the client and server are able to talk to each
other, though that isn't too surprising since they are using the same
software; I also tried connecting to the server with the system openssl
command, and it was able to get the SSL cert just fine...

Can you show me how you tried them, I was not able to get them to work, but all I did was `perl filename` which probably was not a valid way to test. I really do not know perl, or SSL vocabulary well enough to properly test these out.

Thanks Bryan.
--
Scott * If you contact me off list replace talklists@ with scott@ *

_______________________________________________
macports-dev mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev

Reply via email to