git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] fixes for ActiveState Perl

From
Erik Faye-Lund <kusmabite@gmail.com>
Date
Feb 14, 2011, 12:49 UTC
Message-ID
<AANLkTimCXEbzZnR1k32u942hjB37nThN_RDBL5N7owHa@mail.gmail.com>
In-Reply-To
<4D5914C1.9050008@io.com>
On Mon, Feb 14, 2011 at 12:40 PM, Rafael Kitover <rkitover@io.com> wrote:
Show 49 quoted lines
> The make for perl is now retrieved from Perl's config. The make fragment in
> perl/Makefile.PL added in MY::postamble is disabled on Win32, as it relies on
> GNU make syntax, and Win32 users are not likely to have an ancient EU::MM
> version.
>
> A Windows path for PERL_PATH is now supported as well, e.g.:
> make PERL_PATH=C:\\Perl\\bin\\perl
> or from cmd.exe:
> make PERL_PATH=C:\Perl\bin\perl
> .
>
> t9700-perl-git.sh now passes on ActiveState Perl. Some tweaks were necessary in
> Git.pm: a more correct check for absolute directory, exit code check on closing
> the "pipe", and always closing the cat_blob bidirectional pipe (with errors
>  ignored) so as not to leave zombie processes. The waitpid call on closing the
> bidirectional pipe is now timed and the process is killed if necessary. Also
> added some binmode calls to t/t9700/test.pl to make the blob tests pass.
>
> Signed-off-by: Rafael Kitover <rkitover@cpan.org>
> ---
>  Makefile         |    8 ++++----
>  perl/Git.pm      |   40 +++++++++++++++++++++++++++++++---------
>  perl/Makefile    |   14 ++++++++++++--
>  perl/Makefile.PL |    7 ++++++-
>  t/t9700/test.pl  |   15 ++++++++++++++-
>  5 files changed, 67 insertions(+), 17 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index d3dcfb1..3465ab5 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -175,7 +175,7 @@ all::
>  # will work.
>  #
>  # Define NO_PERL_MAKEMAKER if you cannot use Makefiles generated by perl's
> -# MakeMaker (e.g. using ActiveState under Cygwin).
> +# MakeMaker.
>  #
>  # Define NO_PERL if you do not want Perl scripts or libraries at all.
>  #
> @@ -1059,7 +1059,7 @@ ifeq ($(uname_S),Windows)
>        NO_MKSTEMPS = YesPlease
>        SNPRINTF_RETURNS_BOGUS = YesPlease
>        NO_SVN_TESTS = YesPlease
> -       NO_PERL_MAKEMAKER = YesPlease
> +       # NO_PERL_MAKEMAKER = YesPlease
>        RUNTIME_PREFIX = YesPlease
>        NO_POSIX_ONLY_PROGRAMS = YesPlease
>        NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease

This would break my MSVC builds, since I'm using msysGit + MSVC to build (when using MSVC)... Not that that's a big deal, I can add "NO_PERL_MAKEMAKER = YesPlease" to my config.mak.

But I do suspect that most people who build with MSVC will have the same problem. Is it worth the hassle?

Show 9 quoted lines
> @@ -1112,7 +1112,7 @@ ifneq (,$(findstring MINGW,$(uname_S)))
>        NO_MKDTEMP = YesPlease
>        NO_MKSTEMPS = YesPlease
>        NO_SVN_TESTS = YesPlease
> -       NO_PERL_MAKEMAKER = YesPlease
> +       # NO_PERL_MAKEMAKER = YesPlease
>        RUNTIME_PREFIX = YesPlease
>        NO_POSIX_ONLY_PROGRAMS = YesPlease
>        NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease

This would break Git for Windows, as we don't have makemaker ExtUtils::MakeMaker in msysGit.

You could probably move the definition into the THIS_IS_MSYSGIT-check, though.
Show 31 quoted lines
> @@ -1652,7 +1652,7 @@ perl/perl.mak: GIT-CFLAGS perl/Makefile perl/Makefile.PL
>
>  $(patsubst %.perl,%,$(SCRIPT_PERL)): % : %.perl
>        $(QUIET_GEN)$(RM) $@ $@+ && \
> -       INSTLIBDIR=`MAKEFLAGS= $(MAKE) -C perl -s --no-print-directory instlibdir` && \
> +       INSTLIBDIR=`MAKEFLAGS= $(MAKE) -C perl -s --no-print-directory instlibdir | sed -e 's/\\\\/\\\\\\\\/g' -e "s/'//g"` && \
>        sed -e '1{' \
>            -e '        s|#!.*perl|#!$(PERL_PATH_SQ)|' \
>            -e '        h' \
> diff --git a/perl/Git.pm b/perl/Git.pm
> index 6cb0dd1..f7d99bd 100644
> --- a/perl/Git.pm
> +++ b/perl/Git.pm
> @@ -101,6 +101,7 @@ use Error qw(:try);
>  use Cwd qw(abs_path);
>  use IPC::Open2 qw(open2);
>  use Fcntl qw(SEEK_SET SEEK_CUR);
> +use File::Spec ();
>  }
>
>
> @@ -184,7 +185,8 @@ sub repository {
>                };
>
>                if ($dir) {
> -                       $dir =~ m#^/# or $dir = $opts{Directory} . '/' . $dir;
> +                        File::Spec->file_name_is_absolute($dir)
> +                               or $dir = $opts{Directory} . '/' . $dir;
>                        $opts{Repository} = abs_path($dir);
>
>                        # If --git-dir went ok, this shouldn't die either.

Just for reference, this should still work as before on Git for Windows, because we have a MSYS perl, so absolute paths starts with a forward slash. And if we change to a MinGW perl, this would probably be an improvement.

Show 25 quoted lines
> diff --git a/perl/Makefile b/perl/Makefile
> index a2ffb64..1fa99cd 100644
> --- a/perl/Makefile
> +++ b/perl/Makefile
> @@ -3,18 +3,28 @@
>  #
>  makfile:=perl.mak
>
> +# support PERL_PATH=C:\\Perl\\bin\\perl
> +PERL_PATH := $(subst \,\\,$(PERL_PATH))
> +
>  PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))
> +PERL_MAKE := MAKEFLAGS="" $(subst \,\\,$(shell $(subst \,\\,$(PERL_PATH)) -MConfig -le "print ((\%Config)->{make})"))
> +
> +ifneq (,$(findstring nmake,$(PERL_MAKE)))
> +       PERL_MAKE := $(PERL_MAKE) -nologo
> +endif
> +
>  prefix_SQ = $(subst ','\'',$(prefix))
>
>  ifndef V
>        QUIET = @
>  endif
>
> +
Why?
Previous: Rafael KitoverNext: Rafael Kitover
Message 2 of 9 in “fixes for ActiveState Perl”
  1. fixes for ActiveState PerlRafael Kitover, Feb 14, 2011
  2. Erik Faye-LundFeb 14, 2011
  3. Rafael KitoverFeb 14, 2011
  4. Erik Faye-LundFeb 14, 2011
  5. Rafael KitoverFeb 15, 2011
  6. Rafael KitoverFeb 17, 2011
  7. Sverre RabbelierFeb 20, 2011
  8. Rafael KitoverFeb 23, 2011
  9. Ævar Arnfjörð BjarmasonFeb 14, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.