From 61dc0cf2d4e96ae0dacd500b097287e314a3c6f8 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Fri, 18 May 2012 17:50:37 +0200 Subject: [PATCH] - New upstream release - Updated no_pprof patch to match new release - Updated s390 patch to match new relase - Added make check - Added new script jemalloc.sh - Added a patch for atomic operations on epel5/ppc --- .gitignore | 1 + jemalloc-3.0.0-s390.patch | 11 + ...-3.0.0.atomic_h_ppc_32bit_operations.patch | 256 ++++++++++++++++++ jemalloc-3.0.0.no_pprof.patch | 11 + jemalloc.spec | 35 ++- sources | 2 +- 6 files changed, 310 insertions(+), 6 deletions(-) create mode 100644 jemalloc-3.0.0-s390.patch create mode 100644 jemalloc-3.0.0.atomic_h_ppc_32bit_operations.patch create mode 100644 jemalloc-3.0.0.no_pprof.patch diff --git a/.gitignore b/.gitignore index f15ea50..9f1112f 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ /jemalloc-2.2.3.tar.bz2 /jemalloc-2.2.4.tar.bz2 /jemalloc-2.2.5.tar.bz2 +/jemalloc-3.0.0.tar.bz2 diff --git a/jemalloc-3.0.0-s390.patch b/jemalloc-3.0.0-s390.patch new file mode 100644 index 0000000..95cc0b3 --- /dev/null +++ b/jemalloc-3.0.0-s390.patch @@ -0,0 +1,11 @@ +--- include/jemalloc/internal/jemalloc_internal.h.in.orig 2012-05-14 08:29:24.332065965 +0200 ++++ include/jemalloc/internal/jemalloc_internal.h.in 2012-05-14 08:29:39.483118492 +0200 +@@ -276,7 +276,7 @@ + # ifdef __powerpc__ + # define LG_QUANTUM 4 + # endif +-# ifdef __s390x__ ++# ifdef __s390__ + # define LG_QUANTUM 4 + # endif + # ifdef __SH4__ diff --git a/jemalloc-3.0.0.atomic_h_ppc_32bit_operations.patch b/jemalloc-3.0.0.atomic_h_ppc_32bit_operations.patch new file mode 100644 index 0000000..0ada943 --- /dev/null +++ b/jemalloc-3.0.0.atomic_h_ppc_32bit_operations.patch @@ -0,0 +1,256 @@ +diff -Naur ../jemalloc-3.0.0.orig/COPYING.epel5-ppc ./COPYING.epel5-ppc +--- ../jemalloc-3.0.0.orig/COPYING.epel5-ppc 1970-01-01 01:00:00.000000000 +0100 ++++ ./COPYING.epel5-ppc 2012-05-18 16:21:31.869392165 +0200 +@@ -0,0 +1,215 @@ ++When using this jemalloc package with EPEL5 on ppc, please note that a ++non-upstream patch has been added. This patch is covered by the Apache ++2.0 License, which states that this work is ++ ++ Licensed under the Apache License, Version 2.0 (the "License"); ++ you may not use this file except in compliance with the License. ++ ++For other platforms and operating systems, please ignore this file. ++ ++The patch adds missing 32bit atomic operations that is missing from ++RHEL5 and its derivates on ppc/ppc64. The code was fetched from the ++Apache Portable Runtime project, http://apr.apache.org/ ++ ++ ++ ++Apache License ++ ++Version 2.0, January 2004 ++ ++http://www.apache.org/licenses/ ++ ++TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION ++ ++1. Definitions. ++ ++"License" shall mean the terms and conditions for use, reproduction, ++and distribution as defined by Sections 1 through 9 of this document. ++ ++"Licensor" shall mean the copyright owner or entity authorized by the ++copyright owner that is granting the License. ++ ++"Legal Entity" shall mean the union of the acting entity and all other ++entities that control, are controlled by, or are under common control ++with that entity. For the purposes of this definition, "control" means ++(i) the power, direct or indirect, to cause the direction or ++management of such entity, whether by contract or otherwise, or (ii) ++ownership of fifty percent (50%) or more of the outstanding shares, or ++(iii) beneficial ownership of such entity. ++ ++"You" (or "Your") shall mean an individual or Legal Entity exercising ++permissions granted by this License. ++ ++"Source" form shall mean the preferred form for making modifications, ++including but not limited to software source code, documentation ++source, and configuration files. ++ ++"Object" form shall mean any form resulting from mechanical ++transformation or translation of a Source form, including but not ++limited to compiled object code, generated documentation, and ++conversions to other media types. ++ ++"Work" shall mean the work of authorship, whether in Source or Object ++form, made available under the License, as indicated by a copyright ++notice that is included in or attached to the work (an example is ++provided in the Appendix below). ++ ++"Derivative Works" shall mean any work, whether in Source or Object ++form, that is based on (or derived from) the Work and for which the ++editorial revisions, annotations, elaborations, or other modifications ++represent, as a whole, an original work of authorship. For the ++purposes of this License, Derivative Works shall not include works ++that remain separable from, or merely link (or bind by name) to the ++interfaces of, the Work and Derivative Works thereof. ++ ++"Contribution" shall mean any work of authorship, including the ++original version of the Work and any modifications or additions to ++that Work or Derivative Works thereof, that is intentionally submitted ++to Licensor for inclusion in the Work by the copyright owner or by an ++individual or Legal Entity authorized to submit on behalf of the ++copyright owner. For the purposes of this definition, "submitted" ++means any form of electronic, verbal, or written communication sent to ++the Licensor or its representatives, including but not limited to ++communication on electronic mailing lists, source code control ++systems, and issue tracking systems that are managed by, or on behalf ++of, the Licensor for the purpose of discussing and improving the Work, ++but excluding communication that is conspicuously marked or otherwise ++designated in writing by the copyright owner as "Not a Contribution." ++ ++"Contributor" shall mean Licensor and any individual or Legal Entity ++on behalf of whom a Contribution has been received by Licensor and ++subsequently incorporated within the Work. ++ ++2. Grant of Copyright License. Subject to the terms and conditions of ++this License, each Contributor hereby grants to You a perpetual, ++worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++copyright license to reproduce, prepare Derivative Works of, publicly ++display, publicly perform, sublicense, and distribute the Work and ++such Derivative Works in Source or Object form. ++ ++3. Grant of Patent License. Subject to the terms and conditions of ++this License, each Contributor hereby grants to You a perpetual, ++worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except ++as stated in this section) patent license to make, have made, use, ++offer to sell, sell, import, and otherwise transfer the Work, where ++such license applies only to those patent claims licensable by such ++Contributor that are necessarily infringed by their Contribution(s) ++alone or by combination of their Contribution(s) with the Work to ++which such Contribution(s) was submitted. If You institute patent ++litigation against any entity (including a cross-claim or counterclaim ++in a lawsuit) alleging that the Work or a Contribution incorporated ++within the Work constitutes direct or contributory patent ++infringement, then any patent licenses granted to You under this ++License for that Work shall terminate as of the date such litigation ++is filed. ++ ++4. Redistribution. You may reproduce and distribute copies of the Work ++or Derivative Works thereof in any medium, with or without ++modifications, and in Source or Object form, provided that You meet ++the following conditions: ++ ++ You must give any other recipients of the Work or Derivative Works ++ a copy of this License; and ++ ++ You must cause any modified files to carry prominent notices ++ stating that You changed the files; and ++ ++ You must retain, in the Source form of any Derivative Works that ++ You distribute, all copyright, patent, trademark, and attribution ++ notices from the Source form of the Work, excluding those notices ++ that do not pertain to any part of the Derivative Works; and ++ ++ If the Work includes a "NOTICE" text file as part of its ++ distribution, then any Derivative Works that You distribute must ++ include a readable copy of the attribution notices contained ++ within such NOTICE file, excluding those notices that do not ++ pertain to any part of the Derivative Works, in at least one of ++ the following places: within a NOTICE text file distributed as ++ part of the Derivative Works; within the Source form or ++ documentation, if provided along with the Derivative Works; or, ++ within a display generated by the Derivative Works, if and ++ wherever such third-party notices normally appear. The contents of ++ the NOTICE file are for informational purposes only and do not ++ modify the License. You may add Your own attribution notices ++ within Derivative Works that You distribute, alongside or as an ++ addendum to the NOTICE text from the Work, provided that such ++ additional attribution notices cannot be construed as modifying ++ the License. You may add Your own copyright statement to Your ++ modifications and may provide additional or different license ++ terms and conditions for use, reproduction, or distribution of ++ Your modifications, or for any such Derivative Works as a whole, ++ provided Your use, reproduction, and distribution of the Work ++ otherwise complies with the conditions stated in this License. ++ ++5. Submission of Contributions. Unless You explicitly state otherwise, ++any Contribution intentionally submitted for inclusion in the Work by ++You to the Licensor shall be under the terms and conditions of this ++License, without any additional terms or conditions. Notwithstanding ++the above, nothing herein shall supersede or modify the terms of any ++separate license agreement you may have executed with Licensor ++regarding such Contributions. ++ ++6. Trademarks. This License does not grant permission to use the trade ++names, trademarks, service marks, or product names of the Licensor, ++except as required for reasonable and customary use in describing the ++origin of the Work and reproducing the content of the NOTICE file. ++ ++7. Disclaimer of Warranty. Unless required by applicable law or agreed ++to in writing, Licensor provides the Work (and each Contributor ++provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR ++CONDITIONS OF ANY KIND, either express or implied, including, without ++limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, ++MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely ++responsible for determining the appropriateness of using or ++redistributing the Work and assume any risks associated with Your ++exercise of permissions under this License. ++ ++8. Limitation of Liability. In no event and under no legal theory, ++whether in tort (including negligence), contract, or otherwise, unless ++required by applicable law (such as deliberate and grossly negligent ++acts) or agreed to in writing, shall any Contributor be liable to You ++for damages, including any direct, indirect, special, incidental, or ++consequential damages of any character arising as a result of this ++License or out of the use or inability to use the Work (including but ++not limited to damages for loss of goodwill, work stoppage, computer ++failure or malfunction, or any and all other commercial damages or ++losses), even if such Contributor has been advised of the possibility ++of such damages. ++ ++9. Accepting Warranty or Additional Liability. While redistributing ++the Work or Derivative Works thereof, You may choose to offer, and ++charge a fee for, acceptance of support, warranty, indemnity, or other ++liability obligations and/or rights consistent with this ++License. However, in accepting such obligations, You may act only on ++Your own behalf and on Your sole responsibility, not on behalf of any ++other Contributor, and only if You agree to indemnify, defend, and ++hold each Contributor harmless for any liability incurred by, or ++claims asserted against, such Contributor by reason of your accepting ++any such warranty or additional liability. ++ ++END OF TERMS AND CONDITIONS ++APPENDIX: How to apply the Apache License to your work ++ ++To apply the Apache License to your work, attach the following ++boilerplate notice, with the fields enclosed by brackets "[]" replaced ++with your own identifying information. (Don't include the brackets!) ++The text should be enclosed in the appropriate comment syntax for the ++file format. We also recommend that a file or class name and ++description of purpose be included on the same "printed page" as the ++copyright notice for easier identification within third-party ++archives. ++ ++ Copyright [yyyy] [name of copyright owner] ++ ++ Licensed under the Apache License, Version 2.0 (the "License"); ++ you may not use this file except in compliance with the License. ++ You may obtain a copy of the License at ++ ++ http://www.apache.org/licenses/LICENSE-2.0 ++ ++ Unless required by applicable law or agreed to in writing, software ++ distributed under the License is distributed on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ See the License for the specific language governing permissions and ++ limitations under the License. ++ +diff -Naur ../jemalloc-3.0.0.orig/include/jemalloc/internal/atomic.h ./include/jemalloc/internal/atomic.h +--- ../jemalloc-3.0.0.orig/include/jemalloc/internal/atomic.h 2012-05-12 02:50:38.000000000 +0200 ++++ ./include/jemalloc/internal/atomic.h 2012-05-18 15:55:34.457212405 +0200 +@@ -242,6 +242,33 @@ + + return (__sync_sub_and_fetch(p, x)); + } ++#elif (defined(__ppc__) || defined(__PPC__)) ++// Code fetched from the boost library ++// ++JEMALLOC_INLINE uint32_t ++atomic_add_uint32(uint32_t *p, uint32_t x) ++{ ++ uint32_t prev, temp; ++ ++ asm volatile ("0:\n\t" // retry local label ++ "lwarx %0,0,%2\n\t" // load prev and reserve ++ "add %1,%0,%3\n\t" // temp = prev + x ++ "stwcx. %1,0,%2\n\t" // conditionally store ++ "bne- 0b" // start over if we lost ++ // the reservation ++ //XXX find a cleaner way to define the temp ++ //it's not an output ++ : "=&r" (prev), "=&r" (temp) // output, temp ++ : "b" (p), "r" (x) // inputs ++ : "memory", "cc"); // clobbered ++ return temp; ++} ++ ++JEMALLOC_INLINE uint32_t ++atomic_sub_uint32(uint32_t *p, uint32_t x) ++{ ++ return atomic_add_uint32(p, -x); ++} + #else + # error "Missing implementation for 32-bit atomic operations" + #endif diff --git a/jemalloc-3.0.0.no_pprof.patch b/jemalloc-3.0.0.no_pprof.patch new file mode 100644 index 0000000..069d83f --- /dev/null +++ b/jemalloc-3.0.0.no_pprof.patch @@ -0,0 +1,11 @@ +--- Makefile.in.orig 2012-05-14 08:25:41.859295446 +0200 ++++ Makefile.in 2012-05-14 08:25:58.577353251 +0200 +@@ -69,7 +69,7 @@ + LIBJEMALLOC := $(LIBPREFIX)jemalloc$(install_suffix) + + # Lists of files. +-BINS := $(srcroot)bin/pprof $(objroot)bin/jemalloc.sh ++BINS := $(objroot)bin/jemalloc.sh + CHDRS := $(objroot)include/jemalloc/jemalloc$(install_suffix).h \ + $(objroot)include/jemalloc/jemalloc_defs$(install_suffix).h + CSRCS := $(srcroot)src/jemalloc.c $(srcroot)src/arena.c $(srcroot)src/atomic.c \ diff --git a/jemalloc.spec b/jemalloc.spec index dd9d5e7..6a83788 100644 --- a/jemalloc.spec +++ b/jemalloc.spec @@ -1,7 +1,7 @@ Name: jemalloc -Version: 2.2.5 +Version: 3.0.0 -Release: 5%{?dist} +Release: 1%{?dist} Summary: General-purpose scalable concurrent malloc implementation Group: System Environment/Libraries @@ -11,11 +11,13 @@ Source0: http://www.canonware.com/download/jemalloc/%{name}-%{version}.ta BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # Remove pprof, as it already exists in google-perftools -Patch0: jemalloc-2.2.2.no_pprof.patch +Patch0: jemalloc-3.0.0.no_pprof.patch # check for __s390__ as it's defined on both s390 and s390x -Patch1: jemalloc-2.0.1-s390.patch +Patch1: jemalloc-3.0.0-s390.patch # ARMv5tel has no atomic operations Patch2: jemalloc-armv5-force-atomic.patch +# RHEL5/POWER has no atomic operations +Patch3: jemalloc-3.0.0.atomic_h_ppc_32bit_operations.patch BuildRequires: /usr/bin/xsltproc @@ -35,14 +37,23 @@ developing applications that use %{name}. %prep %setup -q %patch0 -%patch1 -p1 -b .s390 +%patch1 -p0 -b .s390 %patch2 -p1 -b .armv5tel +%ifarch ppc ppc64 +%if 0%{?rhel} == 5 +%patch3 -b .ppc +%endif +%endif %build %configure make %{?_smp_mflags} +%check +make check + + %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} @@ -60,8 +71,14 @@ rm -rf %{buildroot} %files %defattr(-,root,root,-) %{_libdir}/libjemalloc.so.* +%{_bindir}/jemalloc.sh %doc COPYING README VERSION %doc doc/jemalloc.html +%ifarch ppc ppc64 +%if 0%{?rhel} == 5 +%doc COPYING.epel5-ppc +%endif +%endif %files devel %defattr(-,root,root,-) @@ -74,6 +91,14 @@ rm -rf %{buildroot} %postun -p /sbin/ldconfig %changelog +* Mon May 14 2012 Ingvar Hagelund - 3.0.0-1 +- New upstream release +- Updated no_pprof patch to match new release +- Updated s390 patch to match new relase +- Added make check +- Added new script jemalloc.sh +- Added a patch for atomic operations on epel5/ppc + * Sat Apr 21 2012 Peter Robinson - 2.2.5-5 - Improve ARM patch diff --git a/sources b/sources index 0bb3997..47a1415 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -a5c4332705ed0e3fff1ac73cfe975640 jemalloc-2.2.5.tar.bz2 +f487fdf847c9834b22c2b7832cadc56f jemalloc-3.0.0.tar.bz2