Add more complete glob optimization patch from upstream #382845 by Tomáš Chvátal.
authorMike Frysinger <vapier@gentoo.org>
Sat, 17 Sep 2011 23:29:34 +0000 (23:29 +0000)
committerMike Frysinger <vapier@gentoo.org>
Sat, 17 Sep 2011 23:29:34 +0000 (23:29 +0000)
Package-Manager: portage-2.2.0_alpha58/cvs/Linux x86_64

sys-devel/make/ChangeLog
sys-devel/make/Manifest
sys-devel/make/files/make-3.82-glob-speedup.patch [new file with mode: 0644]
sys-devel/make/make-3.82-r3.ebuild [new file with mode: 0644]

index aea5f283853c3972cf930596a4abb9a03651a4c6..a46339126adce3a226b5ab8cd6feb2f1a19e3ccf 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for sys-devel/make
 # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/make/ChangeLog,v 1.87 2011/09/17 07:25:05 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/make/ChangeLog,v 1.88 2011/09/17 23:29:34 vapier Exp $
+
+*make-3.82-r3 (17 Sep 2011)
+
+  17 Sep 2011; Mike Frysinger <vapier@gentoo.org> +make-3.82-r3.ebuild,
+  +files/make-3.82-glob-speedup.patch:
+  Add more complete glob optimization patch from upstream #382845 by Tomáš
+  Chvátal.
 
   17 Sep 2011; Mike Frysinger <vapier@gentoo.org> -make-3.82-r2.ebuild,
   -files/make-3.82-glob-speedup.patch:
index d85e00146994787445eb490c3f4ca9640dcba211..a69ebff56ea8495f5733895776c8cf09e7ab57fe 100644 (file)
@@ -10,6 +10,7 @@ AUX make-3.81-tests-lang.patch 1788 RMD160 c62f231b9bb5fef003e91f9a48b76832bd75b
 AUX make-3.81-tests-recursion.patch 514 RMD160 daa439bff160c9aa1efb447fcc39d1eb1319a2e5 SHA1 895a5bed190ca4b89055b450aca8f74730069239 SHA256 727a42dd884d296d421342f374b95ac05eeaef67c5f5efe755f1242944aab74b
 AUX make-3.82-MAKEFLAGS-reexec.patch 456 RMD160 c4136e807e84e319f86ad889b6f64b213f31be9c SHA1 79318dd977711aa49532c236b922bd2a0c0d4b25 SHA256 0180a94ab07bb9c1348ab30301afcbbe382a281c4c6f143de16e3bea3d96e00c
 AUX make-3.82-archives-many-objs.patch 2110 RMD160 aac9987dcc1d8c2b698b918c5e3900daaca65b4f SHA1 0920daaeb8f9fed7e3cb7f35c2dd6e41080c5848 SHA256 268db7c9e98f540ac9d5466bba17946f400463c1fd934d419e37fafaea7f0dd7
+AUX make-3.82-glob-speedup.patch 2833 RMD160 83c82320a8cd00b51f4b4a09a05970229353e36b SHA1 3fcc3243d0d2733b1b26c668ec33670109953a98 SHA256 525896b152bb314cbf3c465575394584305ded895429bf4ade919d69dedfec06
 AUX make-3.82-memory-corruption.patch 899 RMD160 7764c4aaca43542caa5de2ec96ea9cee7d72501d SHA1 02a5b1413357ab105a01d83f3afcd86f70b9de8b SHA256 8bb84e638f40514045f0c57b0ee9da24024679f624614e4d954ce7e8f6414d3b
 DIST make-3.80.tar.bz2 920645 RMD160 dcb61f3913d4d43caeef5b597ba2d4e1a03701aa SHA1 d2085842f08e57d58d3e1cd75a5f0342a60e5f45 SHA256 a99b39e7b04c333724f48c38fede709481cfb69fafe7e32ae4285b7fadf92f1b
 DIST make-3.81.tar.bz2 1151445 RMD160 79d418e1258ec0d6ba08b1431a4ade3fec54c2b2 SHA1 41ed86d941b9c8025aee45db56c0283169dcab3d SHA256 f3e69023771e23908f5d5592954d8271d3d6af09693cecfd29cee6fde8550dc8
