summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Judy-1.0.4-fix-Judy1-mans.patch80
-rw-r--r--Judy-1.0.4-test-shared.patch14
-rw-r--r--Judy-1.0.5-undefined-behavior.patch120
-rw-r--r--judy1php.spec183
4 files changed, 397 insertions, 0 deletions
diff --git a/Judy-1.0.4-fix-Judy1-mans.patch b/Judy-1.0.4-fix-Judy1-mans.patch
new file mode 100644
index 0000000..06ab742
--- /dev/null
+++ b/Judy-1.0.4-fix-Judy1-mans.patch
@@ -0,0 +1,80 @@
+diff -up Judy-1.0.4/doc/Makefile.am.fix-Judy1-mans Judy-1.0.4/doc/Makefile.am
+--- Judy-1.0.4/doc/Makefile.am.fix-Judy1-mans 2006-01-18 16:56:43.000000000 -0500
++++ Judy-1.0.4/doc/Makefile.am 2008-11-27 14:08:53.000000000 -0500
+@@ -100,21 +100,21 @@ man/man3/Judy:
+
+ man/man3/Judy1:
+ ../tool/jhton ext/Judy1_3.htm | grep -v '^[ ]*$$' | sed -e 's/\.C//' > man/man3/Judy1
+- cd man/man3; ln -s Judy J1T
+- cd man/man3; ln -s Judy J1S
+- cd man/man3; ln -s Judy J1U
+- cd man/man3; ln -s Judy J1F
+- cd man/man3; ln -s Judy J1N
+- cd man/man3; ln -s Judy J1L
+- cd man/man3; ln -s Judy J1P
+- cd man/man3; ln -s Judy J1FE
+- cd man/man3; ln -s Judy J1NE
+- cd man/man3; ln -s Judy J1LE
+- cd man/man3; ln -s Judy J1PE
+- cd man/man3; ln -s Judy J1C
+- cd man/man3; ln -s Judy J1BC
+- cd man/man3; ln -s Judy J1FA
+- cd man/man3; ln -s Judy J1MU
++ cd man/man3; ln -s Judy1 J1T
++ cd man/man3; ln -s Judy1 J1S
++ cd man/man3; ln -s Judy1 J1U
++ cd man/man3; ln -s Judy1 J1F
++ cd man/man3; ln -s Judy1 J1N
++ cd man/man3; ln -s Judy1 J1L
++ cd man/man3; ln -s Judy1 J1P
++ cd man/man3; ln -s Judy1 J1FE
++ cd man/man3; ln -s Judy1 J1NE
++ cd man/man3; ln -s Judy1 J1LE
++ cd man/man3; ln -s Judy1 J1PE
++ cd man/man3; ln -s Judy1 J1C
++ cd man/man3; ln -s Judy1 J1BC
++ cd man/man3; ln -s Judy1 J1FA
++ cd man/man3; ln -s Judy1 J1MU
+
+ man/man3/Judy1_funcs:
+ ../tool/jhton ext/Judy1_funcs_3.htm | grep -v '^[ ]*$$' | sed -e 's/\.C//' > man/man3/Judy1_funcs
+diff -up Judy-1.0.4/doc/Makefile.in.fix-Judy1-mans Judy-1.0.4/doc/Makefile.in
+--- Judy-1.0.4/doc/Makefile.in.fix-Judy1-mans 2007-05-14 17:10:55.000000000 -0400
++++ Judy-1.0.4/doc/Makefile.in 2008-12-13 12:55:14.000000000 -0500
+@@ -471,21 +479,21 @@ man/man3/Judy:
+
+ man/man3/Judy1:
+ ../tool/jhton ext/Judy1_3.htm | grep -v '^[ ]*$$' | sed -e 's/\.C//' > man/man3/Judy1
+- cd man/man3; ln -s Judy J1T
+- cd man/man3; ln -s Judy J1S
+- cd man/man3; ln -s Judy J1U
+- cd man/man3; ln -s Judy J1F
+- cd man/man3; ln -s Judy J1N
+- cd man/man3; ln -s Judy J1L
+- cd man/man3; ln -s Judy J1P
+- cd man/man3; ln -s Judy J1FE
+- cd man/man3; ln -s Judy J1NE
+- cd man/man3; ln -s Judy J1LE
+- cd man/man3; ln -s Judy J1PE
+- cd man/man3; ln -s Judy J1C
+- cd man/man3; ln -s Judy J1BC
+- cd man/man3; ln -s Judy J1FA
+- cd man/man3; ln -s Judy J1MU
++ cd man/man3; ln -s Judy1 J1T
++ cd man/man3; ln -s Judy1 J1S
++ cd man/man3; ln -s Judy1 J1U
++ cd man/man3; ln -s Judy1 J1F
++ cd man/man3; ln -s Judy1 J1N
++ cd man/man3; ln -s Judy1 J1L
++ cd man/man3; ln -s Judy1 J1P
++ cd man/man3; ln -s Judy1 J1FE
++ cd man/man3; ln -s Judy1 J1NE
++ cd man/man3; ln -s Judy1 J1LE
++ cd man/man3; ln -s Judy1 J1PE
++ cd man/man3; ln -s Judy1 J1C
++ cd man/man3; ln -s Judy1 J1BC
++ cd man/man3; ln -s Judy1 J1FA
++ cd man/man3; ln -s Judy1 J1MU
+
+ man/man3/Judy1_funcs:
+ ../tool/jhton ext/Judy1_funcs_3.htm | grep -v '^[ ]*$$' | sed -e 's/\.C//' > man/man3/Judy1_funcs
diff --git a/Judy-1.0.4-test-shared.patch b/Judy-1.0.4-test-shared.patch
new file mode 100644
index 0000000..28d8a59
--- /dev/null
+++ b/Judy-1.0.4-test-shared.patch
@@ -0,0 +1,14 @@
+diff -up Judy-1.0.4/test/Checkit.test-shared Judy-1.0.4/test/Checkit
+--- Judy-1.0.4/test/Checkit.test-shared 2007-05-14 13:02:16.000000000 -0400
++++ Judy-1.0.4/test/Checkit 2008-11-27 12:56:28.000000000 -0500
+@@ -4,8 +4,9 @@ CC=${CC:-cc}
+ echo
+ echo "=== +++++++++ This test runs in 15 seconds on a PIII 750Mhz +++++++"
+
+-LIBJUDY=`find ../ -name libJudy.a`
++LIBJUDY=`find ../ -name libJudy.so`
+ JUDY_H=`find ../ -name Judy.h`
++export LD_LIBRARY_PATH=`dirname $LIBJUDY`
+
+ echo "$CC -O SLcompare.c -DHASHMETHOD -o SL_Hash"
+ $CC -O SLcompare.c -DHASHMETHOD -o SL_Hash
diff --git a/Judy-1.0.5-undefined-behavior.patch b/Judy-1.0.5-undefined-behavior.patch
new file mode 100644
index 0000000..e8741d0
--- /dev/null
+++ b/Judy-1.0.5-undefined-behavior.patch
@@ -0,0 +1,120 @@
+diff -crb judy-1.0.5-orig/src/JudyCommon/JudyByCount.c judy-1.0.5/src/JudyCommon/JudyByCount.c
+*** judy-1.0.5-orig/src/JudyCommon/JudyByCount.c 2005-02-15 15:06:07.000000000 -0600
+--- judy-1.0.5/src/JudyCommon/JudyByCount.c 2014-02-18 13:45:35.225145230 -0600
+***************
+*** 817,823 ****
+ // Shorthand for where to find start of Index bytes array:
+
+ #ifdef JUDY1
+! #define PJI (Pjp->jp_1Index)
+ #else
+ #define PJI (Pjp->jp_LIndex)
+ #endif
+--- 817,823 ----
+ // Shorthand for where to find start of Index bytes array:
+
+ #ifdef JUDY1
+! #define PJI (Pjp->jp_2Index)
+ #else
+ #define PJI (Pjp->jp_LIndex)
+ #endif
+diff -crb judy-1.0.5-orig/src/JudyCommon/JudyGet.c judy-1.0.5/src/JudyCommon/JudyGet.c
+*** judy-1.0.5-orig/src/JudyCommon/JudyGet.c 2005-02-15 15:06:07.000000000 -0600
+--- judy-1.0.5/src/JudyCommon/JudyGet.c 2014-02-18 13:49:50.840632644 -0600
+***************
+*** 630,636 ****
+ #ifdef JUDY1
+
+ #define CHECKINDEXNATIVE(LEAF_T, PJP, IDX, INDEX) \
+! if (((LEAF_T *)((PJP)->jp_1Index))[(IDX) - 1] == (LEAF_T)(INDEX)) \
+ return(1)
+
+ #define CHECKLEAFNONNAT(LFBTS, PJP, INDEX, IDX, COPY) \
+--- 630,636 ----
+ #ifdef JUDY1
+
+ #define CHECKINDEXNATIVE(LEAF_T, PJP, IDX, INDEX) \
+! if (((LEAF_T *)((PJP)->jp_2Index))[(IDX) - 1] == (LEAF_T)(INDEX)) \
+ return(1)
+
+ #define CHECKLEAFNONNAT(LFBTS, PJP, INDEX, IDX, COPY) \
+diff -crb judy-1.0.5-orig/src/JudyCommon/JudyIns.c judy-1.0.5/src/JudyCommon/JudyIns.c
+*** judy-1.0.5-orig/src/JudyCommon/JudyIns.c 2005-02-15 15:06:07.000000000 -0600
+--- judy-1.0.5/src/JudyCommon/JudyIns.c 2014-02-18 13:00:49.871850635 -0600
+***************
+*** 1503,1509 ****
+ JU_BITMAPSETL(Pjlb, Index);
+
+ for (offset = 0; offset < 15; ++offset)
+! JU_BITMAPSETL(Pjlb, Pjp->jp_1Index[offset]);
+
+ // Set jp_DcdPopO including the current pop0; incremented later:
+ DcdP0 = (Index & cJU_DCDMASK(1)) + 15 - 1;
+--- 1503,1510 ----
+ JU_BITMAPSETL(Pjlb, Index);
+
+ for (offset = 0; offset < 15; ++offset)
+! // JU_BITMAPSETL(Pjlb, Pjp->jp_1Index[offset]); // elements 8..15 are optimized out by gcc, so need to do the following
+! JU_BITMAPSETL(Pjlb, Pjp->jp_2Index[offset]);
+
+ // Set jp_DcdPopO including the current pop0; incremented later:
+ DcdP0 = (Index & cJU_DCDMASK(1)) + 15 - 1;
+diff -crb judy-1.0.5-orig/src/JudyCommon/JudyPrevNext.c judy-1.0.5/src/JudyCommon/JudyPrevNext.c
+*** judy-1.0.5-orig/src/JudyCommon/JudyPrevNext.c 2005-02-15 15:06:07.000000000 -0600
+--- judy-1.0.5/src/JudyCommon/JudyPrevNext.c 2014-02-18 13:45:40.972875737 -0600
+***************
+*** 907,913 ****
+ // Shorthand for where to find start of Index bytes array:
+
+ #ifdef JUDY1
+! #define PJI (Pjp->jp_1Index)
+ #else
+ #define PJI (Pjp->jp_LIndex)
+ #endif
+--- 907,913 ----
+ // Shorthand for where to find start of Index bytes array:
+
+ #ifdef JUDY1
+! #define PJI (Pjp->jp_2Index)
+ #else
+ #define PJI (Pjp->jp_LIndex)
+ #endif
+diff -crb judy-1.0.5-orig/src/JudyCommon/JudyPrivateBranch.h judy-1.0.5/src/JudyCommon/JudyPrivateBranch.h
+*** judy-1.0.5-orig/src/JudyCommon/JudyPrivateBranch.h 2005-02-15 15:06:07.000000000 -0600
+--- judy-1.0.5/src/JudyCommon/JudyPrivateBranch.h 2014-02-18 13:00:39.510533765 -0600
+***************
+*** 86,91 ****
+--- 86,98 ----
+ } jpi_t;
+
+
++ typedef struct _JUDY_POINTER_IMMED2 // JPI2.
++ {
++ uint8_t j_pi_2Index[2 * sizeof(Word_t) - 1]; // see above.
++ uint8_t j_pi_Type; // JP type, 1 of cJ*_JPIMMED*.
++ } jpi2_t;
++
++
+ // UNION OF JP TYPES:
+ //
+ // A branch is an array of cJU_BRANCHUNUMJPS (256) of this object, or an
+***************
+*** 97,102 ****
+--- 104,110 ----
+ {
+ jpo_t j_po; // other than immediate indexes.
+ jpi_t j_pi; // immediate indexes.
++ jpi2_t j_pi2; // immediate indexes using j_pi_LIndex as well
+ } jp_t, *Pjp_t;
+
+ // For coding convenience:
+***************
+*** 105,110 ****
+--- 113,119 ----
+
+ #define jp_1Index j_pi.j_pi_1Index // for storing Indexes in first word.
+ #define jp_LIndex j_pi.j_pi_LIndex // for storing Indexes in second word.
++ #define jp_2Index j_pi2.j_pi_2Index // for storing Indexes spanning both words.
+ #define jp_Addr j_po.j_po_Addr
+ //#define jp_DcdPop0 j_po.jpo_u.j_po_DcdPop0
+ #define jp_Type j_po.jpo_u.j_po_Bytes[sizeof(Word_t) - 1]
diff --git a/judy1php.spec b/judy1php.spec
new file mode 100644
index 0000000..f0e1b5a
--- /dev/null
+++ b/judy1php.spec
@@ -0,0 +1,183 @@
+Name: Judy
+Version: 1.0.5
+Release: 18%{?dist}
+Summary: General purpose dynamic array
+License: LGPLv2+
+URL: http://sourceforge.net/projects/judy/
+Source0: http://downloads.sf.net/judy/Judy-%{version}.tar.gz
+Source1: README.Fedora
+# Make tests use shared instead of static libJudy
+Patch0: Judy-1.0.4-test-shared.patch
+# The J1* man pages were incorrectly being symlinked to Judy, rather than Judy1
+# This patch corrects that; submitted upstream 2008/11/27
+Patch1: Judy-1.0.4-fix-Judy1-mans.patch
+# Fix some code with undefined behavior, commented on and removed by gcc
+Patch2: Judy-1.0.5-undefined-behavior.patch
+BuildRequires: coreutils
+BuildRequires: gawk
+BuildRequires: gcc >= 4.1
+BuildRequires: make
+BuildRequires: sed
+
+%description
+Judy is a C library that provides a state-of-the-art core technology
+that implements a sparse dynamic array. Judy arrays are declared
+simply with a null pointer. A Judy array consumes memory only when it
+is populated, yet can grow to take advantage of all available memory
+if desired. Judy's key benefits are scalability, high performance, and
+memory efficiency. A Judy array is extensible and can scale up to a
+very large number of elements, bounded only by machine memory. Since
+Judy is designed as an unbounded array, the size of a Judy array is
+not pre-allocated but grows and shrinks dynamically with the array
+population.
+
+%package devel
+Summary: Development libraries and headers for Judy
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+This package contains the development libraries and header files
+for developing applications that use the Judy library.
+
+%prep
+%setup -q -n judy-%{version}
+%patch0 -p1 -b .test-shared
+%patch1 -p1 -b .fix-Judy1-mans
+%patch2 -p1 -b .behavior
+cp -p %{SOURCE1} .
+
+%build
+export CFLAGS="%{optflags} -fno-strict-aliasing -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-copy-prop -fno-tree-vrp"
+%configure --disable-static
+make
+#%{?_smp_mflags}
+# fails to compile properly with parallel make:
+# http://sourceforge.net/tracker/index.php?func=detail&aid=2129019&group_id=55753&atid=478138
+
+%install
+make install DESTDIR=%{buildroot} INSTALL="install -p"
+# get rid of static libs and libtool archives
+rm -f %{buildroot}%{_libdir}/*.{a,la}
+# clean out zero length and generated files from doc tree
+rm -rf doc/man
+rm -f doc/Makefile* doc/ext/README_deliver
+[ -s doc/ext/COPYRIGHT ] || rm -f doc/ext/COPYRIGHT
+[ -s doc/ext/LICENSE ] || rm -f doc/ext/LICENSE
+
+%check
+cd test
+./Checkit
+cd -
+
+%if (0%{?rhel} && 0%{?rhel} <= 7) || (0%{?fedora} && 0%{?fedora} <= 27)
+# ldconfig scriptlets replaced by RPM File Triggers from Fedora 28
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+%endif
+
+%files
+%if 0%{?_licensedir:1}
+%license COPYING README.Fedora
+%else
+%doc COPYING README.Fedora
+%endif
+%doc AUTHORS ChangeLog README examples/
+%{_libdir}/libJudy.so.*
+
+%files devel
+%doc doc
+%{_includedir}/Judy.h
+%{_libdir}/libJudy.so
+%{_mandir}/man3/J*.3*
+
+%changelog
+* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-18
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Thu Feb 8 2018 Paul Howarth <paul@city-fan.org> - 1.0.5-17
+- ldconfig scriptlets replaced by RPM File Triggers from Fedora 28
+- Drop legacy BuildRoot: and Group: tags
+- Drop redundant explicit buildroot cleaning
+- Specify all explicitly-used build requirements
+- Use %%license where possible
+- Drop %%defattr, redundant since rpm 4.4
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-16
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-15
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-14
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-13
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-12
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Tue Jun 16 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.5-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Fri Aug 15 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.5-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Fri Jun 06 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.5-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Tue Feb 18 2014 Paul Howarth <paul@city-fan.org> - 1.0.5-8
+- Fix some code with undefined behavior
+- Build with -fno-strict-aliasing
+- Disable various compiler tree optimizations that trigger reproducible
+ crashes in gtkwave without generating compiler warnings (#1064090)
+
+* Fri Aug 02 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.5-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.5-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.5-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.5-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Fri Jan 6 2012 Paul Howarth <paul@city-fan.org> - 1.0.5-3
+- Rebuilt for gcc 4.7
+
+* Mon Feb 7 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.5-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Sun Jul 18 2010 Paul Howarth <paul@city-fan.org> - 1.0.5-1
+- Update to 1.0.5
+ - Added proper clean targets to enable multiple builds
+ - Added examples directory
+ - Correctly detects 32/64-bit build environment
+ - Allow explicit configure for 32/64-bit environment
+- Cosmetic spec file clean-ups
+
+* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.4-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Mon Feb 23 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.4-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Sat Dec 13 2008 Charles R. Anderson <cra@wpi.edu> - 1.0.4-4
+- For Judy1 man page fix, patch Makefile.{am,in} instead of
+ relying on autotools to regenerate the latter
+- Add README.Fedora with upstream's license explanation
+
+* Sun Nov 30 2008 Charles R. Anderson <cra@wpi.edu> - 1.0.4-3
+- Fix Judy1 man page symlinks
+- Use valid tag License: LGPLv2+ confirmed with upstream
+- Use version macro in Source0
+- Remove Makefiles from installed doc tree
+
+* Thu Nov 27 2008 Charles R. Anderson <cra@wpi.edu> - 1.0.4-2
+- Patch tests to run with shared library
+- Run tests in check section
+
+* Sun Oct 05 2008 Charles R. Anderson <cra@wpi.edu> - 1.0.4-1
+- Initial package for Fedora