Compare commits

..

No commits in common. "c8-stream-10.5" and "c10s" have entirely different histories.

11 changed files with 238 additions and 161 deletions

View File

@ -1 +0,0 @@
3540f003509acac3b1260424380ddf97914f7745 SOURCES/Judy-1.0.5.tar.gz

3
.gitignore vendored
View File

@ -1 +1,2 @@
SOURCES/Judy-1.0.5.tar.gz
/Judy-1.0.4.tar.gz
/Judy-1.0.5.tar.gz

View File

@ -0,0 +1,82 @@
Original author Doug Baskins: http://sourceforge.net/p/judy/patches/5/#ba53
Andrey Gursky: removed trailing whitespaces and the doubled code line
---
src/JudyCommon/JudyPrivateBranch.h | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
Index: b/src/JudyCommon/JudyPrivateBranch.h
===================================================================
--- a/src/JudyCommon/JudyPrivateBranch.h
+++ b/src/JudyCommon/JudyPrivateBranch.h
@@ -19,7 +19,7 @@
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// _________________
-// @(#) $Revision: 4.57 $ $Source: /judy/src/JudyCommon/JudyPrivateBranch.h $
+// @(#) $Revision: 1.2 $ $Source: /home/doug/judy-1.0.5_min/test/../src/JudyCommon/RCS/JudyPrivateBranch.h,v $
//
// Header file for all Judy sources, for global but private (non-exported)
// declarations specific to branch support.
@@ -55,7 +55,7 @@ typedef struct J_UDY_POINTER_OTHERS
{
Word_t j_po_Addr; // first word: Pjp_t, Word_t, etc.
union {
-// Word_t j_po_DcdPop0:cJU_BITSPERWORD-cJU_BITSPERBYTE;
+ Word_t j_po_Addr1;
uint8_t j_po_DcdP0[sizeof(Word_t) - 1];
uint8_t j_po_Bytes[sizeof(Word_t)]; // last byte = jp_Type.
} jpo_u;
@@ -78,13 +78,18 @@ typedef struct J_UDY_POINTER_OTHERS
// TBD: Revise this structure to not overload j_po_DcdPopO this way? The
// current arrangement works, its just confusing.
-typedef struct _JUDY_POINTER_IMMED // JPI.
+typedef struct _JUDY_POINTER_IMMEDL
{
- uint8_t j_pi_1Index[sizeof(Word_t)]; // see above.
- uint8_t j_pi_LIndex[sizeof(Word_t) - 1]; // see above.
- uint8_t j_pi_Type; // JP type, 1 of cJ*_JPIMMED*.
- } jpi_t;
+ Word_t j_pL_Addr;
+ uint8_t j_pL_LIndex[sizeof(Word_t) - 1]; // see above.
+ uint8_t j_pL_Type;
+ } jpL_t;
+typedef struct _JUDY_POINTER_IMMED1
+ {
+ uint8_t j_p1_1Index[(2 * sizeof(Word_t)) - 1];
+ uint8_t j_p1_Type;
+ } jp1_t;
// UNION OF JP TYPES:
//
@@ -96,18 +101,22 @@ typedef struct _JUDY_POINTER_IMMED
typedef union J_UDY_POINTER // JP.
{
jpo_t j_po; // other than immediate indexes.
- jpi_t j_pi; // immediate indexes.
+ jpL_t j_pL; // immediate indexes.
+ jp1_t j_p1; // immediate indexes.
} jp_t, *Pjp_t;
// For coding convenience:
//
-// Note, jp_Type has the same bits in jpo_t and jpi_t.
+// Note, jp_Type has the same bits in jpo_t jpL_t and jp1_t.
-#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_1Index j_p1.j_p1_1Index // for storing Indexes in first word.
+#define jp_LIndex j_pL.j_pL_LIndex // for storing Indexes in second word.
#define jp_Addr j_po.j_po_Addr
+#define jp_Addr1 j_po.jpo_u.j_po_Addr1
//#define jp_DcdPop0 j_po.jpo_u.j_po_DcdPop0
-#define jp_Type j_po.jpo_u.j_po_Bytes[sizeof(Word_t) - 1]
+#define jp_Addr1 j_po.jpo_u.j_po_Addr1
+//#define jp_Type j_po.jpo_u.j_po_Bytes[sizeof(Word_t) - 1]
+#define jp_Type j_p1.j_p1_Type
#define jp_DcdP0 j_po.jpo_u.j_po_DcdP0

8
Judy.rpmlintrc Normal file
View File

@ -0,0 +1,8 @@
# The size of a Judy array is not pre-allocated
addFilter("spelling-error \('pre',")
# Won't get fixed as upstream is no longer active
addFilter("incorrect-fsf-address")
# Code variants with identical files (historical structure)
addFilter("Judy-debugsource.*: .* files-duplicated-waste")

View File

@ -1,34 +1,31 @@
Name: Judy
Version: 1.0.5
Release: 18%{?dist}
Release: 38%{?dist}
Summary: General purpose dynamic array
License: LGPLv2+
License: LGPL-2.0-or-later
URL: http://sourceforge.net/projects/judy/
Source0: http://downloads.sf.net/judy/Judy-%{version}.tar.gz
# Make tests use shared instead of static libJudy
Source1: README.Fedora
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
Patch2: 04_fix_undefined_behavior_during_aggressive_loop_optimizations.patch
BuildRequires: coreutils
BuildRequires: gawk
BuildRequires: gcc >= 4.1
BuildRequires: hardlink
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.
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
@ -40,47 +37,54 @@ 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
# Make tests use shared instead of static libJudy
%patch -P 0 -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
%patch -P 1 -p1 -b .fix-Judy1-mans
# Fix some code with undefined behavior, commented on and removed by gcc
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=782841
%patch -P 2 -p1 -b .behavior
# README.Fedora
cp -p %{SOURCE1} .
%build
export CFLAGS="%{optflags} -fno-strict-aliasing -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-copy-prop -fno-tree-vrp"
export CFLAGS="%{optflags} -fno-strict-aliasing"
%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
# https://sourceforge.net/p/judy/bugs/22/
%install
make install DESTDIR=%{buildroot} INSTALL="install -p"
%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
# hardlink identical manpages together
hardlink -cv %{buildroot}%{_mandir}/man3/J*.3*
%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
%else
%doc COPYING
%endif
%license COPYING README.Fedora
%doc AUTHORS ChangeLog README examples/
%{_libdir}/libJudy.so.*
%{_libdir}/libJudy.so.1
%{_libdir}/libJudy.so.1.*
%files devel
%doc doc
@ -89,11 +93,82 @@ cd -
%{_mandir}/man3/J*.3*
%changelog
* Thu Oct 11 2018 Michal Schorm <mschorm@redhat.com> - 1.0.5-18
- Remove README.Fedora; no longer needed since 1.0.5 version
- Resolves: #1638717
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 1.0.5-38
- Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Thu Feb 08 2018 Paul Howarth <paul@city-fan.org> - 1.0.5-17
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 1.0.5-37
- Bump release for June 2024 mass rebuild
* Tue Jan 23 2024 Paul Howarth <paul@city-fan.org> - 1.0.5-36
- Hard link manpages to avoid duplication
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-35
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-34
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Jan 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-33
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-32
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Thu Jan 19 2023 Paul Howarth <paul@city-fan.org> - 1.0.5-31
- Use SPDX-format license tag
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-30
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-29
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-28
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-27
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 4 2021 Paul Howarth <paul@city-fan.org> - 1.0.5-26
- Replace undefined behaviour patch with one from upstream author, as used
in debian since 2015
(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=782841)
- Drop gcc optimization flags as we can now use the distribution default
flags again
* 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

23
README.Fedora Normal file
View File

@ -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>

View File

@ -1,120 +0,0 @@
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]

8
gating.yaml Normal file
View File

@ -0,0 +1,8 @@
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.installability.functional}
- !PassingTestCaseRule {test_case_name: osci.brew-build.test-compose.integration}
- !PassingTestCaseRule {test_case_name: osci.brew-build.rpmdeplint.functional}

1
sources Normal file
View File

@ -0,0 +1 @@
115a0d26302676e962ae2f70ec484a54 Judy-1.0.5.tar.gz