diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/29-paps.conf b/29-paps.conf new file mode 100644 index 0000000..1ae98a4 --- /dev/null +++ b/29-paps.conf @@ -0,0 +1,24 @@ + + + + + + + paps + + + true + + + + + + texttopaps + + + true + + + + + diff --git a/paps-0.6.8-ftbfs.patch b/paps-0.6.8-ftbfs.patch new file mode 100644 index 0000000..01bdb5c --- /dev/null +++ b/paps-0.6.8-ftbfs.patch @@ -0,0 +1,13 @@ +バイナリーファイル paps-0.6.8.orig/src/paps-paps.o とpaps-0.6.8/src/paps-paps.o は異なります +diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c +--- paps-0.6.8.orig/src/paps.c 2025-01-27 18:18:12.130570673 +0900 ++++ paps-0.6.8/src/paps.c 2025-01-27 18:47:05.214883811 +0900 +@@ -515,7 +515,7 @@ int main(int argc, char *argv[]) + } /* if (!cups_mode) */ + + paps = paps_new(); +- pango_context = paps_get_pango_context (paps); ++ pango_context = paps_get_pango_context (); + + /* Setup pango */ + pango_context_set_language (pango_context, get_language ()); diff --git a/paps-0.6.8-glib282.patch b/paps-0.6.8-glib282.patch new file mode 100644 index 0000000..7d3d165 --- /dev/null +++ b/paps-0.6.8-glib282.patch @@ -0,0 +1,12 @@ +diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c +--- paps-0.6.8.orig/src/paps.c 2024-09-13 21:07:13.225683344 +0900 ++++ paps-0.6.8/src/paps.c 2024-09-13 21:10:24.177041518 +0900 +@@ -784,7 +784,7 @@ split_text_into_paragraphs (PangoContext + while (p != NULL && *p) + { + wc = g_utf8_get_char (p); +- next = g_utf8_next_char (p); ++ next = (char *) g_utf8_next_char (p); + if (wc == (gunichar)-1) + { + fprintf (stderr, "%s: Invalid character in input\n", g_get_prgname ()); diff --git a/paps-854897-manpage.patch b/paps-854897-manpage.patch new file mode 100644 index 0000000..c841f44 --- /dev/null +++ b/paps-854897-manpage.patch @@ -0,0 +1,13 @@ +diff -pruN paps-0.6.8.orig/src/paps.1 paps-0.6.8/src/paps.1 +--- paps-0.6.8.orig/src/paps.1 2007-01-19 20:05:27.000000000 +0900 ++++ paps-0.6.8/src/paps.1 2012-09-06 18:04:01.000000000 +0900 +@@ -64,6 +64,9 @@ Draw page header for each page. + .B \-\-markup + Interpret the text as pango markup. + .TP ++.B \-\-encoding=ENCODING ++Assume the documentation encoding is ENCODING. ++.TP + .B \-\-lpi + Set the lines per inch. This determines the line spacing. + .TP diff --git a/paps-a3.patch b/paps-a3.patch new file mode 100644 index 0000000..3628b3a --- /dev/null +++ b/paps-a3.patch @@ -0,0 +1,40 @@ +--- paps-0.6.8/src/paps.c.orig 2015-02-26 14:17:29.351338514 +0530 ++++ paps-0.6.8/src/paps.c 2015-02-26 14:17:29.351338514 +0530 +@@ -45,7 +45,8 @@ + typedef enum { + PAPER_TYPE_A4 = 0, + PAPER_TYPE_US_LETTER = 1, +- PAPER_TYPE_US_LEGAL = 2 ++ PAPER_TYPE_US_LEGAL = 2, ++ PAPER_TYPE_A3 = 3 + } paper_type_t ; + + typedef struct { +@@ -56,7 +57,8 @@ + const paper_size_t paper_sizes[] = { + { 595.28, 841.89}, /* A4 */ + { 612, 792}, /* US letter */ +- { 612, 1008} /* US legal */ ++ { 612, 1008}, /* US legal */ ++ { 842, 1190} /* A3 */ + }; + + typedef struct { +@@ -190,6 +192,8 @@ + paper_type = PAPER_TYPE_US_LETTER; + else if (g_ascii_strcasecmp(value, "a4") == 0) + paper_type = PAPER_TYPE_A4; ++ else if (g_ascii_strcasecmp(value, "a3") == 0) ++ paper_type = PAPER_TYPE_A3; + else { + retval = FALSE; + fprintf(stderr, "Unknown page size name: %s.\n", value); +@@ -300,7 +304,7 @@ + {"rtl", 0, 0, G_OPTION_ARG_NONE, &do_rtl, "Do rtl layout.", NULL}, + {"paper", 0, 0, G_OPTION_ARG_CALLBACK, _paps_arg_paper_cb, + "Choose paper size. Known paper sizes are legal,\n" +- " letter, a4. (Default: a4)", "PAPER"}, ++ " letter, a3, a4. (Default: a4)", "PAPER"}, + {"bottom-margin", 0, 0, G_OPTION_ARG_INT, &bottom_margin, "Set bottom margin in postscript point units (1/72inch). (Default: 36)", "NUM"}, + {"top-margin", 0, 0, G_OPTION_ARG_INT, &top_margin, "Set top margin. (Default: 36)", "NUM"}, + {"right-margin", 0, 0, G_OPTION_ARG_INT, &right_margin, "Set right margin. (Default: 36)", "NUM"}, diff --git a/paps-c99.patch b/paps-c99.patch new file mode 100644 index 0000000..115043e --- /dev/null +++ b/paps-c99.patch @@ -0,0 +1,44 @@ +Use AC_USE_SYSTEM_EXTENSIONS and include , so that +makes a declaration of wcwidth available. Include +for a declaration of g_vasprintf. This avoids implicit function +declarations and build failures with future compilers. + +No need to upstream this because it only impacts the bundled 0.6.8 +sources, the later 0.8.0 version has already been fixed upstream. The +g_vasprintf call was introduced in the paps-0.6.6-lcnumeric.patch +downstream patch. + +diff -ur paps-0.8.0.orig/paps-0.6.8/configure.in paps-0.8.0/paps-0.6.8/configure.in +--- paps-0.8.0.orig/paps-0.6.8/configure.in 2023-04-13 11:56:29.571277839 +0200 ++++ paps-0.8.0/paps-0.6.8/configure.in 2023-04-13 12:00:03.228135149 +0200 +@@ -6,6 +6,7 @@ + AC_LANG_C + AC_PROG_CC + AM_PROG_LIBTOOL ++AC_USE_SYSTEM_EXTENSIONS + + dnl ====================================================== + dnl check for CUPS +diff -ur paps-0.8.0.orig/paps-0.6.8/src/paps.c paps-0.8.0/paps-0.6.8/src/paps.c +--- paps-0.8.0.orig/paps-0.6.8/src/paps.c 2023-04-13 11:56:29.583277719 +0200 ++++ paps-0.8.0/paps-0.6.8/src/paps.c 2023-04-13 12:02:28.958673663 +0200 +@@ -20,7 +20,7 @@ + * + */ + +- ++#include + #include + #include + #include "libpaps.h" +diff -ur paps-0.8.0.orig/paps-0.6.8/src/libpaps.c paps-0.8.0/paps-0.6.8/src/libpaps.c +--- paps-0.8.0.orig/paps-0.6.8/src/libpaps.c 2023-04-13 11:56:29.581277739 +0200 ++++ paps-0.8.0/paps-0.6.8/src/libpaps.c 2023-04-13 12:07:17.504779917 +0200 +@@ -23,6 +23,7 @@ + + #include "libpaps.h" + ++#include + #include + #include + #include diff --git a/paps-correct-fsf-address.patch b/paps-correct-fsf-address.patch new file mode 100644 index 0000000..5313f85 --- /dev/null +++ b/paps-correct-fsf-address.patch @@ -0,0 +1,77 @@ +diff -pruN paps-0.6.8.orig/COPYING.LIB paps-0.6.8/COPYING.LIB +--- paps-0.6.8.orig/COPYING.LIB 2005-12-21 04:35:27.000000000 +0900 ++++ paps-0.6.8/COPYING.LIB 2012-11-23 14:30:46.297512335 +0900 +@@ -1,16 +1,15 @@ +- GNU LIBRARY GENERAL PUBLIC LICENSE +- Version 2, June 1991 ++ GNU LIBRARY GENERAL PUBLIC LICENSE ++ Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. +- 59 Temple Place - Suite 330 +- Boston, MA 02111-1307, USA. ++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + [This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + +- Preamble ++ Preamble + + The licenses for most software are designed to take away your + freedom to share and change it. By contrast, the GNU General Public +@@ -100,7 +99,7 @@ works together with the library. + Note that it is possible for a library to be covered by the ordinary + General Public License rather than by this special one. + +- GNU LIBRARY GENERAL PUBLIC LICENSE ++ GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +@@ -412,7 +411,7 @@ decision will be guided by the two goals + of all derivatives of our free software and of promoting the sharing + and reuse of software generally. + +- NO WARRANTY ++ NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO + WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +@@ -435,8 +434,9 @@ FAILURE OF THE LIBRARY TO OPERATE WITH A + SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + DAMAGES. + +- END OF TERMS AND CONDITIONS +- How to Apply These Terms to Your New Libraries ++ END OF TERMS AND CONDITIONS ++ ++ How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest + possible use to the public, we recommend making it free software that +@@ -453,18 +453,18 @@ convey the exclusion of warranty; and ea + Copyright (C) + + This library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public ++ modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. ++ Library General Public License for more details. + +- You should have received a copy of the GNU Lesser General Public ++ You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free Software +- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + Also add information on how to contact you by electronic and paper mail. + diff --git a/paps-fix-build.patch b/paps-fix-build.patch new file mode 100644 index 0000000..e77f387 --- /dev/null +++ b/paps-fix-build.patch @@ -0,0 +1,85 @@ +From e2180b2e1493abc2a8d1165e10bf264d50fac0ae Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Wed, 1 Mar 2023 15:24:27 +0900 +Subject: [PATCH] Fix the build issue + +Some code ignores a return value of g_string_free() and that causes: + +ignoring return value of 'gchar* g_string_free_and_steal(GString*)' declared with attribute 'warn_unused_result' [-Wunused-result] + +This fixes it. +--- + src/paps.cc | 21 ++++++++++++--------- + 1 file changed, 12 insertions(+), 9 deletions(-) + +diff --git a/src/paps.cc b/src/paps.cc +index cb48ddc..429b764 100644 +--- a/src/paps.cc ++++ b/src/paps.cc +@@ -368,6 +368,7 @@ copy_pango_parse_enum (GType type, + { + int i; + GString *s = g_string_new (nullptr); ++ gchar *gstr; + + for (i = 0, v = g_enum_get_value (klass, i); v; + i++ , v = g_enum_get_value (klass, i)) +@@ -382,10 +383,10 @@ copy_pango_parse_enum (GType type, + G_ENUM_CLASS_TYPE_NAME(klass), + s->str); + +- if (possible_values) +- *possible_values = s->str; ++ gstr = g_string_free (s, possible_values ? false : true); + +- g_string_free (s, possible_values ? false : true); ++ if (possible_values) ++ *possible_values = gstr; + } + } + +@@ -1001,7 +1002,7 @@ read_file (FILE *file, + if (ferror (file)) + { + fprintf(stderr, _("%s: Error reading file.\n"), g_get_prgname ()); +- g_string_free (inbuf, true); ++ (void) g_string_free (inbuf, true); + exit(1); + } + else if (bp == nullptr) +@@ -1043,8 +1044,7 @@ read_file (FILE *file, + if (inbuf->len && inbuf->str[inbuf->len-1] != '\n') + g_string_append(inbuf, "\n"); + +- text = inbuf->str; +- g_string_free (inbuf, false); ++ text = g_string_free (inbuf, false); + + if (encoding != nullptr && cvh != nullptr) + g_iconv_close(cvh); +@@ -1671,7 +1671,11 @@ get_date() + fprintf(stderr, _("%1$s: Error while converting date string from '%2$s' to UTF-8.\n"), + g_get_prgname(), get_encoding()); + /* Return the unconverted string. */ +- g_string_free(inbuf, false); ++ /* ++ * inbuf isn't used here, but a few memory is ++ * allocated by default. so it should be freed anyway. ++ */ ++ (void) g_string_free(inbuf, true); + g_iconv_close(cvh); + return date; + } +@@ -1679,8 +1683,7 @@ get_date() + obuffer[BUFSIZE * 6 - 1 - oblen] = 0; + g_string_append(inbuf, bp); + +- date_utf8 = inbuf->str; +- g_string_free(inbuf, false); ++ date_utf8 = g_string_free(inbuf, false); + g_iconv_close(cvh); + } + +-- +2.39.2 + diff --git a/paps-fix-cpi.patch b/paps-fix-cpi.patch index f917296..7bc3f61 100644 --- a/paps-fix-cpi.patch +++ b/paps-fix-cpi.patch @@ -310,7 +310,7 @@ index 334d547..72dbaad 100644 + + para->length = i; + next = g_utf8_offset_to_pointer(para->text, para->length); -+ wc = g_utf8_prev_char(next); ++ wc = g_utf8_get_char(g_utf8_prev_char(next)); + } else { + pango_layout_set_text(para->layout, para->text, para->length); + } diff --git a/paps-fix-non-weak-symbol.patch b/paps-fix-non-weak-symbol.patch new file mode 100644 index 0000000..8edf596 --- /dev/null +++ b/paps-fix-non-weak-symbol.patch @@ -0,0 +1,26 @@ +diff -pruN paps-0.6.8.orig/src/Makefile.am paps-0.6.8/src/Makefile.am +--- paps-0.6.8.orig/src/Makefile.am 2012-11-23 14:22:51.506176037 +0900 ++++ paps-0.6.8/src/Makefile.am 2012-11-23 14:25:41.828410416 +0900 +@@ -8,13 +8,14 @@ bin_PROGRAMS = paps + paps_CFLAGS = -Wall $(CUPS_CFLAGS) + paps_SOURCES = paps.c + paps_LDADD = $(lib_LTLIBRARIES) $(all_libraries) +-paps_LDFLAGS = `pkg-config --libs pangoft2` $(CUPS_LIBS) ++paps_LDFLAGS = $(CUPS_LIBS) + paps_DEPENDENCIES = $(lib_LTLIBRARIES) + + EXTRA_DIST = test_libpaps.c paps.1 + + # set the include path found by configure + INCLUDES= $(all_includes) `pkg-config --cflags pangoft2` ++LIBS = `pkg-config --libs pangoft2` + + # Test program + noinst_PROGRAMS = test_libpaps +@@ -22,6 +23,5 @@ noinst_PROGRAMS = test_libpaps + + test_libpaps_SOURCES = test_libpaps.c + test_libpaps_LDADD = $(lib_LTLIBRARIES) $(all_libraries) +-test_libpaps_LDFLAGS = `pkg-config --libs pangoft2` + test_libpaps_DEPENDENCIES = $(lib_LTLIBRARIES) + diff --git a/paps-fix-paper-size-truncate.patch b/paps-fix-paper-size-truncate.patch new file mode 100644 index 0000000..90e9fcb --- /dev/null +++ b/paps-fix-paper-size-truncate.patch @@ -0,0 +1,15 @@ +diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c +--- paps-0.6.8.orig/src/paps.c 2015-04-24 11:49:53.220718394 +0900 ++++ paps-0.6.8/src/paps.c 2015-04-24 11:51:30.847718394 +0900 +@@ -532,9 +532,9 @@ int main(int argc, char *argv[]) + + /* Page layout */ + if (page_width < 0) +- page_width = paper_sizes[(int)paper_type].width; ++ page_width = (paper_sizes[(int)paper_type].width + 0.5); + if (page_height < 0) +- page_height = paper_sizes[(int)paper_type].height; ++ page_height = (paper_sizes[(int)paper_type].height + 0.5); + + if (num_columns == 1) + total_gutter_width = 0; diff --git a/paps-fix-src-to-paps.patch b/paps-fix-src-to-paps.patch new file mode 100644 index 0000000..d18f8af --- /dev/null +++ b/paps-fix-src-to-paps.patch @@ -0,0 +1,18 @@ +diff -pruN paps-0.8.0.orig/scripts/src-to-paps paps-0.8.0/scripts/src-to-paps +--- paps-0.8.0.orig/scripts/src-to-paps 2023-02-09 16:27:38.000000000 +0900 ++++ paps-0.8.0/scripts/src-to-paps 2023-03-01 15:00:27.801416563 +0900 +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + ###################################################################### + # Use GNU source-hightlight to turn source code into pango markup +@@ -49,7 +49,7 @@ def arg_if_not_none(param_name, val): + # Defaults + + # TBD - Make this a configuration variable +-pango_outlang_path = '/usr/local/share/paps/pango_markup.outlang' ++pango_outlang_path = '/usr/share/paps/pango_markup.outlang' + + parser = argparse.ArgumentParser(description='Process a file') + parser.add_argument('-o', '--output', diff --git a/paps-fix-tab-width.patch b/paps-fix-tab-width.patch new file mode 100644 index 0000000..a1011ee --- /dev/null +++ b/paps-fix-tab-width.patch @@ -0,0 +1,77 @@ +@@ -, +, @@ +--- + src/libpaps.c | 40 +++++++++++++++++++++++++++++----------- + 1 file changed, 29 insertions(+), 11 deletions(-) +--- a/src/libpaps.c ++++ a/src/libpaps.c +@@ -251,7 +251,6 @@ gchar *paps_layout_line_to_postscript_strdup(paps_t *paps_, + { + paps_private_t *paps = (paps_private_t*)paps_; + GString *layout_str = g_string_new(""); +- gchar *ret_str; + + add_line_to_postscript(paps, + layout_str, +@@ -259,10 +258,7 @@ gchar *paps_layout_line_to_postscript_strdup(paps_t *paps_, + pos_y, + layout_line); + +- ret_str = layout_str->str; +- g_string_free(layout_str, FALSE); +- +- return ret_str; ++ return g_string_free(layout_str, FALSE); + } + + static void +@@ -408,9 +404,26 @@ static void draw_contour(paps_private_t *paps, + { + GSList *runs_list; + double scale = 72.0 / PANGO_SCALE / PAPS_DPI; ++ PangoGlyphUnit avg_width = 1; + + g_string_append(layout_str, "("); +- ++ ++ if (paps->cpi > 0.0L) ++ { ++ /* calculate approximate width per a character */ ++ for (runs_list = pango_line->runs; runs_list != NULL; runs_list = g_slist_next(runs_list)) ++ { ++ PangoLayoutRun *run = runs_list->data; ++ PangoGlyphString *glyphs = run->glyphs; ++ int i; ++ ++ for (i = 0; i < glyphs->num_glyphs; i++) ++ { ++ if (glyphs->glyphs[i].glyph != PANGO_GLYPH_EMPTY) ++ avg_width = MAX (avg_width, glyphs->glyphs[i].geometry.width); ++ } ++ } ++ } + /* Loop over the runs and output font info */ + runs_list = pango_line->runs; + double x_pos = line_start_pos_x; +@@ -433,11 +446,16 @@ static void draw_contour(paps_private_t *paps, + glyph_pos_x = x_pos + 1.0*geometry.x_offset * scale; + glyph_pos_y = line_start_pos_y - 1.0*geometry.y_offset * scale; + +- if (paps->cpi > 0.0L) { +- x_pos += (1 / paps->cpi * 72.0); +- } else { +- x_pos += geometry.width * scale * paps->scale_x; +- } ++ if (paps->cpi > 0.0L) ++ { ++ double n = ((double)geometry.width) / avg_width; ++ ++ x_pos += n * (1 / paps->cpi * 72.0); ++ } ++ else ++ { ++ x_pos += geometry.width * scale * paps->scale_x; ++ } + + if (glyphs->glyphs[glyph_idx].glyph == PANGO_GLYPH_EMPTY) + continue; +-- diff --git a/paps-ft-header.patch b/paps-ft-header.patch new file mode 100644 index 0000000..f2d8a2e --- /dev/null +++ b/paps-ft-header.patch @@ -0,0 +1,15 @@ +diff -pruN paps-0.6.8.orig/src/libpaps.c paps-0.6.8/src/libpaps.c +--- paps-0.6.8.orig/src/libpaps.c 2014-03-20 12:10:50.000000000 +0900 ++++ paps-0.6.8/src/libpaps.c 2014-03-20 12:11:54.000000000 +0900 +@@ -25,8 +25,9 @@ + + #include + #include +-#include +-#include ++#include ++#include FT_GLYPH_H ++#include FT_OUTLINE_H + #include + #include + #include diff --git a/paps-glib282.patch b/paps-glib282.patch new file mode 100644 index 0000000..23bd2b4 --- /dev/null +++ b/paps-glib282.patch @@ -0,0 +1,34 @@ +g_utf8_next_char no longer includes a cast to char* as of 2.81.0: + +https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4016 + +diff -up a/src/paps.cc b/src/paps.cc +--- a/src/paps.cc 2024-09-12 19:21:02.858439427 -0400 ++++ b/src/paps.cc 2024-09-12 21:15:46.905955152 -0400 +@@ -1115,7 +1115,7 @@ split_text_into_paragraphs (PangoContext + while (p != nullptr && *p) + { + wc = g_utf8_get_char (p); +- next = g_utf8_next_char (p); ++ next = (char *) g_utf8_next_char (p); + if (wc == (gunichar)-1) + { + fprintf (stderr, _("%s: Invalid character in input\n"), g_get_prgname ()); +@@ -1130,7 +1130,7 @@ split_text_into_paragraphs (PangoContext + para->length = p - last_para; + /* handle dos line breaks */ + if (wc == '\r' && *next == '\n') +- next = g_utf8_next_char(next); ++ next = (char *) g_utf8_next_char(next); + para->layout = pango_layout_new (pango_context); + + if (page_layout->cpi > 0.0L) +@@ -1201,7 +1201,7 @@ split_text_into_paragraphs (PangoContext + g_free (newtext); + + para->length = i; +- next = g_utf8_offset_to_pointer (para->text, para->length); ++ next = (char *) g_utf8_offset_to_pointer (para->text, para->length); + wc = g_utf8_get_char (g_utf8_prev_char (next)); + } + else diff --git a/paps.spec b/paps.spec index 463cb92..2177152 100644 --- a/paps.spec +++ b/paps.spec @@ -1,13 +1,16 @@ Name: paps -Version: 0.6.8 -Release: 17%{?dist} +Version: 0.8.0 +Release: 14%{?dist} -License: LGPLv2+ -URL: http://paps.sourceforge.net/ -Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz +License: LGPL-2.0-or-later +URL: https://github.com/dov/paps +Source0: https://github.com/dov/paps/archive/v%{name}/%{name}-%{version}.tar.gz Source1: paps.convs -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: pango-devel automake autoconf libtool doxygen cups-devel +Source2: 29-paps.conf +Source3: http://downloads.sourceforge.net/%{name}/%{name}-0.6.8.tar.gz +BuildRequires: make +BuildRequires: pango-devel automake autoconf libtool doxygen cups-devel intltool +BuildRequires: fmt-devel gcc-c++ ## https://sourceforge.net/tracker/index.php?func=detail&aid=1832897&group_id=153049&atid=786241 Patch0: paps-0.6.8-shared.patch ## https://sourceforge.net/tracker/index.php?func=detail&aid=1832924&group_id=153049&atid=786241 @@ -18,99 +21,306 @@ Patch2: paps-langinfo.patch Patch3: paps-0.6.6-lcnumeric.patch ## https://sourceforge.net/tracker/index.php?func=detail&aid=1832935&group_id=153049&atid=786241 Patch4: paps-exitcode.patch +## rhbz#854897 +Patch5: paps-854897-manpage.patch +## Fedora specific patch to integrate with CUPS Patch50: paps-cups.patch Patch51: paps-cpilpi.patch +## rhbz#424951 Patch52: paps-dsc-compliant.patch Patch53: paps-autoconf262.patch +## rhbz#524883 Patch54: paps-fix-cpi.patch -Patch55: paps-fix-loop-in-split.patch +## rhbz#618483 +Patch55: paps-fix-loop-in-split.patch +## rhbz#857592 +Patch56: paps-fix-tab-width.patch +Patch57: paps-fix-non-weak-symbol.patch +Patch58: paps-correct-fsf-address.patch +## rhbz#1078519 +Patch59: %{name}-ft-header.patch +## rhbz#1196997 +Patch60: %{name}-a3.patch +## rhbz#1214939 +Patch61: %{name}-fix-paper-size-truncate.patch +Patch62: paps-c99.patch +Patch63: paps-0.6.8-glib282.patch +Patch64: paps-0.6.8-ftbfs.patch +### For paps +Patch100: %{name}-fix-src-to-paps.patch +Patch101: %{name}-fix-build.patch +Patch102: %{name}-glib282.patch Summary: Plain Text to PostScript converter -Group: Applications/Publishing %description paps is a PostScript converter from plain text file using Pango. -%package libs -Summary: Libraries for paps -Group: Development/Libraries -%description libs +%package -n texttopaps +Summary: CUPS filter based on paps +Obsoletes: %{name}-libs < %{version} +Obsoletes: %{name}-devel < %{version} +Requires: cups-filesystem fontpackages-filesystem +%description -n texttopaps + paps is a PostScript converter from plain text file using Pango. -This package contains the library for paps. +This package contains a CUPS filter based on paps. -%package devel -Summary: Development files for paps -Group: Development/Libraries -Requires: %{name}-libs = %{version}-%{release} -%description devel -paps is a PostScript converter from plain text file using Pango. - -This package contains the development files that is necessary to develop -applications using paps API. %prep -%setup -q -%patch0 -p1 -b .shared -%patch1 -p1 -b .wordwrap -%patch2 -p1 -b .langinfo -%patch3 -p1 -b .lcnumeric -%patch4 -p1 -b .exitcode -%patch50 -p1 -b .cups -%patch51 -p1 -b .cpilpi -%patch52 -p1 -b .dsc -%patch53 -p1 -b .autoconf262 -%patch54 -p1 -b .fixcpi -%patch55 -p1 -b .loop +%setup -q -a 3 +%patch 100 -p1 -b .src-to-paps +%patch 101 -p1 -b .build +%patch 102 -p1 -b .glib282 +pushd %{name}-0.6.8 +%patch 0 -p1 -b .shared +%patch 1 -p1 -b .wordwrap +%patch 2 -p1 -b .langinfo +%patch 3 -p1 -b .lcnumeric +%patch 4 -p1 -b .exitcode +%patch 5 -p1 -b .manpage +%patch 50 -p1 -b .cups +%patch 51 -p1 -b .cpilpi +%patch 52 -p1 -b .dsc +%patch 53 -p1 -b .autoconf262 +%patch 54 -p1 -b .fixcpi +%patch 55 -p1 -b .loop +%patch 56 -p1 -b .tab +%patch 57 -p1 -b .weak-symbol +%patch 58 -p1 -b .fsf +%patch 59 -p1 -b .ft-header +%patch 60 -p1 -b .a3 +%patch 61 -p1 -b .paper-size +%patch 62 -p2 -b .configure-c99 +%patch 63 -p1 -b .glib282 +%patch 64 -p1 -b .ftbfs libtoolize -f -c -autoreconf +autoreconf -f -i +popd %build +./autogen.sh +%set_build_flags +%if 0%{?rhel} +CXXFLAGS="$CXXFLAGS -DFMT_HEADER_ONLY" +%endif %configure --disable-static make %{?_smp_mflags} +pushd %{name}-0.6.8 +%configure --disable-static +make %{?_smp_mflags} +popd %install -rm -rf $RPM_BUILD_ROOT - -make install DESTDIR=$RPM_BUILD_ROOT +pushd %{name}-0.6.8 +make install DESTDIR=$RPM_BUILD_ROOT INSTALL="/usr/bin/install -p" # remove unnecessary files rm $RPM_BUILD_ROOT%{_libdir}/libpaps.la # make a symlink for CUPS filter -%{__mkdir_p} $RPM_BUILD_ROOT/usr/lib/cups/filter # Not libdir -ln -s %{_bindir}/paps $RPM_BUILD_ROOT/usr/lib/cups/filter/texttopaps +install -d $RPM_BUILD_ROOT%{_cups_serverbin}/filter # Not libdir +mv $RPM_BUILD_ROOT%{_bindir}/paps $RPM_BUILD_ROOT%{_cups_serverbin}/filter/texttopaps +mv $RPM_BUILD_ROOT%{_mandir}/man1/paps.1 $RPM_BUILD_ROOT%{_mandir}/man1/texttopaps.1 -install -d $RPM_BUILD_ROOT%{_sysconfdir}/cups -install -p -m0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/cups -%clean -rm -rf $RPM_BUILD_ROOT +install -d $RPM_BUILD_ROOT%{_datadir}/cups/mime +install -p -m0644 %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/cups/mime/ -%post libs -p /sbin/ldconfig -%postun libs -p /sbin/ldconfig +install -d $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d +install -p -m0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d/ + +rm -rf $RPM_BUILD_ROOT%{_includedir} +rm $RPM_BUILD_ROOT%{_libdir}/libpaps.so +popd + +make install DESTDIR=$RPM_BUILD_ROOT INSTALL="/usr/bin/install -p" + +%ldconfig_scriptlets libs %files -%defattr(-, root, root, -) -%doc AUTHORS COPYING.LIB README TODO +%doc AUTHORS COPYING.LIB README +%dir %{_datadir}/paps %{_bindir}/paps +%{_bindir}/src-to-paps +%{_datadir}/paps/pango_markup.outlang %{_mandir}/man1/paps.1* -/usr/lib/cups/filter/texttopaps -%dir %attr (0755, root, lp) %{_sysconfdir}/cups -%{_sysconfdir}/cups/paps.convs -%files libs -%defattr(-, root, root, -) -%doc COPYING.LIB +%files -n texttopaps +%doc %{name}-0.6.8/COPYING.LIB %{name}-0.6.8/AUTHORS %{name}-0.6.8/README +%{_mandir}/man1/texttopaps.1* %{_libdir}/libpaps.so.* +%{_cups_serverbin}/filter/texttopaps +%{_datadir}/cups/mime/paps.convs +%{_sysconfdir}/fonts/conf.d/29-paps.conf -%files devel -%defattr(-, root, root, -) -%doc COPYING.LIB -%{_includedir}/libpaps.h -%{_libdir}/libpaps.so %changelog +* Thu Jul 24 2025 Fedora Release Engineering - 0.8.0-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Mon Jan 27 2025 Akira TAGOH - 0.8.0-13 +- Fix FTBFS + Resolves: rhbz#2341001 + +* Fri Jan 17 2025 Fedora Release Engineering - 0.8.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Sep 13 2024 Akira TAGOH - 0.8.0-11 +- Fix build with glib 2.82 + Patch from Yaakov Selkowitz + +* Thu Jul 18 2024 Fedora Release Engineering - 0.8.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jun 7 2024 Akira TAGOH - 0.8.0-9 +- Own /usr/share/paps + Resolves: rhbz#2283284 + +* Thu Jan 25 2024 Fedora Release Engineering - 0.8.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 0.8.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jan 17 2024 Akira TAGOH - 0.8.0-6 +- Fix C type error in paps 0.6.8. + Resolves: rhbz#2256906 + +* Mon Aug 14 2023 Yaakov Selkowitz - 0.8.0-5 +- Use fmt in header-only mode in RHEL builds + +* Thu Jul 20 2023 Fedora Release Engineering - 0.8.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jun 28 2023 Vitaly Zaitsev - 0.8.0-3 +- Rebuilt due to fmt 10 update. + +* Thu Apr 13 2023 Florian Weimer - 0.8.0-2 +- C99 compatibility fixes for paps 0.6.8 + +* Wed Mar 1 2023 Akira TAGOH - 0.8.0-1 +- New upstream release. + Resolves: rhbz#2168726 + +* Tue Feb 7 2023 Akira TAGOH - 0.7.9-1 +- New upstream release. + Resolves: rhbz#2164212 + +* Thu Jan 19 2023 Fedora Release Engineering - 0.7.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Dec 5 2022 Akira TAGOH - 0.7.1-6 +- Convert License tag to SPDX. + +* Fri Jul 22 2022 Fedora Release Engineering - 0.7.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jan 20 2022 Fedora Release Engineering - 0.7.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jul 22 2021 Fedora Release Engineering - 0.7.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jan 26 2021 Fedora Release Engineering - 0.7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Oct 8 2020 Akira TAGOH - 0.7.1-1 +- New upstream release. + Resolves: rhbz#1254352 +- Sub-package texttopaps with old code. + +* Tue Jul 28 2020 Fedora Release Engineering - 0.6.8-46 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jan 29 2020 Fedora Release Engineering - 0.6.8-45 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jul 26 2019 Fedora Release Engineering - 0.6.8-44 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 0.6.8-43 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 0.6.8-42 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Feb 08 2018 Fedora Release Engineering - 0.6.8-41 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Jan 20 2018 Björn Esser - 0.6.8-40 +- Rebuilt for switch to libxcrypt + +* Thu Aug 03 2017 Fedora Release Engineering - 0.6.8-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 0.6.8-38 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 0.6.8-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 0.6.8-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jun 18 2015 Fedora Release Engineering - 0.6.8-35 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Apr 24 2015 Akira TAGOH - 0.6.8-34 +- Fix wrong paper size due to the integer cast. + +* Mon Mar 2 2015 Akira TAGOH - 0.6.8-33 +- Support A3 paper size. + +* Sat Feb 21 2015 Till Maas - 0.6.8-32 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Fri Oct 31 2014 Akira TAGOH - 0.6.8-31 +- Add a fontconfig config to force the scalable font. + +* Sun Aug 17 2014 Fedora Release Engineering - 0.6.8-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Jun 06 2014 Fedora Release Engineering - 0.6.8-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Mar 20 2014 Akira TAGOH - 0.6.8-28 +- Fix FTBFS against freetype's header files location change. (#1078519) + +* Mon Dec 16 2013 Akira TAGOH - 0.6.8-27 +- Move the place of paps.convs to %%{_datadir}/cups/mime. (#1042984) + +* Wed Jul 31 2013 Akira TAGOH - 0.6.8-26 +- Fix the width calculation with CPI enabled. (#990228) + +* Thu Apr 18 2013 Akira TAGOH - 0.6.8-25 +- Rebuilt for aarch64 support. (#926309) + +* Thu Feb 14 2013 Fedora Release Engineering - 0.6.8-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Fri Nov 23 2012 Akira TAGOH - 0.6.8-23 +- the spec file cleanup +- Fix the undefined symbol issue in libpaps.so.0 +- Correct FSF address in the COPYING.LIB + +* Mon Sep 24 2012 Akira TAGOH - 0.6.8-22 +- Ensure the latest version of paps-libs are installed. + +* Fri Sep 21 2012 Akira TAGOH - 0.6.8-21 +- Fix wrong width for whitespaces when enabling CPI feature. (#857592) + +* Thu Sep 6 2012 Akira TAGOH - 0.6.8-20 +- Add a missing description of --encoding in manpage. (#854897) + +* Fri Jul 20 2012 Fedora Release Engineering - 0.6.8-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jan 11 2012 Akira TAGOH - 0.6.8-18 +- Use %%{_cups_serverbin} instead of the hardcoded path. (#772240) + * Mon Dec 5 2011 Akira TAGOH - 0.6.8-17 - Add ldconfig in %%post/%%postun for paps-libs (#759880) @@ -195,7 +405,7 @@ rm -rf $RPM_BUILD_ROOT - Fix PostScript breakage following the non-monetary numeric format from current locale. (#231916) -* Thu Mar 7 2007 Akira TAGOH - 0.6.6-18 +* Wed Mar 7 2007 Akira TAGOH - 0.6.6-18 - default to lpi=6 and cpi=10 if paps is bringing up as cups filter. (#223862) * Tue Jan 23 2007 Akira TAGOH diff --git a/plans/basic.fmf b/plans/basic.fmf new file mode 100644 index 0000000..c1627f9 --- /dev/null +++ b/plans/basic.fmf @@ -0,0 +1,5 @@ +summary: Basic smoke test +discover: + how: fmf +execute: + how: tmt diff --git a/sources b/sources index a9fd861..fcb89c4 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -e9508132bf27609bf2fded2bfd9cb3f1 paps-0.6.8.tar.gz +SHA512 (paps-0.6.8.tar.gz) = db657d90179e11fe42bbcdbebe09a84f1927c99d0b539c9e29b66b3cb8ffcf33ff500c9d81835ae5a0880382bf8f24801f04742517b76b8e005b125a139d8bba +SHA512 (paps-0.8.0.tar.gz) = 33afad0e3dae9cef0fb3afb9994650bf1a7326e72782346e05ab91f7c84f092145247658cdf57868105df47a1bd08e1a961c1ef4c07a2a8fd01eaf8ecd9d948a diff --git a/tests/basic/main.fmf b/tests/basic/main.fmf new file mode 100644 index 0000000..d9d7de5 --- /dev/null +++ b/tests/basic/main.fmf @@ -0,0 +1,5 @@ +summary: Basic test +require: + - paps +test: ./test.sh +framework: beakerlib diff --git a/tests/basic/test.sh b/tests/basic/test.sh new file mode 100755 index 0000000..e07c777 --- /dev/null +++ b/tests/basic/test.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartSetup + rlRun "tmp=\$(mktemp -d)" 0 "Create tmp directory" + rlRun "pushd $tmp" + rlRun "set -o pipefail" + rlPhaseEnd + + rlPhaseStartTest + rlRun "paps --help | tee output" 0 "Check help message" + rlAssertGrep "paps" "output" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $tmp" 0 "Remove tmp directory" + rlPhaseEnd +rlJournalEnd