Browse Source

initial package creation

Signed-off-by: Toshaan Bharvani <toshaan@powerel.org>
master
Toshaan Bharvani 1 month ago
commit
edc92cf4f4
  1. 80
      SOURCES/Judy-1.0.4-fix-Judy1-mans.patch
  2. 14
      SOURCES/Judy-1.0.4-test-shared.patch
  3. 120
      SOURCES/Judy-1.0.5-undefined-behavior.patch
  4. 23
      SOURCES/README.Fedora
  5. 225
      SPECS/Judy.spec

80
SOURCES/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

14
SOURCES/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

120
SOURCES/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]

23
SOURCES/README.Fedora

@ -0,0 +1,23 @@
Regarding the license, upstream has confirmed that the current license is LGPL
v2.1 or later. Also, the source code is really the final say on this, and it
says "GNU Lesser General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version." Either way, Fedora spec files don't distinguish between v2.1 and v2,
so this is specified as LGPLv2+ for the spec file.

"From dougbaskins@yahoo.com Thu Nov 27 21:45:54 2008
From: Doug Baskins <dougbaskins@yahoo.com>
To: Chuck Anderson <cra@WPI.EDU>
Cc: judy-devel@lists.sourceforge.net
Date: Thu, 27 Nov 2008 18:45:47 -0800 (PST)
Subject: Re: Judy license confusion - (LGPL v2.1 or later applies)
Reply-To: Doug Baskins <dougbaskins@yahoo.com>

Chuck:

I did not know a new version of LGPL existed. You are correct,
the COPYING file is correct (LGPL v2.1 or later applies). I will
change the README file to reflect that in the next release of Judy.
..."

- Chuck Anderson <cra@wpi.edu>

225
SPECS/Judy.spec

@ -0,0 +1,225 @@
Name: Judy
Version: 1.0.5
Release: 28%{?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
Patch0: Judy-1.0.4-test-shared.patch
Patch1: Judy-1.0.4-fix-Judy1-mans.patch
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}

# Make tests use shared instead of static libJudy
%patch0 -p1 -b .test-shared

# The J1* man pages were incorrectly being symlinked to Judy, rather than Judy1
# This patch corrects that; submitted upstream 2008/11/27
%patch1 -p1 -b .fix-Judy1-mans

# Fix some code with undefined behavior, commented on and removed by gcc
%patch2 -p1 -b .behavior

# README.Fedora
cp -p %{SOURCE1} .

%build
%set_build_flags
case "%{__cc}" in
gcc) COMPILER_SPECIFIC_FLAGS="-fno-strict-aliasing -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-copy-prop -fno-tree-vrp";;
*) COMPILER_SPECIFIC_FLAGS="-fno-strict-aliasing";;
esac
export CFLAGS="%{optflags} $COMPILER_SPECIFIC_FLAGS"
%configure --disable-static
make
#%{?_smp_mflags}
# fails to compile properly with parallel make:
# https://sourceforge.net/p/judy/bugs/22/

%install
%make_install
# 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

# multi-lib trick - remove the timestamp from the man page comment
sed -i -e 's|\(Auto-translated to nroff.*\.\./tool/jhton at\).*$|\1 <timestamp removed>|' %{buildroot}%{_mandir}/man3/J*.3*

%check
cd test
./Checkit
cd -

%files
%license COPYING README.Fedora
%doc AUTHORS ChangeLog README examples/
%{_libdir}/libJudy.so.1
%{_libdir}/libJudy.so.1.*

%files devel
%doc doc
%{_includedir}/Judy.h
%{_libdir}/libJudy.so
%{_mandir}/man3/J*.3*

%changelog
* Mon Aug 09 2021 Honza Horak <hhorak@redhat.com> - 1.0.5-28
- Remove timestamp to make the man pages non-conflicting
Resolves: #1915251

* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.0.5-27
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688

* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 1.0.5-26
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937

* Mon Jan 25 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-25
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-24
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild

* Wed Mar 25 2020 Paul Howarth <paul@city-fan.org> - 1.0.5-23
- Don't pass gcc-only compiler flags to other compilers, e.g. clang
(based on https://src.fedoraproject.org/rpms/Judy/pull-request/3 from
Timm Baeder)

* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-22
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild

* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-21
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild

* Mon Jul 22 2019 Paul Howarth <paul@city-fan.org> - 1.0.5-20
- Modernize spec
- Use %%make_install
- Use %%set_build_flags
- Drop conditionals for building with old distributions
- Re-format %%description to 80 columns
- Comment patch applications in %%prep section

* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-19
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild

* 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
Loading…
Cancel
Save