#!/usr/bin/perl

# These are the patches to apply.
# Paths in patch files are relative to the root of the CPAN project
my (@patchesToApply) = (
	# Evolution's Exception.pm module uses a customized version of Error.pm
	# The modifications to Error.pm are to support the additional features.
	# The other main modification to Error.pm is to support a catch clause
	# that operates the same as the standard Error's otherwise clause
	# (this is used by Evolution's Exception).
	# Radar 3623559	has been written to back this patch out later.
	'./PatchFiles/Error.pm.diff',


    # We used to patch DBD-SQLite-1.07, but now that we've updated to
    # DBD-SQLite-1.13, this isn't necessary.
    # --- Unused: ---
    # DBD-SQLite-1.07 puts up a warning about being incompatible with SQLite2
    # and then prompts whether to continue - the default is no, which is what
    # happens with buildit
    # We could probably work around this in the Makefile but in order to keep
    # that as general as possible, this patch just changes the default to
    # yes
    # Also, work around unitialized variable warnings in dbdimp.c
    #'./PatchFiles/DBD-SQLite.diff',
    
    
    ## the self test trys to connect to a unreliable server. 
    ## so we skip those test
    './PatchFiles/23connect.t.diff',

    ## expat has to be set up for XML-Parser
    './PatchFiles/Makefile.PL.diff', 

    ## SOAP::Lite applied a patch for version .65 that
    ## does not work as advertised. The previous 
    ## code worked as expected. 
    #'./PatchFiles/Lite.pm.diff', 
    
    # <rdar://problem/5460193> SOAP::Lite isn't compressing
    './PatchFiles/SOAP-Transport-HTTP.pm.diff',

   ## JSON-Syck is replaced by YAML-Syck 0.82 which includes JSON-Syck
   ## 0.21.  It doesn't require this patch.
   ## --- Unused: ---
   ## JSON-Syck: in syck.h there is a test on the flag
   ## HAVE_STDLIB_H which is not set, however the lib does
   ## exist. Without this library the extension will not bulid
   ## so removed the existence test and always include the lib
   #   './PatchFiles/syck.h.diff',

   # 4546994 version perl module builds thin
   # A Module::Build bug prevents us from doing this in the Makefile
   # (see http://rt.cpan.org/Public/Bug/Display.html?id=19232)
   './PatchFiles/version.diff',                   

    # Create a default .inflectrc file for Lingua-EN-Inflect
    # indicating that the plural of hongo is hongos
    './PatchFiles/inflectrc.diff',

    # Fix an error attempting to locate the default .inflectrc
    # file in Lingua-EN-Inflect
    './PatchFiles/Inflect.pm.diff',

	# Added krb5_set_default_realm function to Authen::Krb5.xs
	'./PatchFiles/Authen-Krb5.diff',

    # DBIx-Class-Storage-DBI doesn't like to txn_commit when AutoCommit
    # is NOT on ... odd really. Simple patch to workaround this
    './PatchFiles/DBIx-Class-Storage-DBI.pm.diff',


    # Net-IP installs a couple of executable perl scripts into
    # /usr/bin which we don't need or want to ship...
    './PatchFiles/Net-IP-Makefile.PL.diff',
);


foreach my $patchFile (@patchesToApply) {
    &applyPatch($patchFile);
}
exit(0);

# Subroutine that applies the patches
sub applyPatch
{
    my ($patchFile) = @_;
    
    my ($status) = system("/usr/bin/patch -p0 < \"$patchFile\"");
    if ($status != 0) {
        print "Unable to apply $patchFile\n";
        exit($status >> 8);
    }
}
