From 2a86d5d9e2df09a6fead059ca47050de848474df Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Thu, 24 Mar 2016 23:00:20 -0400 Subject: [PATCH] git: Install perl files and update to 2.7.4 Installing perl files allows things using perl such as 'git add -p' to work. Installing the git perl files is a bit messy when cross-compiling git. We patch the install path to use a private folder for these instead of messing with the system perl. Note that git does not depend on perl, since that is a relatively big dependency which many won't be using anyway. --- packages/git/build.sh | 24 ++++++++++++++++++++---- packages/git/makefile.patch | 23 +++++++++++++++++++---- packages/git/perl-Makefile.PL.patch | 24 ++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 packages/git/perl-Makefile.PL.patch diff --git a/packages/git/build.sh b/packages/git/build.sh index c53b72672..50e3c343b 100755 --- a/packages/git/build.sh +++ b/packages/git/build.sh @@ -2,20 +2,30 @@ TERMUX_PKG_HOMEPAGE=http://git-scm.com/ TERMUX_PKG_DESCRIPTION="Distributed version control system designed to handle everything from small to very large projects with speed and efficiency" # less is required as a pager for git log, and the busybox less does not handle used escape sequences. TERMUX_PKG_DEPENDS="libcurl, less" -TERMUX_PKG_VERSION=2.7.2 +TERMUX_PKG_VERSION=2.7.4 TERMUX_PKG_SRCURL=https://www.kernel.org/pub/software/scm/git/git-${TERMUX_PKG_VERSION}.tar.xz ## This requires a working $TERMUX_PREFIX/bin/sh on the host building: TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--without-tcltk --with-curl --with-shell=$TERMUX_PREFIX/bin/sh ac_cv_header_libintl_h=no ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=yes" # expat is only used by git-http-push for remote lock management over DAV, so disable: # NO_INSTALL_HARDLINKS to use symlinks instead of hardlinks (which does not work on Android M): -TERMUX_PKG_EXTRA_MAKE_ARGS="NO_NSEC=1 NO_PERL=1 NO_GETTEXT=1 NO_EXPAT=1 NO_INSTALL_HARDLINKS=1 PERL_PATH=$TERMUX_PREFIX/bin/perl" +TERMUX_PKG_EXTRA_MAKE_ARGS="NO_NSEC=1 NO_GETTEXT=1 NO_EXPAT=1 NO_INSTALL_HARDLINKS=1 PERL_PATH=$TERMUX_PREFIX/bin/perl" TERMUX_PKG_BUILD_IN_SRC="yes" # Things to remove to save space: # bin/git-cvsserver - server emulating CVS # bin/git-shell - restricted login shell for Git-only SSH access -# lib/perl5 - perl scripts -TERMUX_PKG_RM_AFTER_INSTALL="bin/git-cvsserver bin/git-shell lib/perl5 Library" +TERMUX_PKG_RM_AFTER_INSTALL="bin/git-cvsserver bin/git-shell Library" + +termux_step_pre_configure () { + # Setup perl so that the build process can execute it: + rm -f $TERMUX_PREFIX/bin/perl + ln -s `which perl` $TERMUX_PREFIX/bin/perl + + # Force fresh perl files (otherwise files from earlier builds + # remains without bumped modification times, so are not picked + # up by the package): + rm -Rf $TERMUX_PREFIX/share/git-perl +} termux_step_post_make_install () { # Installing man requires asciidoc and xmlto, so git uses separate make targets for man pages @@ -24,6 +34,12 @@ termux_step_post_make_install () { mkdir -p $TERMUX_PREFIX/etc/bash_completion.d/ cp $TERMUX_PKG_SRCDIR/contrib/completion/git-completion.bash \ $TERMUX_PREFIX/etc/bash_completion.d/ + + # Remove the build machine perl setup in termux_step_pre_configure to avoid it being packaged: + rm $TERMUX_PREFIX/bin/perl + + # Remove clutter: + rm -Rf $TERMUX_PREFIX/lib/*-linux*/perl } termux_step_post_massage () { diff --git a/packages/git/makefile.patch b/packages/git/makefile.patch index 4f601ac1f..771348a5a 100644 --- a/packages/git/makefile.patch +++ b/packages/git/makefile.patch @@ -1,7 +1,13 @@ -diff -u -r ../git-2.5.0/Makefile ./Makefile ---- ../git-2.5.0/Makefile 2015-07-27 16:34:56.000000000 -0400 -+++ ./Makefile 2015-07-30 03:43:04.011455306 -0400 -@@ -1431,7 +1431,6 @@ +The librt functionality is built into libc on Android. + +The Termux git package installs git perl files to $PREFIX/share/git-perl +by patching perl/Makefile.PL, so setup that path when building perl +files in this Makefile. + +diff -u -r ../git-2.7.4/Makefile ./Makefile +--- ../git-2.7.4/Makefile 2016-03-17 16:47:59.000000000 -0400 ++++ ./Makefile 2016-03-24 22:46:20.335193973 -0400 +@@ -1455,7 +1455,6 @@ ifdef HAVE_CLOCK_GETTIME BASIC_CFLAGS += -DHAVE_CLOCK_GETTIME @@ -9,3 +15,12 @@ diff -u -r ../git-2.5.0/Makefile ./Makefile endif ifdef HAVE_CLOCK_MONOTONIC +@@ -1789,7 +1788,7 @@ + sed -e '1{' \ + -e ' s|#!.*perl|#!$(PERL_PATH_SQ)|' \ + -e ' h' \ +- -e ' s=.*=use lib (split(/$(pathsep)/, $$ENV{GITPERLLIB} || "'"$$INSTLIBDIR"'"));=' \ ++ -e ' s=.*=use lib (split(/$(pathsep)/, $$ENV{GITPERLLIB} || "'"@TERMUX_PREFIX@/share/git-perl"'"));=' \ + -e ' H' \ + -e ' x' \ + -e '}' \ diff --git a/packages/git/perl-Makefile.PL.patch b/packages/git/perl-Makefile.PL.patch new file mode 100644 index 000000000..07bc374ef --- /dev/null +++ b/packages/git/perl-Makefile.PL.patch @@ -0,0 +1,24 @@ +Install git perl files to a local git-specific folder and +be sure to bring the private Error.pm copy with it. + +diff -u -r ../git-2.7.4/perl/Makefile.PL ./perl/Makefile.PL +--- ../git-2.7.4/perl/Makefile.PL 2016-03-17 16:47:59.000000000 -0400 ++++ ./perl/Makefile.PL 2016-03-24 22:38:12.222059955 -0400 +@@ -38,15 +38,13 @@ + my $pm_path = $File::Find::name; + $pm_path =~ s{^\./}{}; + +- $pm{$pm_path} = '$(INST_LIBDIR)/'.$pm_path; ++ $pm{$pm_path} = '@TERMUX_PREFIX@/share/git-perl/'.$pm_path; + }, "Git", "Git.pm"; + + + # We come with our own bundled Error.pm. It's not in the set of default + # Perl modules so install it if it's not available on the system yet. +-if ( !eval { require Error } || $Error::VERSION < 0.15009) { +- $pm{'private-Error.pm'} = '$(INST_LIBDIR)/Error.pm'; +-} ++ $pm{'private-Error.pm'} = '@TERMUX_PREFIX@/share/git-perl/Error.pm'; + + # redirect stdout, otherwise the message "Writing perl.mak for Git" + # disrupts the output for the target 'instlibdir'