@@ -19,13 +20,14 @@ EBUILD make-3.81-r1.ebuild 1203 RMD160 f6ece9102a0de446627b53876eabb85146b9552c
 EBUILD make-3.81-r2.ebuild 1300 RMD160 57e2697cf74c0a74c90b5e4c3850f786d76a8204 SHA1 3d50691fbcf24f835d749207099d8bbb8436f73b SHA256 6e525178d3916147f19dd3c8feadaceecbb073d8388c11bb30245fc9c3dec1cd
 EBUILD make-3.81.ebuild 1133 RMD160 ab9336bdd8cdba6eb488d269872087a01c877574 SHA1 ffe4242b8a6ecbdb75c8b34114bcdd5047df9296 SHA256 b529e9eba4442a0b1a2b36b6d9dc5f799ef311c867be46422ed91660323d0549
 EBUILD make-3.82-r1.ebuild 1246 RMD160 f334dddd031638823aa1ee05f1d98fd2ebbe2efd SHA1 fe7b76dc94c42fdb8ce6731372fb5be12a825125 SHA256 8de4d20d364a489169b3740a1d7f5ccf9366f9a5ae10cb030d0ab0a3aad9e79d
+EBUILD make-3.82-r3.ebuild 1306 RMD160 e440df7be9c2e4fe91a8052900501cdf0d5869ac SHA1 0054283775c7a0b97a844c1a645eed19fe134ece SHA256 2970b6408bb58a6b7ed2d3a45ab02e557c3cb987210a19ada8ff4f81e6b3b300
 EBUILD make-3.82.ebuild 1183 RMD160 79fa175c141d9cf62abed8fe8bef302b161a59fe SHA1 8aad4913216a6c47997990165635d3d09c9dc39a SHA256 1f2ca73bb4d269ad882400528a2eeb2e22fbcee64fb8a589b074009b5df6ea52
-MISC ChangeLog 11222 RMD160 fb78db3258d84fbb07c564904465542d08c5c5a0 SHA1 bffb0e05c0d041619a74d9562717301f1dedeaed SHA256 6b7ec67385c87d7c9db5a2f628e5b3ed2dfd56d931bb3dfa1a2639d4ed57f6fb
+MISC ChangeLog 11452 RMD160 a70f5bc99d30d0aed58828bf028d94a1c0381621 SHA1 d4dd1ebe818af9ed9a7d2b2240c41318c6fc3a3d SHA256 a368cd9d57a4e44bcc780559e83d743694d199c9e6e1dd505f7901b46d5098c5
 MISC metadata.xml 164 RMD160 f43cbec30b7074319087c9acffdb9354b17b0db3 SHA1 9c213f5803676c56439df3716be07d6692588856 SHA256 f5f2891f2a4791cd31350bb2bb572131ad7235cd0eeb124c9912c187ac10ce92
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.17 (GNU/Linux)
 
-iF4EAREIAAYFAk50S1gACgkQaC/OocHi7JZ1FQD9Fkb8IM/vHGJShIdVs6XqpEKw
-OpJA8OhObKEop3P9/zUA/R97w/Dc6sI9ktMPOnu1zXnLy6nlr0OuOO87ZMzEYR43
-=AQAO
+iF4EAREIAAYFAk51LWUACgkQaC/OocHi7JZIzgD/YB9chMFWULnv6NM8+yLVbIAI
+h1mfjrQe0G9o5lSTME4A/3ZsNovWai67YoHR9rOzXE7ZswU8Z0gTXOyMNEmm7DBQ
+=3nun
 -----END PGP SIGNATURE-----
