Compare commits

..

No commits in common. "rawhide" and "f34" have entirely different histories.

13 changed files with 82 additions and 313 deletions

View file

@ -1 +0,0 @@
1

4
.gitignore vendored
View file

@ -1,5 +1 @@
unpaper-0.3.tar.gz
/unpaper-6.1.tar.xz
/unpaper-6.1.tar.xz.sig
/unpaper-6.1^20220117.gite515408.tar.xz
/unpaper-7.0.0.tar.xz

2
.rpmlint Normal file
View file

@ -0,0 +1,2 @@
from Config import *
addFilter("spelling-error .* deskewing");

View file

@ -1,16 +0,0 @@
--- !Policy
product_versions:
- fedora-rawhide
decision_context: bodhi_update_push_stable
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpmdeplint.functional}
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_stable
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.installability.functional}
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpminspect.static-analysis}
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}

View file

@ -1,5 +0,0 @@
summary: Sanity tests
discover:
how: fmf
execute:
how: tmt

View file

@ -1 +1 @@
SHA512 (unpaper-7.0.0.tar.xz) = 58da969e773bf16ffee98b96f903ac5347f66d9a93c63bdb9131f5d45f4d7973c09f364ac2f27f8cb61f75de0421c6b01aa248fa9619fbdbde30fcebc76aa484
be41eaf8556e7df39ab53939c99c4f7b unpaper-0.3.tar.gz

View file

@ -1,5 +0,0 @@
summary: Upstream tests
component: unpaper
require: unpaper-tests
test: /usr/libexec/unpaper/test
duration: 12m

View file

@ -0,0 +1,55 @@
diff --git a/src/unpaper.c b/src/unpaper.c
index f967d92..53f55b0 100644
--- a/src/unpaper.c
+++ b/src/unpaper.c
@@ -1,9 +1,9 @@
/* ---------------------------------------------------------------------------
unpaper - written by Jens Gulden 2005-2007 */
-const char* VERSION = "0.3";
+const char VERSION[] = "0.3";
-const char* README =
+const char README[] =
"unpaper is a post-processing tool for scanned sheets of paper, especially for\n"
"book pages that have been scanned from previously created photocopies.\n"
"The main purpose is to make scanned book pages better readable on screen\n"
@@ -29,7 +29,7 @@ const char* README =
"Conversion to PDF can e.g. be achieved with the Linux tools pgm2tiff, tiffcp\n"
"and tiff2pdf.";
-const char* COMPILE =
+const char COMPILE[] =
"gcc -D TIMESTAMP=\"<yyyy-MM-dd HH:mm:ss>\" -lm -O3 -funroll-all-loops -fomit-frame-pointer -ftree-vectorize -o unpaper unpaper.c\n";
/* ------------------------------------------------------------------------ */
@@ -46,17 +46,17 @@ const char* BUILD = TIMESTAMP;
const char* BUILD = NULL;
#endif
-const char* WELCOME =
+const char WELCOME[] =
"unpaper %s - written by Jens Gulden 2005-2007.\n"
"Licensed under the GNU General Public License, this comes with no warranty.\n";
-const char* USAGE =
+const char USAGE[] =
"Usage: unpaper [options] <input-file(s)> <output-file(s)>\n\n"
"Filenames may contain a formatting placeholder starting with '%%' to insert a\n"
"page counter for multi-page processing. E.g.: 'scan%%03d.pbm' to process files\n"
"scan001.pbm, scan002.pbm, scan003.pbm etc.\n";
-const char* OPTIONS =
+const char OPTIONS[] =
"-l --layout single Set default layout options for a sheet:\n"
" |double 'single': One page per sheet.\n"
" |none 'double': Two pages per sheet, landscape\n"
@@ -558,7 +558,7 @@ const char* OPTIONS =
//--help-compile Undocumented.
-const char* HELP =
+const char HELP[] =
"Run 'unpaper --help' for usage information.\n";

View file

