diff --git a/0001-jbigkit-2.1-shlib.patch b/0001-jbigkit-2.1-shlib.patch new file mode 100644 index 0000000000000000000000000000000000000000..bf5b22a8e25d22503ce59d885f7cbd68cb5bfc1c --- /dev/null +++ b/0001-jbigkit-2.1-shlib.patch @@ -0,0 +1,160 @@ +diff -Naur jbigkit-2.1.old/libjbig/Makefile jbigkit-2.1/libjbig/Makefile +--- jbigkit-2.1.old/libjbig/Makefile 2014-03-27 19:47:15.000000000 +0100 ++++ jbigkit-2.1/libjbig/Makefile 2014-08-04 10:45:31.865773710 +0200 +@@ -4,25 +4,27 @@ + CC = gcc + + # Options for the compiler: A high optimization level is suggested +-CFLAGS = -g -O -W -Wall -ansi -pedantic # --coverage ++CFLAGS = $(RPM_OPT_FLAGS) -W -Wall -ansi -pedantic # --coverage ++PICFLAGS := -fPIC -DPIC + +-all: libjbig.a libjbig85.a tstcodec tstcodec85 ++all: libjbig.so.$(VERSION) tstcodec tstcodec85 + +-tstcodec: tstcodec.o jbig.o jbig_ar.o +- $(CC) $(CFLAGS) -o tstcodec tstcodec.o jbig.o jbig_ar.o ++tstcodec: tstcodec.o libjbig.so ++ $(CC) $(CFLAGS) -o tstcodec $< -L. -ljbig + +-tstcodec85: tstcodec85.o jbig85.o jbig_ar.o +- $(CC) $(CFLAGS) -o tstcodec85 tstcodec85.o jbig85.o jbig_ar.o ++tstcodec85: tstcodec85.o libjbig85.so ++ $(CC) $(CFLAGS) -o tstcodec85 $^ -L. -ljbig + +-libjbig.a: jbig.o jbig_ar.o +- rm -f libjbig.a +- ar rc libjbig.a jbig.o jbig_ar.o +- -ranlib libjbig.a ++%.so: %.so.$(VERSION) ++ ln -sf $< $@ + +-libjbig85.a: jbig85.o jbig_ar.o +- rm -f libjbig85.a +- ar rc libjbig85.a jbig85.o jbig_ar.o +- -ranlib libjbig85.a ++libjbig.so.$(VERSION): jbig.o jbig_ar.o ++ $(CC) $(CFLAGS) -shared -Wl,-soname,$@ -o $@ $^ ++ ++libjbig85.so.$(VERSION): jbig85.o jbig_ar.o ++ $(CC) $(CFLAGS) -shared -Wl,-soname,$@ -o $@ $^ ++ ++jbig.o jbig85.o jbig_ar.o: CFLAGS += $(PICFLAGS) + + jbig.o: jbig.c jbig.h jbig_ar.h + jbig85.o: jbig85.c jbig85.h jbig_ar.h +@@ -43,11 +45,11 @@ + clang --analyze *.c + + test: tstcodec tstcodec85 +- ./tstcodec +- ./tstcodec85 ++ LD_LIBRARY_PATH=`pwd` ./tstcodec ++ LD_LIBRARY_PATH=`pwd` ./tstcodec85 + + t82test.pbm: tstcodec +- ./tstcodec $@ ++ LD_LIBRARY_PATH=`pwd` ./tstcodec $@ + + clean: + rm -f *.o *.gcda *.gcno *.gcov *.plist *~ core gmon.out dbg_d\=??.pbm +diff -Naur jbigkit-2.1.old/Makefile jbigkit-2.1/Makefile +--- jbigkit-2.1.old/Makefile 2014-03-27 19:47:15.000000000 +0100 ++++ jbigkit-2.1/Makefile 2014-08-04 10:52:09.242027746 +0200 +@@ -4,25 +4,26 @@ + CC = gcc + + # Options for the compiler: A high optimization level is suggested +-CFLAGS = -O2 -W -Wno-unused-result ++CFLAGS = $(RPM_OPT_FLAGS) -W -Wno-unused-result + # CFLAGS = -O -g -W -Wall -Wno-unused-result -ansi -pedantic # -DDEBUG + + export CC CFLAGS + + VERSION=2.1 ++export VERSION + + all: lib pbm + @echo "Enter 'make test' in order to start some automatic tests." + + lib: +- cd libjbig && $(MAKE) -e ++ make -C libjbig + + pbm: lib +- cd pbmtools && $(MAKE) -e ++ make -C pbmtools + + test: lib pbm +- cd libjbig && $(MAKE) test +- cd pbmtools && $(MAKE) test ++ LD_LIBRARY_PATH=`pwd`/libjbig make -C libjbig test ++ LD_LIBRARY_PATH=`pwd`/libjbig make -C pbmtools test + + analyze: + cd libjbig && $(MAKE) analyze +@@ -30,8 +31,8 @@ + + clean: + rm -f *~ core +- cd libjbig && $(MAKE) clean +- cd pbmtools && $(MAKE) clean ++ make -C libjbig clean ++ make -C pbmtools clean + + distribution: + rm -rf jbigkit-$(VERSION) +diff -Naur jbigkit-2.1.old/pbmtools/Makefile jbigkit-2.1/pbmtools/Makefile +--- jbigkit-2.1.old/pbmtools/Makefile 2014-03-27 19:47:15.000000000 +0100 ++++ jbigkit-2.1/pbmtools/Makefile 2014-08-04 10:49:47.694581174 +0200 +@@ -4,26 +4,26 @@ + CC = gcc + + # Options for the compiler +-CFLAGS = -g -O -W -Wall -Wno-unused-result -ansi -pedantic # --coverage ++CFLAGS = $(RPM_OPT_FLAGS) -W -Wall -Wno-unused-result -ansi -pedantic # --coverage + CPPFLAGS = -I../libjbig + + .SUFFIXES: .1 .5 .txt $(SUFFIXES) + .PHONY: txt test test82 test85 clean + +-all: pbmtojbg jbgtopbm pbmtojbg85 jbgtopbm85 txt ++all: pbmtojbg jbgtopbm pbmtojbg85 jbgtopbm85 # txt + + txt: pbmtojbg.txt jbgtopbm.txt pbm.txt pgm.txt + +-pbmtojbg: pbmtojbg.o ../libjbig/libjbig.a ++pbmtojbg: pbmtojbg.o ../libjbig/libjbig.so + $(CC) $(CFLAGS) -o pbmtojbg pbmtojbg.o -L../libjbig -ljbig + +-jbgtopbm: jbgtopbm.o ../libjbig/libjbig.a ++jbgtopbm: jbgtopbm.o ../libjbig/libjbig.so + $(CC) $(CFLAGS) -o jbgtopbm jbgtopbm.o -L../libjbig -ljbig + +-pbmtojbg85: pbmtojbg85.o ../libjbig/libjbig85.a ++pbmtojbg85: pbmtojbg85.o ../libjbig/libjbig85.so + $(CC) $(CFLAGS) -o pbmtojbg85 pbmtojbg85.o -L../libjbig -ljbig85 + +-jbgtopbm85: jbgtopbm85.o ../libjbig/libjbig85.a ++jbgtopbm85: jbgtopbm85.o ../libjbig/libjbig85.so + $(CC) $(CFLAGS) -o jbgtopbm85 jbgtopbm85.o -L../libjbig -ljbig85 + + jbgtopbm.o: jbgtopbm.c ../libjbig/jbig.h +@@ -31,13 +31,13 @@ + jbgtopbm85.o: jbgtopbm85.c ../libjbig/jbig85.h + pbmtojbg85.o: pbmtojbg85.c ../libjbig/jbig85.h + +-../libjbig/libjbig.a: ../libjbig/jbig.c ../libjbig/jbig.h \ ++../libjbig/libjbig.so: ../libjbig/jbig.c ../libjbig/jbig.h \ + ../libjbig/jbig_ar.c ../libjbig/jbig_ar.h +- make -C ../libjbig libjbig.a ++ make -C ../libjbig libjbig.so + +-../libjbig/libjbig85.a: ../libjbig/jbig85.c ../libjbig/jbig85.h \ ++../libjbig/libjbig85.so: ../libjbig/jbig85.c ../libjbig/jbig85.h \ + ../libjbig/jbig_ar.c ../libjbig/jbig_ar.h +- make -C ../libjbig libjbig85.a ++ make -C ../libjbig libjbig85.so + + analyze: + clang $(CPPFLAGS) --analyze *.c diff --git a/0002-jbigkit-2.0-warnings.patch b/0002-jbigkit-2.0-warnings.patch new file mode 100644 index 0000000000000000000000000000000000000000..9d2008da061c8cf6df7a4ebef95650e0a38a93ab --- /dev/null +++ b/0002-jbigkit-2.0-warnings.patch @@ -0,0 +1,77 @@ +diff -up jbigkit-2.1/pbmtools/pbmtojbg85.c.warnings jbigkit-2.1/pbmtools/pbmtojbg85.c +--- jbigkit-2.1/pbmtools/pbmtojbg85.c.warnings 2008-08-26 00:26:39.000000000 +0200 ++++ jbigkit-2.1/pbmtools/pbmtojbg85.c 2012-07-17 16:24:56.741332942 +0200 +@@ -72,9 +72,12 @@ static unsigned long getint(FILE *f) + while ((c = getc(f)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) { + ungetc(c, f); +- fscanf(f, "%lu", &i); ++ if (fscanf(f, "%lu", &i) != 1) { ++ /* should never fail, since c must be a digit */ ++ fprintf(stderr, "Unexpected failure reading digit '%c'\n", c); ++ exit(1); ++ } + } +- + return i; + } + +@@ -239,7 +242,9 @@ int main (int argc, char **argv) + break; + case '4': + /* PBM raw binary format */ +- fread(next_line, bpl, 1, fin); ++ if (fread(next_line, bpl, 1, fin) != 1) { ++ /* silence compiler warnings; ferror/feof checked below */ ++ } + break; + default: + fprintf(stderr, "Unsupported PBM type P%c!\n", type); +diff -up jbigkit-2.1/pbmtools/pbmtojbg.c.warnings jbigkit-2.1/pbmtools/pbmtojbg.c +--- jbigkit-2.1/pbmtools/pbmtojbg.c.warnings 2008-07-16 22:59:41.000000000 +0200 ++++ jbigkit-2.1/pbmtools/pbmtojbg.c 2012-07-17 16:23:46.584285686 +0200 +@@ -88,7 +88,11 @@ static unsigned long getint(FILE *f) + while ((c = getc(f)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) { + ungetc(c, f); +- fscanf(f, "%lu", &i); ++ if (fscanf(f, "%lu", &i) != 1) { ++ /* should never fail, since c must be a digit */ ++ fprintf(stderr, "Unexpected failure reading digit '%c'\n", c); ++ exit(1); ++ } + } + + return i; +@@ -302,7 +306,9 @@ int main (int argc, char **argv) + break; + case '4': + /* PBM raw binary format */ +- fread(bitmap[0], bitmap_size, 1, fin); ++ if (fread(bitmap[0], bitmap_size, 1, fin) != 1) { ++ /* silence compiler warnings; ferror/feof checked below */ ++ } + break; + case '2': + case '5': +@@ -314,8 +320,18 @@ int main (int argc, char **argv) + for (j = 0; j < bpp; j++) + image[x * bpp + (bpp - 1) - j] = v >> (j * 8); + } +- } else +- fread(image, width * height, bpp, fin); ++ } else { ++ if (fread(image, width * height, bpp, fin) != (size_t) bpp) { ++ if (ferror(fin)) { ++ fprintf(stderr, "Problem while reading input file '%s", fnin); ++ perror("'"); ++ exit(1); ++ } else { ++ fprintf(stderr, "Unexpected end of input file '%s'!\n", fnin); ++ exit(1); ++ } ++ } ++ } + jbg_split_planes(width, height, planes, encode_planes, image, bitmap, + use_graycode); + free(image); diff --git a/0003-jbigkit-ldflags.patch b/0003-jbigkit-ldflags.patch new file mode 100644 index 0000000000000000000000000000000000000000..e527cb9c9aac02eda6d0a7d522c2341b98b7fab1 --- /dev/null +++ b/0003-jbigkit-ldflags.patch @@ -0,0 +1,51 @@ +diff -up jbigkit-2.1/libjbig/Makefile.ldflags jbigkit-2.1/libjbig/Makefile +--- jbigkit-2.1/libjbig/Makefile.ldflags 2018-02-27 17:50:15.786038149 +0100 ++++ jbigkit-2.1/libjbig/Makefile 2018-02-27 17:55:44.042093437 +0100 +@@ -10,19 +10,19 @@ PICFLAGS := -fPIC -DPIC + all: libjbig.so.$(VERSION) tstcodec tstcodec85 + + tstcodec: tstcodec.o libjbig.so +- $(CC) $(CFLAGS) -o tstcodec $< -L. -ljbig ++ $(CC) $(CFLAGS) -o tstcodec $< -L. -ljbig $(LDFLAGS) + + tstcodec85: tstcodec85.o libjbig85.so +- $(CC) $(CFLAGS) -o tstcodec85 $^ -L. -ljbig ++ $(CC) $(CFLAGS) -o tstcodec85 $^ -L. -ljbig $(LDFLAGS) + + %.so: %.so.$(VERSION) + ln -sf $< $@ + + libjbig.so.$(VERSION): jbig.o jbig_ar.o +- $(CC) $(CFLAGS) -shared -Wl,-soname,$@ -o $@ $^ ++ $(CC) $(CFLAGS) $(LDFLAGS) -shared -Wl,-soname,$@ -o $@ $^ + + libjbig85.so.$(VERSION): jbig85.o jbig_ar.o +- $(CC) $(CFLAGS) -shared -Wl,-soname,$@ -o $@ $^ ++ $(CC) $(CFLAGS) $(LDFLAGS) -shared -Wl,-soname,$@ -o $@ $^ + + jbig.o jbig85.o jbig_ar.o: CFLAGS += $(PICFLAGS) + +diff -up jbigkit-2.1/pbmtools/Makefile.ldflags jbigkit-2.1/pbmtools/Makefile +--- jbigkit-2.1/pbmtools/Makefile.ldflags 2018-02-27 17:50:35.902857687 +0100 ++++ jbigkit-2.1/pbmtools/Makefile 2018-02-27 17:57:09.296328639 +0100 +@@ -15,16 +15,16 @@ all: pbmtojbg jbgtopbm pbmtojbg85 jbgtop + txt: pbmtojbg.txt jbgtopbm.txt pbm.txt pgm.txt + + pbmtojbg: pbmtojbg.o ../libjbig/libjbig.so +- $(CC) $(CFLAGS) -o pbmtojbg pbmtojbg.o -L../libjbig -ljbig ++ $(CC) $(CFLAGS) -o pbmtojbg pbmtojbg.o -L../libjbig -ljbig $(LDFLAGS) + + jbgtopbm: jbgtopbm.o ../libjbig/libjbig.so +- $(CC) $(CFLAGS) -o jbgtopbm jbgtopbm.o -L../libjbig -ljbig ++ $(CC) $(CFLAGS) -o jbgtopbm jbgtopbm.o -L../libjbig -ljbig $(LDFLAGS) + + pbmtojbg85: pbmtojbg85.o ../libjbig/libjbig85.so +- $(CC) $(CFLAGS) -o pbmtojbg85 pbmtojbg85.o -L../libjbig -ljbig85 ++ $(CC) $(CFLAGS) -o pbmtojbg85 pbmtojbg85.o -L../libjbig -ljbig85 $(LDFLAGS) + + jbgtopbm85: jbgtopbm85.o ../libjbig/libjbig85.so +- $(CC) $(CFLAGS) -o jbgtopbm85 jbgtopbm85.o -L../libjbig -ljbig85 ++ $(CC) $(CFLAGS) -o jbgtopbm85 jbgtopbm85.o -L../libjbig -ljbig85 $(LDFLAGS) + + jbgtopbm.o: jbgtopbm.c ../libjbig/jbig.h + pbmtojbg.o: pbmtojbg.c ../libjbig/jbig.h diff --git a/0004-jbigkit-covscan.patch b/0004-jbigkit-covscan.patch new file mode 100644 index 0000000000000000000000000000000000000000..22282b9074481be62734beedb569425d877c8754 --- /dev/null +++ b/0004-jbigkit-covscan.patch @@ -0,0 +1,30 @@ +diff --git a/libjbig/jbig.c b/libjbig/jbig.c +index 751ceff..3c76e07 100644 +--- a/libjbig/jbig.c ++++ b/libjbig/jbig.c +@@ -889,7 +889,7 @@ void jbg_enc_options(struct jbg_enc_state *s, int order, int options, + if (order >= 0 && order <= 0x0f) s->order = order; + if (options >= 0) s->options = options; + if (l0 > 0) s->l0 = l0; +- if (mx >= 0 && my < 128) s->mx = mx; ++ if (mx >= 0 && mx < 128) s->mx = mx; + if (my >= 0 && my < 256) s->my = my; + + return; +diff --git a/pbmtools/Makefile b/pbmtools/Makefile +index 85e1783..6ae2d33 100644 +--- a/pbmtools/Makefile ++++ b/pbmtools/Makefile +@@ -56,9 +56,9 @@ test82: pbmtojbg jbgtopbm + make IMG=sandra "OPTIONSP=-o 2" OPTIONSJ= dotest2g + make IMG=multi OPTIONSP= OPTIONSJ= dotest2g + make IMG=multi OPTIONSP=-b OPTIONSJ=-b dotest2g +- make IMG=mx "OPTIONSP=-q -s 3 -m 128" dotest1 +- make IMG=mx "OPTIONSP=-q -s 3 -m 128" dotest2b +- make IMG=mx "OPTIONSP=-q -s 3 -m 128 -p 92" dotest2b ++ make IMG=mx "OPTIONSP=-q -s 3 -m 127" dotest1 ++ make IMG=mx "OPTIONSP=-q -s 3 -m 127" dotest2b ++ make IMG=mx "OPTIONSP=-q -s 3 -m 127 -p 92" dotest2b + make IMG=mx "OPTIONSP=-q -Y -1" dotest2b + make IMG=mx "OPTIONSP=-Y -1" dotest2b + rm -f test-*.jbg test-*.pbm test-*.pgm diff --git a/jbigkit-2.1.tar.gz b/jbigkit-2.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d496c8b80b9ae319a15833a7994282ea58d72ff8 Binary files /dev/null and b/jbigkit-2.1.tar.gz differ diff --git a/jbigkit.spec b/jbigkit.spec new file mode 100644 index 0000000000000000000000000000000000000000..d3f1c41ec1e620b23ba37ba8fe6a2c71e16da6d8 --- /dev/null +++ b/jbigkit.spec @@ -0,0 +1,108 @@ +%define anolis_release 1 +Name: jbigkit +Version: 2.1 +Release: %{anolis_release}%{?dist} +Summary: JBIG1 lossless image compression tools + +License: GPLv2+ +URL: http://www.cl.cam.ac.uk/~mgk25/jbigkit/ +Source0: %{url}/download/jbigkit-%{version}.tar.gz +Patch0: 0001-jbigkit-2.1-shlib.patch +Patch1: 0002-jbigkit-2.0-warnings.patch +Patch2: 0003-jbigkit-ldflags.patch +# patch for coverity issues - backported from upstream +Patch3: 0004-jbigkit-covscan.patch + +# gcc is no longer in buildroot by default +# gcc needed for libjbig library and several filters - jbigtopbm, pbmtojbig e.g. +BuildRequires: gcc +# uses make +BuildRequires: make + +Requires: jbigkit-libs%{?_isa} = %{version}-%{release} + +%package libs +Summary: JBIG1 lossless image compression library + +%package devel +Summary: JBIG1 lossless image compression library -- development files +Requires: jbigkit-libs%{?_isa} = %{version}-%{release} + +%description libs +JBIG-KIT provides a portable library of compression and decompression +functions with a documented interface that you can include very easily +into your image or document processing software. In addition, JBIG-KIT +provides ready-to-use compression and decompression programs with a +simple command line interface (similar to the converters found in netpbm). + +JBIG-KIT implements the specification: + ISO/IEC 11544:1993 and ITU-T Recommendation T.82(1993): + Information technology — Coded representation of picture and audio + information — Progressive bi-level image compression + +which is commonly referred to as the “JBIG1 standard” + +%description devel +The jbigkit-devel package contains files needed for development using +the JBIG-KIT image compression library. + +%description +The jbigkit package contains tools for converting between PBM and JBIG1 +formats. + + +%prep +%setup -q -n jbigkit-2.1 +%patch0 -p1 -b .shlib +%patch1 -p1 -b .warnings +# jbigkit: Partial Fedora build flags injection (bug #1548546) +%patch2 -p1 -b .ldflags +# covscan issues - backported from upstream +%patch3 -p1 -b .covscan + +%build +# get the correct redhat build flags +%set_build_flags +%make_build + +%install +mkdir -p $RPM_BUILD_ROOT%{_libdir} +mkdir -p $RPM_BUILD_ROOT%{_includedir} +mkdir -p $RPM_BUILD_ROOT%{_bindir} +mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1 + +install -p -m0755 libjbig/libjbig.so.%{version} $RPM_BUILD_ROOT/%{_libdir} +install -p -m0755 libjbig/libjbig85.so.%{version} $RPM_BUILD_ROOT/%{_libdir} +ln -sf libjbig.so.%{version} $RPM_BUILD_ROOT/%{_libdir}/libjbig.so +ln -sf libjbig85.so.%{version} $RPM_BUILD_ROOT/%{_libdir}/libjbig85.so + +install -p -m0644 libjbig/jbig.h $RPM_BUILD_ROOT%{_includedir} +install -p -m0644 libjbig/jbig85.h $RPM_BUILD_ROOT%{_includedir} +install -p -m0644 libjbig/jbig_ar.h $RPM_BUILD_ROOT%{_includedir} + +install -p -m0755 pbmtools/???to??? $RPM_BUILD_ROOT%{_bindir} +install -p -m0755 pbmtools/???to???85 $RPM_BUILD_ROOT%{_bindir} +install -p -m0644 pbmtools/*.1 $RPM_BUILD_ROOT%{_mandir}/man1 + +%check +make test + +%ldconfig_scriptlets libs + +%files +%{_bindir}/???to* +%{_mandir}/man1/* +%license COPYING + +%files libs +%{_libdir}/libjbig*.so.%{version} +%doc ANNOUNCE TODO CHANGES +%license COPYING + +%files devel +%{_libdir}/libjbig*.so +%{_includedir}/jbig*.h + +%changelog +* Mon Apr 18 2022 yuanhui - 2.1-1 +- Init jbigkit for anolis os 23