diff --git a/sys-devel/make/files/make-3.82-glob-speedup.patch b/sys-devel/make/files/make-3.82-glob-speedup.patch
new file mode 100644 (file)
index 0000000..c826c2c
--- /dev/null
@@ -0,0 +1,104 @@
+change from upstream to speed up by skipping unused globs
+https://bugs.gentoo.org/382845
+
+http://cvs.savannah.gnu.org/viewvc/make/read.c?root=make&r1=1.198&r2=1.200
+
+Revision 1.200
+Sat May 7 14:36:12 2011 UTC (4 months, 1 week ago) by psmith 
+Branch: MAIN 
+Changes since 1.199: +1 -1 lines 
+Inverted the boolean test from what I wanted it to be.  Added a
+regression test to make sure this continues to work.
+
+Revision 1.199
+Mon May 2 00:18:06 2011 UTC (4 months, 2 weeks ago) by psmith 
+Branch: MAIN 
+Changes since 1.198: +35 -25 lines 
+Avoid invoking glob() unless the filename has potential globbing
+characters in it, for performance improvements.
+
+--- a/read.c   2011/04/29 15:27:39     1.198
++++ b/read.c   2011/05/07 14:36:12     1.200
+@@ -2901,6 +2901,7 @@
+       const char *name;
+       const char **nlist = 0;
+       char *tildep = 0;
++      int globme = 1;
+ #ifndef NO_ARCHIVES
+       char *arname = 0;
+       char *memname = 0;
+@@ -3109,32 +3110,40 @@
+       }
+ #endif /* !NO_ARCHIVES */
+-      switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl))
+-      {
+-      case GLOB_NOSPACE:
+-        fatal (NILF, _("virtual memory exhausted"));
+-
+-      case 0:
+-          /* Success.  */
+-          i = gl.gl_pathc;
+-          nlist = (const char **)gl.gl_pathv;
+-          break;
+-
+-        case GLOB_NOMATCH:
+-          /* If we want only existing items, skip this one.  */
+-          if (flags & PARSEFS_EXISTS)
+-            {
+-              i = 0;
+-              break;
+-            }
+-          /* FALLTHROUGH */
+-
+-      default:
+-          /* By default keep this name.  */
++      /* glob() is expensive: don't call it unless we need to.  */
++      if (!(flags & PARSEFS_EXISTS) && strpbrk (name, "?*[") == NULL)
++        {
++          globme = 0;
+           i = 1;
+           nlist = &name;
+-          break;
+-      }
++        }
++      else
++        switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl))
++          {
++          case GLOB_NOSPACE:
++            fatal (NILF, _("virtual memory exhausted"));
++
++          case 0:
++            /* Success.  */
++            i = gl.gl_pathc;
++            nlist = (const char **)gl.gl_pathv;
++            break;
++
++          case GLOB_NOMATCH:
++            /* If we want only existing items, skip this one.  */
++            if (flags & PARSEFS_EXISTS)
++              {
++                i = 0;
++                break;
++              }
++            /* FALLTHROUGH */
++
++          default:
++            /* By default keep this name.  */
++            i = 1;
++            nlist = &name;
++            break;
++          }
+       /* For each matched element, add it to the list.  */
+       while (i-- > 0)
+@@ -3174,7 +3183,8 @@
+ #endif /* !NO_ARCHIVES */
+           NEWELT (concat (2, prefix, nlist[i]));
+-      globfree (&gl);
++      if (globme)
++        globfree (&gl);
+ #ifndef NO_ARCHIVES
+       if (arname)
diff --git a/sys-devel/make/make-3.82-r3.ebuild b/sys-devel/make/make-3.82-r3.ebuild
new file mode 100644 (file)
index 0000000..b1de58f
--- /dev/null
@@ -0,0 +1,44 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/make/make-3.82-r3.ebuild,v 1.1 2011/09/17 23:29:34 vapier Exp $
+
+EAPI="2"
+
+inherit flag-o-matic eutils
+
+DESCRIPTION="Standard tool to compile source trees"
+HOMEPAGE="http://www.gnu.org/software/make/make.html"
+SRC_URI="mirror://gnu//make/${P}.tar.bz2"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~sparc-fbsd ~x86-fbsd"
+IUSE="nls static"
+
+DEPEND="nls? ( sys-devel/gettext )"
+RDEPEND="nls? ( virtual/libintl )"
+
+src_prepare() {
+       epatch "${FILESDIR}"/${P}-archives-many-objs.patch #334889
+       epatch "${FILESDIR}"/${P}-MAKEFLAGS-reexec.patch #31975
+       epatch "${FILESDIR}"/${P}-memory-corruption.patch #355907
+       epatch "${FILESDIR}"/${P}-glob-speedup.patch #382845
+}
+
+src_configure() {
+       use static && append-ldflags -static
+       econf \
+               --program-prefix=g \
+               $(use_enable nls)
+}
+
+src_install() {
+       emake DESTDIR="${D}" install || die "make install failed"
+       dodoc AUTHORS ChangeLog NEWS README*
+       if [[ ${USERLAND} == "GNU" ]] ; then
+               # we install everywhere as 'gmake' but on GNU systems,
+               # symlink 'make' to 'gmake'
+               dosym gmake /usr/bin/make
+               dosym gmake.1 /usr/share/man/man1/make.1
+       fi
+}