@ -1,44 +0,0 @@
From a2a88fe837fd6770ac94f08b2eb841f0dc9d2430 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Diego=20Elio=20Petten=C3=B2?= <flameeyes@flameeyes.com>
Date: Sat, 8 Oct 2022 10:14:46 +0100
Subject: [PATCH] Set the `update` option to suppress the ffmpeg 5.1 warning.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This addresses Issue #113, the spurious warning coming from ffmpeg 5.1+
about the filename not being an image sequence (we do our own sequencing
so we do not want it to be seen by ffmpeg at all!)
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
file.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/file.c b/file.c
index fc24a4c..53ef727 100644
--- a/file.c
+++ b/file.c
@@ -13,6 +13,7 @@
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/avutil.h>
+#include <libavutil/opt.h>
#include "tools.h"
#include "unpaper.h"
@@ -142,6 +143,11 @@ void saveImage(char *filename, AVFrame *input, int outputPixFmt) {
errOutput("unable to allocate output context.");
}
+ if ((ret = av_opt_set(out_ctx->priv_data, "update", "true", 0)) < 0) {
+ av_strerror(ret, errbuff, sizeof(errbuff));
+ errOutput("unable to configure update option: %s", errbuff);
+ }
+
switch (outputPixFmt) {
case AV_PIX_FMT_RGB24:
output_codec = AV_CODEC_ID_PPM;
--
2.37.3

View file

@ -1,55 +0,0 @@
From d29fd2cf84ea386c67ecb0302adebc0700088d94 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Diego=20Elio=20Petten=C3=B2?= <flameeyes@flameeyes.com>
Date: Sat, 8 Oct 2022 00:16:20 +0100
Subject: [PATCH] Use avformat_alloc_output_context2() to create the out
context.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This simplifies the API usage quite a bit, while maintaining the same
logic as previously.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
file.c | 14 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
diff --git a/file.c b/file.c
index d9c239e..fc24a4c 100644
--- a/file.c
+++ b/file.c
@@ -127,7 +127,6 @@ void loadImage(const char *filename, AVFrame **image) {
* @return true on success, false on failure
*/
void saveImage(char *filename, AVFrame *input, int outputPixFmt) {
- const AVOutputFormat *fmt = NULL;
enum AVCodecID output_codec = -1;
const AVCodec *codec;
AVFormatContext *out_ctx;
@@ -138,20 +137,11 @@ void saveImage(char *filename, AVFrame *input, int outputPixFmt) {
int ret;
char errbuff[1024];
- fmt = av_guess_format("image2", NULL, NULL);
-
- if (!fmt) {
- errOutput("could not find suitable output fmt.");
- }
-
- out_ctx = avformat_alloc_context();
- if (!out_ctx) {
+ if (avformat_alloc_output_context2(&out_ctx, NULL, "image2", filename) < 0 ||
+ out_ctx == NULL) {
errOutput("unable to allocate output context.");
}
- out_ctx->oformat = fmt;
- out_ctx->url = av_strdup(filename);
-
switch (outputPixFmt) {
case AV_PIX_FMT_RGB24:
output_codec = AV_CODEC_ID_PPM;
--
2.37.3

View file

@ -1,2 +0,0 @@
addFilter('spelling-error .* deskewing')
addFilter('-tests\.noarch: W: no-documentation')

View file

@ -1,67 +1,15 @@
Name: unpaper
Version: 7.0.0
Release: 18%{?dist}
Version: 0.3
Release: 25%{?dist}
Summary: Post-processing of scanned and photocopied book pages
# AUTHORS: GPL-2.0-only
# constants.h: GPL-2.0-only
# doc/basic-concepts.md: GPL-2.0-only
# doc/file-formats.md: GPL-2.0-only
# doc/image-processing.md: GPL-2.0-only
# doc/img/*.png.license: GPL-2.0-only
# doc/unpaper.1.rst: GPL-2.0-only
# file.c: GPL-2.0-only
# imageprocess.c: GPL-2.0-only
# imageprocess.h: GPL-2.0-only
# LICENSES/0BSD.txt: 0BSD text
# LICENSES/GPL-2.0-only.txt: GPL-2.0 text
# other files: GPL-2.0-only
# README.md: GPL-2.0-only
# version.h.in: 0BSD
## In tests subpackage
# LICENSES/MIT.txt: MIT text
# tests/golden_images/*.license GPL-2.0-only
# tests/source_images/*.license GPL-2.0-only
# tests/unpaper_tests.py: GPL-2.0-only AND MIT
## Not in any binary package
# doc/conf.py: MIT
# LICENSES/Apache-2.0.txt: Apache-2.0 text
# meson.build: MIT
# .dir-locals.el: MIT
# .editorconfig: 0BSD
# .github/workflows/meson-build-and-test.yml: Apache-2.0
# .github/workflows/pre-commit.yml: MIT
# .gitignore: MIT
# .mailmap: MIT
# .mergify.yml: MIT
# .pre-commit-config.yaml: MIT
SourceLicense: GPL-2.0-only AND 0BSD AND MIT AND Apache-2.0
License: GPL-2.0-only AND 0BSD
URL: https://www.flameeyes.eu/projects/%{name}
Source0: https://www.flameeyes.eu/files/%{name}-%{version}.tar.xz
# Missing a signature, requested by e-mail
# <https://flameeyes.blog/2022/05/10/unpaper-7-0-0-release/>.
#Source1: https://www.flameeyes.eu/files/%%{name}-%%{version}.tar.xz.sig
## A key exported from keyserver <hkp://pgp.surfnet.nl> on 2022-02-25.
#Source2: gpgkey-BDAEF3008A1CC62079C2A16847664B94E36B629F.gpg
# 1/2Set an update option to supress a warning with ffmpeg-5.1,
# in upstream after 7.0.0,
# <https://github.com/unpaper/unpaper/issues/113>
Patch0: unpaper-7.0.0-Use-avformat_alloc_output_context2-to-create-the-out.patch
# 2/2 Set an update option to supress a warning with ffmpeg-5.1,
# in upstream after 7.0.0,
# <https://github.com/unpaper/unpaper/issues/113>
Patch1: unpaper-7.0.0-Set-the-update-option-to-suppress-the-ffmpeg-5.1-war.patch
# Licensed under any GPL version since none is specified
License: GPL+
URL: http://unpaper.berlios.de/
Source0: http://download.berlios.de/%{name}/%{name}-%{version}.tar.gz
Patch0: unpaper-0.3-format-security.patch
BuildRequires: coreutils
BuildRequires: gcc
#BuildRequires: gnupg2
BuildRequires: meson >= 0.57
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
BuildRequires: python3-sphinx >= 3.4
# Tests:
BuildRequires: python3dist(pytest)
# python3-pillow for PIL Python module
BuildRequires: python3-pillow
BuildRequires: sed
%description
unpaper is a post-processing tool for scanned sheets of paper, especially for
@ -69,137 +17,33 @@ book pages that have been scanned from previously created photocopies. The
main purpose is to make scanned book pages better readable on screen after
conversion to PDF. Additionally, unpaper might be useful to enhance the
quality of scanned pages before performing optical character recognition (OCR).
unpaper tries to clean scanned images by removing dark edges that appeared
through scanning or copying on areas outside the actual page content (e.g. dark
areas between the left-hand-side and the right-hand-side of a double-sided
book-page scan).
The program also tries to detect misaligned centering and rotation of pages
and will automatically straighten each page by rotating it to the correct
angle. This process is called "deskewing".
%package tests
Summary: Tests for %{name}
License: GPL-2.0-only AND MIT
BuildArch: noarch
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
# python3-pillow for PIL Python module
Requires: python3-pillow
Requires: python3-pytest
# Parallelize tests
Requires: python3-pytest-xdist
%description tests
Tests from %{name}. Execute them
with "%{_libexecdir}/%{name}/test".
areas between the left-hand-side and the right-hand-side of a double- sided
book-page scan). The program also tries to detect misaligned centering and
rotation of pages and will automatically straighten each page by rotating it to
the correct angle. This process is called "deskewing".
%prep
#%%{gpgverify} --keyring='%%{SOURCE2}' --signature='%%{SOURCE1}' --data='%%{SOURCE0}'
%autosetup -p1
%setup -q
%patch0 -p1
# fix eol encoding in LICENSE
sed -i -e 's/\r//' LICENSE
%build
%meson
%meson_build
%check
%meson_test
cd src
gcc $RPM_OPT_FLAGS $RPM_LD_FLAGS -o unpaper unpaper.c -lm
%install
%meson_install
# Install tests
mkdir -p %{buildroot}%{_libexecdir}/%{name}
cp -a tests %{buildroot}%{_libexecdir}/%{name}
cat > %{buildroot}%{_libexecdir}/%{name}/test << 'EOF'
#!/bin/sh
export TEST_IMGSRC_DIR=tests/source_images
export TEST_GOLDEN_DIR=tests/golden_images
export TEST_UNPAPER_BINARY=%{_bindir}/unpaper
cd %{_libexecdir}/%{name} && exec pytest -v -n "$(getconf _NPROCESSORS_ONLN)" tests/unpaper_tests.py
EOF
chmod +x %{buildroot}%{_libexecdir}/%{name}/test
%{_fixperms} %{buildroot}/*
install -d $RPM_BUILD_ROOT/%{_bindir}
install -p -m 0755 src/unpaper $RPM_BUILD_ROOT/%{_bindir}
%files
%license LICENSES/0BSD.txt LICENSES/GPL-2.0-only.txt
%{_bindir}/unpaper
%{_mandir}/man1/unpaper.*
%doc AUTHORS doc/*.md doc/img NEWS README.md
%files tests
%license LICENSES/MIT.txt
%{_libexecdir}/%{name}
%license LICENSE
%{_bindir}/*
%doc doc CHANGELOG README
%changelog
* Thu Sep 03 2026 Dominik Mierzejewski <dominik@greysector.net> - 7.0.0-18
- Rebuilt for FFmpeg 9
* Fri Jul 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.0-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.0-16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Wed Oct 15 2025 Dominik Mierzejewski <dominik@greysector.net> - 7.0.0-15
- Rebuilt for FFmpeg 8
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.0-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.0-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Mon Sep 23 2024 Fabio Valentini <decathorpe@gmail.com> - 7.0.0-12
- Rebuild for ffmpeg 7
* Mon Sep 23 2024 Petr Pisar <ppisar@redhat.com> - 7.0.0-11
- Define a license of a source package
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.0-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.0-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.0-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Sun Mar 12 2023 Neal Gompa <ngompa@fedoraproject.org> - 7.0.0-7
- Rebuild for ffmpeg 6.0
* Wed Feb 08 2023 Petr Pisar <ppisar@redhat.com> - 7.0.0-6
- Convert license tags to an SPDX format
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Mon Oct 10 2022 Petr Pisar <ppisar@redhat.com> - 7.0.0-4
- Set an update option to supress a warning with ffmpeg-5.1 (upstream #113)
* Mon Aug 29 2022 Neal Gompa <ngompa@fedoraproject.org> - 7.0.0-3
- Rebuild for ffmpeg 5.1 (#2121070)
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Tue May 31 2022 Petr Pisar <ppisar@redhat.com> - 7.0.0-1
- 7.0.0 bump
- License changed from (GPLv2) to (GPLv2 and 0BSD and MIT)
- Package the tests
* Tue Mar 08 2022 Neal Gompa <ngompa@fedoraproject.org> - 6.1^20220117.gite515408-2
- Rebuild for ffmpeg 5.0 ABI fix (#2061392)
* Fri Feb 25 2022 Petr Pisar <ppisar@redhat.com> - 6.1^20220117.gite515408-1
- 6.1 bump from upstream git tree
- License changed to GPLv2
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-27
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-26
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-25
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild