Seriously, where were you 4 days ago, when I need all this !!!

My biggest problem with El Capitan was with Apache.  Someone had installed the 
OS X Server components, and it was hi-jacking port 80 (in a kinda random way).
I ended up finding its config, removing port 80 from its list of ports.  
Finally, I installed Apache using brew and got it to work that way instead.

Nuked it from space, was the only way to be sure.

Mark

> On 12 Mar 2016, at 17:14, Patrick Middleton <[email protected]> wrote:
> 
> Hi folks,
> 
> mod_WebObjects?  Since people are still discussing how to build the Apache 
> adaptors on contemporary OSX, maybe I should add some more commentary.
> 
> If you need an Apache module that isn't supplied prebuilt for you, either as 
> part of Apache or as part of what your vendor supplies, always be ready to 
> build your own.  Never go looking to download what someone else has already 
> built.  It's too likely that the pre-built one won't work for you.
> 
> If you compile something in Java ... you get bytecode, and the class format 
> is defined.  Your bytecode can be expected to run in somebody else's JVM.  
> Also, if your code subclassed a class, and the class you subclassed is 
> somehow different, has more member fields, it will all still work just fine.
> 
> In C, by comparison ... Apache is implemented in C.  It is structures and 
> pointers and offsets.  How big are short, int and long?  How does the 
> compiler align these to word boundaries? The size of a structure can be very 
> different if compiled with different compilers or different compilation 
> options, especially compilation options to do with optimization, even if the 
> C source code declaring the structure is the same.  The compiler knows the 
> addresses of fields within a structure by computing offsets from the 
> structure's address; this can cause something in Objective-C 1 called 
> 'fragile base class syndrome' where adding an instance variable to a class 
> breks all subclasses of that class that have instance variables.... so, avoid 
> all this.  Build your own!
> 
> Apache provides a way round these problems.  Apache modules are supposed to 
> be built via a tool /usr/sbin/apxs ["APache eXtension System"] which is a 
> /usr/bin/perl script to compile and link your source code using the same 
> compiler options as was used to build Apache.
> 
> From memory, we can start by downloading some ProjectWonder source code, and 
> this includes source code for mod_WebObjects, and someone's already added a 
> makefile for building for Apache 2.4 (it's more or less the same as building 
> for Apache 2.2).  I tried this on OSX 10.11 ('El Capitan') mostly to see how 
> it would fail.
> 
> Firstly, the build fails because the Makefiles specify building the FastCGI 
> adaptor and by defautl we're missing some headers.  We can fix that in 
> make.config by setting
> ADAPTORS = CGI Apache2.4
> 
> Secondly, Apache 2.4 was built for El Capitan by cross-compilation on 
> Yosemite (10.10).  There are some references to this which we need to deal 
> with.  Reading /usr/sbin/apxs (on OSX) we find it has a variable 
> installbuilddir = /usr/share/httpd/build and some configuration variables in 
> a file config_vars.mk in that directory.
> 
> There are references to 
> /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.11.xctoolchain , 
> you might have that if you are on Yosemite and have the El Capitan SDK 
> installed.  There are references to 
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk
>  .  We fix these by making softlinks that refere to what we do have.  For me, 
> this was (as root):
> 
> cd /Applications/Xcode.app/Contents/Developer/Toolchains
> pwd
> ls -l
> ln -s XcodeDefault.xctoolchain OSX10.11.xctoolchain
> ls -l
> cd 
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
> pwd
> ls -l
> ln -s MacOSX10.11.sdk MacOSX10.11.Internal.sdk
> ls -l
> 
> I also encountered an error about not being able to find httpd.h.  There's 
> this in make.config:
> APACHEINCLUDE_DIR = /usr/include/apache2
> 
> which doesn't work on modern OSX because Apple appears to have decided not to 
> do /usr/include any more.  We need to use the platform SDKs.  I added some 
> stuff to make.config to work out which release of OSX the build was happening 
> on, what the SDK path should be, and using the SDK path when setting 
> APACHEINCLUDE_DIR.
> 
> Next up: there was a linker flag "-macosx_version_min 10.5" which we don't 
> want on OSX 10.8 and later.  I changed this to be a variable which is empty 
> unless on 10.4, 10.5, 10.6 or 10.7.
> 
> And that's enough to get the Adaptors project to compile and link.  I've 
> provided both a patch file of my changes, and a .tar.gz file of the files I 
> changed, which some may find easier to read.  Submitting a patch file to this 
> list is not the approved way of proposing changes to Project Wonder, but I'm 
> not expecting my changes to make it in anyway.
> 
> [There is another gotcha which no longer applies to building on OSX.  
> Nowadays, whatever Apple-supplied C or C++ compiler you ask for, you'll get a 
> compiler based on LLVM, which outputs compact omtimised code and ignores 
> optimisation flags.  The makefiles for the mod_WebObjects adaptors refer to 
> gcc and -O2.  If somebody built Apache using -Os (and Apple used to do that) 
> then there is a risk of structure size mismatch problems.]
> 
> -- Patrick
> 
> 
> <changed.tar.gz><patch.txt> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      ([email protected] 
> <mailto:[email protected]>)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/mark%40gowdy.co.uk 
> <https://lists.apple.com/mailman/options/webobjects-dev/mark%40gowdy.co.uk>
> 
> This email sent to [email protected] <mailto:[email protected]>
_________________
Mark Gowdy
Gowdy Associates Ltd
M: +44 7808 400 941
Skype: markgowdy




 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to