diff --git a/.gitignore b/.gitignore index 108f7be..b40ef00 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ -/texinfo-6.8.tar.xz -/texinfo-6.8.tar.xz.sig +/texinfo-7.1.1.tar.xz +/texinfo-7.1.1.tar.xz.sig +/texinfo-7.2.tar.xz +/texinfo-7.2.tar.xz.sig diff --git a/fix-info-dir b/fix-info-dir new file mode 100755 index 0000000..0659552 --- /dev/null +++ b/fix-info-dir @@ -0,0 +1,316 @@ +#!/bin/sh +#fix-info-dir (GNU texinfo) +VERSION=1.1 +#Copyright (C) 1998, 2003 Free Software Foundation, Inc. +#fix-info-dir comes with NO WARRANTY, to the extent permitted by law. +#You may redistribute copies of fix-info-dir +#under the terms of the GNU General Public License. +#For more information about these matters, see the files named COPYING." +#fix-info-dir was derived from update-info and gen-dir-node +# The skeleton file contains info topic names in the +# order they should appear in the output. There are three special +# lines that alter the behavior: a line consisting of just "--" causes +# the next line to be echoed verbatim to the output. A line +# containing just "%%" causes all the remaining filenames (wildcards +# allowed) in the rest of the file to be ignored. A line containing +# just "!!" exits the script when reached (unless preceded by a line +# containing just "--"). +#Author: Richard L. Hawes, rhawes@dmapub.dma.org. + +# ###SECTION 1### Constants +set -h 2>/dev/null +# ENVIRONMENT +if test -z "$TMPDIR"; then + TMPDIR="/usr/tmp" +fi +if test -z "$LINENO"; then + LINENO="0" +fi + +MENU_BEGIN='^\*\([ ]\)\{1,\}Menu:' +MENU_FILTER1='s/^\*\([ ]\)\{1,\}/* /' +MENU_FILTER2='s/\([ ]\)\{1,\}$//g' + +TMP_FILE1="${TMPDIR}/fx${$}.info" +TMP_FILE2="${TMPDIR}/fy${$}.info" +TMP_FILE_LIST="$TMP_FILE1 $TMP_FILE2" + +TRY_HELP_MSG="Try --help for more information" + +# ###SECTION 100### main program +#variables set by options +CREATE_NODE="" +DEBUG=":" +MODE="" +# +Total="0" +Changed="" + +while test "$*"; do + case "$1" in + -c|--create) CREATE_NODE="y";; + --debug) set -eux; DEBUG="set>&2";; + -d|--delete) MODE="Detect_Invalid";; + +d);; + --version) +cat<&2 + echo "$TRY_HELP_MSG">&2 + exit 2;; + *) break;; + esac + shift +done + +ORIGINAL_DIR=`pwd` + +if test "$#" -gt "0"; then + INFO_DIR="$1" + shift +else + INFO_DIR=$DEFAULT_INFO_DIR +fi + +if test ! -d "${INFO_DIR}"; then + DIR_FILE=`basename ${INFO_DIR}`; + INFO_DIR=`dirname ${INFO_DIR}`; +else + DIR_FILE="dir" +fi + +cd "$INFO_DIR"||exit + + +if test "$CREATE_NODE"; then + if test "$#" -gt "0"; then + if test `expr $1 : /` = '1'; then + SKELETON="$1" + else + SKELETON="$ORIGINAL_DIR/$1" + fi + if test ! -r "$SKELETON" && test -f "$SKELETON"; then + echo "$0:$LINENO: $SKELETON is not readable">&2 + exit 2 + fi + shift + else + SKELETON=/dev/null + + fi +else + if test ! -f "$DIR_FILE"; then + echo "$0:$LINENO: $DIR_FILE is irregular or nonexistant">&2 + exit 2 + elif test ! -r "$DIR_FILE"; then + echo "$0:$LINENO: $DIR_FILE is not readable">&2 + exit 2 + elif test ! -w "$DIR_FILE"; then + echo "$0:$LINENO: $DIR_FILE is not writeable">&2 + exit 2 + fi +fi + +if test "$#" -gt "0"; then + echo "$0:$LINENO: Too many parameters">&2 + echo "$TRY_HELP_MSG">&2 + exit 2 +fi + +if test -f "$DIR_FILE"; then + cp "$DIR_FILE" "$DIR_FILE.old" + echo "Backed up $DIR_FILE to $DIR_FILE.old." +fi + +if test "$CREATE_NODE"; then + if test "$MODE"; then + echo "$0:$LINENO: ERROR: Illogical option combination: -d -c">&2 + echo "$TRY_HELP_MSG">&2 + exit 2 + fi + echo "Creating new Info Node: `pwd`/$DIR_FILE" + Changed="y" + +{ + + ### output the dir header + echo "-*- Text -*-" + echo "This file was generated automatically by $0." + echo "This version was generated on `date`" + echo "by `whoami`@`hostname` for `pwd`" + + cat<" visits the Emacs topic, etc. + + In Emacs, you can click mouse button 2 on a menu item or cross reference + to select it. + +* Menu: The list of major topics begins on the next line. + +DIR_FILE_END_OF_FILE + +### go through the list of files in the skeleton. If an info file +### exists, grab the ENTRY information from it. If an entry exists +### use it, otherwise create a minimal $DIR_FILE entry. + + # Read one line from the file. This is so that we can echo lines with + # whitespace and quoted characters in them. + while read fileline; do + # flag fancy features + if test ! -z "$echoline"; then # echo line + echo "$fileline" + echoline="" + continue + elif test "${fileline}" = "--"; then + # echo the next line + echoline="1" + continue + elif test "${fileline}" = "%%"; then + # skip remaining files listed in skeleton file + skip="1" + continue + elif test "${fileline}" = "!!"; then + # quit now + break + fi + + # handle files if they exist + for file in $fileline""; do + fname= + if test -z "$file"; then + break + fi + # Find the file to operate upon. + if test -r "$file"; then + fname="$file" + elif test -r "${file}.info"; then + fname="${file}.info" + elif test -r "${file}.gz"; then + fname="${file}.gz" + elif test -r "${file}.info.gz"; then + fname="${file}.info.gz" + else + echo "$0:$LINENO: can't find info file for ${file}?">&2 + continue + fi + + # if we found something and aren't skipping, do the entry + if test "$skip"; then + continue + fi + + infoname=`echo $file|sed -e 's/.info$//'` + entry=`zcat -f $fname|\ + sed -e '1,/START-INFO-DIR-ENTRY/d'\ + -e '/END-INFO-DIR-ENTRY/,$d'` + if [ ! -z "${entry}" ]; then + echo "${entry}" + else + echo "* ${infoname}: (${infoname})." + fi + Total=`expr "$Total" + "1"` + done + done +}>$DIR_FILE<$SKELETON +fi + +trap ' eval "$DEBUG"; rm -f $TMP_FILE_LIST; exit ' 0 +trap ' rm -f $TMP_FILE_LIST + exit ' 1 +trap ' rm -f $TMP_FILE_LIST + echo "$0:$LINENO: received INT signal.">&2 + exit ' 2 +trap ' rm -f $TMP_FILE_LIST + echo "$0:$LINENO: received QUIT signal.">&2 + exit ' 3 + +sed -e "1,/$MENU_BEGIN/d" -e "$MENU_FILTER1" -e "$MENU_FILTER2"<$DIR_FILE\ +|sed -n -e '/\* /{ +s/).*$//g +s/\.gz$// +s/\.info$// +s/^.*(//p +}'|sort -u>$TMP_FILE1 +ls -F|sed -e '/\/$/d' -e '/[-.][0-9]/d'\ + -e "/^$DIR_FILE\$/d" -e "/^$DIR_FILE.old\$/d"\ + -e 's/[*@]$//' -e 's/\.gz$//' -e 's/\.info$//'|sort>$TMP_FILE2 + +if test -z "$MODE"; then + #Detect Missing + DONE_MSG="total menu item(s) were inserted into `pwd`/$DIR_FILE" + for Info_Name in `comm -13 $TMP_FILE1 $TMP_FILE2`; do + if test -r "$Info_Name"; then + Info_File="$Info_Name" + elif test -r "${Info_Name}.info"; then + Info_File="${Info_Name}.info" + elif test -r "${Info_Name}.gz"; then + Info_File="${Info_Name}.gz" + elif test -r "${Info_Name}.info.gz"; then + Info_File="${Info_Name}.info.gz" + else + echo "$0:$LINENO: can't find info file for ${Info_Name}?">&2 + continue + fi + Changed="y" + if install-info $Info_File $DIR_FILE; then + Total=`expr "$Total" + "1"` + fi + done +else + # Detect Invalid + DONE_MSG="total invalid menu item(s) were removed from `pwd`/$DIR_FILE" + for Info_Name in `comm -23 $TMP_FILE1 $TMP_FILE2`; do + Changed="y" + if install-info --remove $Info_Name $DIR_FILE; then + Total=`expr "$Total" + "1"` + fi + done +fi + +# print summary +if test "$Changed"; then + echo "$Total $DONE_MSG" +else + echo "Nothing to do" +fi +rm -f $TMP_FILE_LIST +eval "$DEBUG" +exit 0 diff --git a/sources b/sources index 8653407..aa3d69e 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (texinfo-6.8.tar.xz) = 0ff9290b14e4d83e32b889cfa24e6d065f98b2a764daf6b92c6c895fddbb35258398da6257c113220d5a4d886f7b54b09c4b117ca5eacfee6797f9bffde0f909 -SHA512 (texinfo-6.8.tar.xz.sig) = 3b41ddf6b5a04c7f5fe1b4708a76f96b042cc3da0c786a2858d16c3db62d5506cc56e66199f69df92a6f039d42a8d670455f24f4c94056a9c0f500dfad51fabf +SHA512 (texinfo-7.2.tar.xz) = 8e67337ae12a552fc620c43725507a4978710ea6630e98b0f5e98eb3f79a90e191dde5225699aa6217c26f171d277461f76150f0459cd07b40c3234d2f3d89bf +SHA512 (texinfo-7.2.tar.xz.sig) = fcb5bcf655e16f8994b33242516cff7f5dc6684555c889fee4a4e5b01cbc9c8163d6ea5c77722b2bb8d6f65120650de4daff027bee135d1c29f82316211d8fb4 diff --git a/texinfo-6.0-disable-failing-info-test.patch b/texinfo-6.0-disable-failing-info-test.patch deleted file mode 100644 index 5a8b72a..0000000 --- a/texinfo-6.0-disable-failing-info-test.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff -up texinfo-6.5.92/install-info/tests/Makefile.in.orig texinfo-6.5.92/install-info/tests/Makefile.in ---- texinfo-6.5.92/install-info/tests/Makefile.in.orig 2019-02-01 16:16:49.000000000 +0100 -+++ texinfo-6.5.92/install-info/tests/Makefile.in 2019-02-18 10:33:52.078877104 +0100 -@@ -1229,8 +1229,8 @@ ii-0021-test ii-0022-test ii-0023-test i - ii-0026-test ii-0027-test ii-0028-test ii-0029-test ii-0030-test \ - ii-0031-test ii-0032-test ii-0033-test ii-0034-test ii-0035-test \ - ii-0036-test ii-0037-test ii-0038-test ii-0039-test ii-0040-test \ --ii-0041-test ii-0042-test ii-0043-test ii-0044-test ii-0045-test \ --ii-0046-test ii-0047-test ii-0048-test ii-0049-test ii-0050-test \ -+ii-0042-test ii-0043-test ii-0044-test ii-0045-test \ -+ii-0046-test ii-0047-test ii-0048-test ii-0049-test \ - ii-0051-test ii-0052-test ii-0053-test ii-0054-test ii-0055-test \ - ii-0056-test ii-0057-test - -diff -up texinfo-6.5.92/tp/tests/Makefile.in.orig texinfo-6.5.92/tp/tests/Makefile.in ---- texinfo-6.5.92/tp/tests/Makefile.in.orig 2019-02-01 16:16:50.000000000 +0100 -+++ texinfo-6.5.92/tp/tests/Makefile.in 2019-02-18 10:33:13.774827269 +0100 -@@ -1374,7 +1374,6 @@ one_test_files_generated_list = \ - test_scripts/layout_formatting_html32.sh \ - test_scripts/layout_formatting_regions.sh \ - test_scripts/layout_formatting_exotic.sh \ -- test_scripts/layout_formatting_fr_icons.sh \ - test_scripts/layout_formatting_chm.sh \ - test_scripts/layout_formatting_nodes.sh \ - test_scripts/layout_formatting.sh \ diff --git a/texinfo-6.1-install-info-use-create-tmp-then-rename-pattern.patch b/texinfo-6.1-install-info-use-create-tmp-then-rename-pattern.patch deleted file mode 100644 index ab8e072..0000000 --- a/texinfo-6.1-install-info-use-create-tmp-then-rename-pattern.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -up texinfo-6.1/install-info/install-info.c.orig texinfo-6.1/install-info/install-info.c ---- texinfo-6.1/install-info/install-info.c.orig 2016-06-22 09:49:38.766013018 +0200 -+++ texinfo-6.1/install-info/install-info.c 2016-06-22 14:11:58.673780736 +0200 -@@ -973,18 +973,23 @@ output_dirfile (char *dirfile, int dir_n - int n_entries_added = 0; - int i; - FILE *output; -+ char *dirfile_tmp = NULL; -+ -+ asprintf (&dirfile_tmp, "%s.tmp", dirfile); -+ if (!dirfile_tmp) -+ xalloc_die (); - - if (compression_program) - { -- char *command = concat (compression_program, ">", dirfile); -+ char *command = concat (compression_program, ">", dirfile_tmp); - output = popen (command, "w"); - } - else -- output = fopen (dirfile, "w"); -+ output = fopen (dirfile_tmp, "w"); - - if (!output) - { -- perror (dirfile); -+ perror (dirfile_tmp); - exit (EXIT_FAILURE); - } - -@@ -1095,6 +1100,13 @@ output_dirfile (char *dirfile, int dir_n - pclose (output); - else - fclose (output); -+ -+ if (rename (dirfile_tmp, dirfile) < 0) -+ { -+ perror (dirfile_tmp); -+ exit (EXIT_FAILURE); -+ } -+ free (dirfile_tmp); - } - - /* Read through the input LINES, to find the section names and the diff --git a/texinfo-6.5-covscan-fixes.patch b/texinfo-6.5-covscan-fixes.patch deleted file mode 100644 index 63e5167..0000000 --- a/texinfo-6.5-covscan-fixes.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff -up texinfo-6.7.90/info/infomap.c.orig texinfo-6.7.90/info/infomap.c ---- texinfo-6.7.90/info/infomap.c.orig 2019-12-01 12:26:46.000000000 +0100 -+++ texinfo-6.7.90/info/infomap.c 2021-02-24 12:56:06.865568572 +0100 -@@ -589,6 +589,7 @@ fetch_user_maps (char *init_file) - compile (inf, filename, &sup_info, &sup_ea); - - free (filename); -+ fclose (inf); - return 1; - } - -diff -up texinfo-6.7.90/info/variables.c.orig texinfo-6.7.90/info/variables.c ---- texinfo-6.7.90/info/variables.c.orig 2021-02-24 13:00:21.056060523 +0100 -+++ texinfo-6.7.90/info/variables.c 2021-02-24 13:36:27.089318922 +0100 -@@ -359,6 +359,7 @@ read_variable_name (char *prompt, WINDOW - { - char *line; - REFERENCE **variables; -+ VARIABLE_ALIST *alist; - - /* Get the completion array of variable names. */ - variables = make_variable_completions_array (); -@@ -382,7 +383,9 @@ read_variable_name (char *prompt, WINDOW - return NULL; - } - -- return variable_by_name (line); -+ alist = variable_by_name (line); -+ free (line); -+ return alist; - } - - /* Make an array of REFERENCE which actually contains the names of the -diff -up texinfo-6.7.90/install-info/install-info.c.orig texinfo-6.7.90/install-info/install-info.c ---- texinfo-6.7.90/install-info/install-info.c.orig 2021-02-24 13:36:42.839472560 +0100 -+++ texinfo-6.7.90/install-info/install-info.c 2021-02-24 13:41:36.219280631 +0100 -@@ -1717,6 +1728,8 @@ reformat_new_entries (struct spec_entry - - format_entry (name, name_len, desc, desc_len, calign, align, - maxwidth, &entry->text, &entry->text_len); -+ free (desc); -+ free (name); - } - } - diff --git a/texinfo-6.7-zstd-compression.patch b/texinfo-6.7-zstd-compression.patch new file mode 100644 index 0000000..a08a454 --- /dev/null +++ b/texinfo-6.7-zstd-compression.patch @@ -0,0 +1,69 @@ +diff -up texinfo-6.7/info/filesys.c.omv~ texinfo-6.7/info/filesys.c +--- texinfo-6.7/info/filesys.c.omv~ 2020-01-05 02:24:32.094858726 +0100 ++++ texinfo-6.7/info/filesys.c 2020-01-05 02:25:59.789854472 +0100 +@@ -58,9 +58,11 @@ static COMPRESSION_ALIST compress_suffix + #if STRIP_DOT_EXE + { ".gz", "gunzip" }, + { ".lz", "lunzip" }, ++ { ".zst", "unzstd" }, + #else + { ".gz", "gzip -d" }, + { ".lz", "lzip -d" }, ++ { ".zst", "zstd -d" }, + #endif + { ".xz", "unxz" }, + { ".bz2", "bunzip2" }, +diff -up texinfo-6.7/install-info/install-info.c.omv~ texinfo-6.7/install-info/install-info.c +--- texinfo-6.7/install-info/install-info.c.omv~ 2020-01-05 02:20:38.837870043 +0100 ++++ texinfo-6.7/install-info/install-info.c 2020-01-05 02:24:03.029860136 +0100 +@@ -451,6 +451,16 @@ strip_info_suffix (char *fname) + len -= 4; + ret[len] = 0; + } ++ else if (len > 4 && FILENAME_CMP (ret + len - 4, ".zst") == 0) ++ { ++ len -= 4; ++ ret[len] = 0; ++ } ++ else if (len > 5 && FILENAME_CMP (ret + len - 5, ".zstd") == 0) ++ { ++ len -= 5; ++ ret[len] = 0; ++ } + #ifdef __MSDOS__ + else if (len > 4 && (FILENAME_CMP (ret + len - 4, ".inz") == 0 + || FILENAME_CMP (ret + len - 4, ".igz") == 0)) +@@ -727,6 +737,18 @@ open_possibly_compressed_file (char *fil + *opened_filename = concat (filename, ".lzma", ""); + f = fopen (*opened_filename, FOPEN_RBIN); + } ++ if (!f) ++ { ++ free (*opened_filename); ++ *opened_filename = concat (filename, ".zst", ""); ++ f = fopen (*opened_filename, FOPEN_RBIN); ++ } ++ if (!f) ++ { ++ free (*opened_filename); ++ *opened_filename = concat (filename, ".zstd", ""); ++ f = fopen (*opened_filename, FOPEN_RBIN); ++ } + #ifdef __MSDOS__ + if (!f) + { +@@ -850,6 +872,14 @@ determine_file_type: + *compression_program = "lzma"; + #endif + ++ else if (data[0] == 0x28 && data[1] == 0xb5 && data[2] == 0x2f ++ && data[3] == 0xfd) ++#ifndef STRIP_DOT_EXE ++ *compression_program = "zstd.exe"; ++#else ++ *compression_program = "zstd"; ++#endif ++ + else + *compression_program = NULL; + diff --git a/texinfo-6.8-undo-gnulib-nonnul.patch b/texinfo-6.8-undo-gnulib-nonnul.patch deleted file mode 100644 index ef60038..0000000 --- a/texinfo-6.8-undo-gnulib-nonnul.patch +++ /dev/null @@ -1,182 +0,0 @@ -diff -up texinfo-6.8/gnulib/lib/cdefs.h.orig texinfo-6.8/gnulib/lib/cdefs.h ---- texinfo-6.8/gnulib/lib/cdefs.h.orig 2021-03-11 19:57:53.000000000 +0100 -+++ texinfo-6.8/gnulib/lib/cdefs.h 2021-07-19 12:26:46.985176475 +0200 -@@ -321,15 +321,15 @@ - - /* The nonnull function attribute marks pointer parameters that - must not be NULL. */ --#ifndef __attribute_nonnull__ -+#ifndef __nonnull - # if __GNUC_PREREQ (3,3) || __glibc_has_attribute (__nonnull__) --# define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params)) -+# define __nonnull(params) __attribute__ ((__nonnull__ params)) - # else --# define __attribute_nonnull__(params) -+# define __nonnull(params) - # endif --#endif --#ifndef __nonnull --# define __nonnull(params) __attribute_nonnull__ (params) -+#elif !defined __GLIBC__ -+# undef __nonnull -+# define __nonnull(params) _GL_ATTRIBUTE_NONNULL (params) - #endif - - /* If fortification mode, we warn about unused results of certain -diff -up texinfo-6.8/gnulib/lib/libc-config.h.orig texinfo-6.8/gnulib/lib/libc-config.h ---- texinfo-6.8/gnulib/lib/libc-config.h.orig 2021-03-11 19:57:54.000000000 +0100 -+++ texinfo-6.8/gnulib/lib/libc-config.h 2021-07-19 12:27:58.810590975 +0200 -@@ -33,9 +33,9 @@ - #include - - /* On glibc this includes and and #defines -- _FEATURES_H, __WORDSIZE, and __set_errno. On FreeBSD 11 and -- DragonFlyBSD 5.9 it includes which defines __nonnull. -- Elsewhere it is harmless. */ -+ _FEATURES_H, __WORDSIZE, and __set_errno. On FreeBSD 11 it -+ includes which defines __nonnull. Elsewhere it -+ is harmless. */ - #include - - /* From glibc . */ -diff -up texinfo-6.8/gnulib/lib/malloc/dynarray-skeleton.c.orig texinfo-6.8/gnulib/lib/malloc/dynarray-skeleton.c ---- texinfo-6.8/gnulib/lib/malloc/dynarray-skeleton.c.orig 2021-03-11 19:57:54.000000000 +0100 -+++ texinfo-6.8/gnulib/lib/malloc/dynarray-skeleton.c 2021-07-19 12:24:46.878419397 +0200 -@@ -192,7 +192,7 @@ DYNARRAY_NAME (free__array__) (struct DY - - /* Initialize a dynamic array object. This must be called before any - use of the object. */ --__attribute_nonnull__ ((1)) -+__nonnull ((1)) - static void - DYNARRAY_NAME (init) (struct DYNARRAY_STRUCT *list) - { -@@ -202,7 +202,7 @@ DYNARRAY_NAME (init) (struct DYNARRAY_ST - } - - /* Deallocate the dynamic array and its elements. */ --__attribute_maybe_unused__ __attribute_nonnull__ ((1)) -+__attribute_maybe_unused__ __nonnull ((1)) - static void - DYNARRAY_FREE (struct DYNARRAY_STRUCT *list) - { -@@ -213,7 +213,7 @@ DYNARRAY_FREE (struct DYNARRAY_STRUCT *l - } - - /* Return true if the dynamic array is in an error state. */ --__attribute_nonnull__ ((1)) -+__nonnull ((1)) - static inline bool - DYNARRAY_NAME (has_failed) (const struct DYNARRAY_STRUCT *list) - { -@@ -222,7 +222,7 @@ DYNARRAY_NAME (has_failed) (const struct - - /* Mark the dynamic array as failed. All elements are deallocated as - a side effect. */ --__attribute_nonnull__ ((1)) -+__nonnull ((1)) - static void - DYNARRAY_NAME (mark_failed) (struct DYNARRAY_STRUCT *list) - { -@@ -236,7 +236,7 @@ DYNARRAY_NAME (mark_failed) (struct DYNA - - /* Return the number of elements which have been added to the dynamic - array. */ --__attribute_nonnull__ ((1)) -+__nonnull ((1)) - static inline size_t - DYNARRAY_NAME (size) (const struct DYNARRAY_STRUCT *list) - { -@@ -245,7 +245,7 @@ DYNARRAY_NAME (size) (const struct DYNAR - - /* Return a pointer to the array element at INDEX. Terminate the - process if INDEX is out of bounds. */ --__attribute_nonnull__ ((1)) -+__nonnull ((1)) - static inline DYNARRAY_ELEMENT * - DYNARRAY_NAME (at) (struct DYNARRAY_STRUCT *list, size_t index) - { -@@ -257,7 +257,7 @@ DYNARRAY_NAME (at) (struct DYNARRAY_STRU - /* Return a pointer to the first array element, if any. For a - zero-length array, the pointer can be NULL even though the dynamic - array has not entered the failure state. */ --__attribute_nonnull__ ((1)) -+__nonnull ((1)) - static inline DYNARRAY_ELEMENT * - DYNARRAY_NAME (begin) (struct DYNARRAY_STRUCT *list) - { -@@ -267,7 +267,7 @@ DYNARRAY_NAME (begin) (struct DYNARRAY_S - /* Return a pointer one element past the last array element. For a - zero-length array, the pointer can be NULL even though the dynamic - array has not entered the failure state. */ --__attribute_nonnull__ ((1)) -+__nonnull ((1)) - static inline DYNARRAY_ELEMENT * - DYNARRAY_NAME (end) (struct DYNARRAY_STRUCT *list) - { -@@ -294,7 +294,7 @@ DYNARRAY_NAME (add__) (struct DYNARRAY_S - /* Add ITEM at the end of the array, enlarging it by one element. - Mark *LIST as failed if the dynamic array allocation size cannot be - increased. */ --__attribute_nonnull__ ((1)) -+__nonnull ((1)) - static inline void - DYNARRAY_NAME (add) (struct DYNARRAY_STRUCT *list, DYNARRAY_ELEMENT item) - { -@@ -348,8 +348,7 @@ DYNARRAY_NAME (emplace__) (struct DYNARR - /* Allocate a place for a new element in *LIST and return a pointer to - it. The pointer can be NULL if the dynamic array cannot be - enlarged due to a memory allocation failure. */ --__attribute_maybe_unused__ __attribute_warn_unused_result__ --__attribute_nonnull__ ((1)) -+__attribute_maybe_unused__ __attribute_warn_unused_result__ __nonnull ((1)) - static - /* Avoid inlining with the larger initialization code. */ - #if !(defined (DYNARRAY_ELEMENT_INIT) || defined (DYNARRAY_ELEMENT_FREE)) -@@ -373,7 +372,7 @@ DYNARRAY_NAME (emplace) (struct DYNARRAY - existing size, new elements are added (which can be initialized). - Otherwise, the list is truncated, and elements are freed. Return - false on memory allocation failure (and mark *LIST as failed). */ --__attribute_maybe_unused__ __attribute_nonnull__ ((1)) -+__attribute_maybe_unused__ __nonnull ((1)) - static bool - DYNARRAY_NAME (resize) (struct DYNARRAY_STRUCT *list, size_t size) - { -@@ -418,7 +417,7 @@ DYNARRAY_NAME (resize) (struct DYNARRAY_ - } - - /* Remove the last element of LIST if it is present. */ --__attribute_maybe_unused__ __attribute_nonnull__ ((1)) -+__attribute_maybe_unused__ __nonnull ((1)) - static void - DYNARRAY_NAME (remove_last) (struct DYNARRAY_STRUCT *list) - { -@@ -435,7 +434,7 @@ DYNARRAY_NAME (remove_last) (struct DYNA - - /* Remove all elements from the list. The elements are freed, but the - list itself is not. */ --__attribute_maybe_unused__ __attribute_nonnull__ ((1)) -+__attribute_maybe_unused__ __nonnull ((1)) - static void - DYNARRAY_NAME (clear) (struct DYNARRAY_STRUCT *list) - { -@@ -453,8 +452,7 @@ DYNARRAY_NAME (clear) (struct DYNARRAY_S - stored in *RESULT if LIST refers to an empty list. On success, the - pointer in *RESULT is heap-allocated and must be deallocated using - free. */ --__attribute_maybe_unused__ __attribute_warn_unused_result__ --__attribute_nonnull__ ((1, 2)) -+__attribute_maybe_unused__ __attribute_warn_unused_result__ __nonnull ((1, 2)) - static bool - DYNARRAY_NAME (finalize) (struct DYNARRAY_STRUCT *list, - DYNARRAY_FINAL_TYPE *result) -@@ -485,8 +483,7 @@ DYNARRAY_NAME (finalize) (struct DYNARRA - have a sentinel at the end). If LENGTHP is not NULL, the array - length is written to *LENGTHP. *LIST is re-initialized and can be - reused. */ --__attribute_maybe_unused__ __attribute_warn_unused_result__ --__attribute_nonnull__ ((1)) -+__attribute_maybe_unused__ __attribute_warn_unused_result__ __nonnull ((1)) - static DYNARRAY_ELEMENT * - DYNARRAY_NAME (finalize) (struct DYNARRAY_STRUCT *list, size_t *lengthp) - { diff --git a/texinfo-7.1-make-tainted-data-safe.patch b/texinfo-7.1-make-tainted-data-safe.patch new file mode 100644 index 0000000..aafae60 --- /dev/null +++ b/texinfo-7.1-make-tainted-data-safe.patch @@ -0,0 +1,12 @@ +diff -up texinfo-7.1/info/makedoc.c.orig texinfo-7.1/info/makedoc.c +--- texinfo-7.1/info/makedoc.c.orig 2023-08-14 20:53:20.000000000 +0200 ++++ texinfo-7.1/info/makedoc.c 2024-10-09 10:13:13.476369921 +0200 +@@ -296,7 +296,7 @@ process_one_file (char *filename, FILE * + char *func, *doc; + char *func_name; + +- for (; offset < (file_size - decl_len); offset++) ++ for (; offset < (file_size - decl_len) && offset < (LONG_MAX - decl_len); offset++) + { + if (buffer[offset] == '\n') + { diff --git a/texinfo-7.1-various-sast-fixes.patch b/texinfo-7.1-various-sast-fixes.patch new file mode 100644 index 0000000..77c912b --- /dev/null +++ b/texinfo-7.1-various-sast-fixes.patch @@ -0,0 +1,26 @@ +diff -up texinfo-7.1.90/info/infokey.c.orig texinfo-7.1.90/info/infokey.c +--- texinfo-7.1.90/info/infokey.c.orig 2024-10-21 14:26:11.000000000 +0200 ++++ texinfo-7.1.90/info/infokey.c 2024-11-07 12:55:41.197343929 +0100 +@@ -208,7 +208,7 @@ compile (FILE *fp, const char *filename, + int oval = 0; + char comment[10]; + unsigned int clen = 0; +- int seq[20]; ++ int seq[20] = { 0 }; + unsigned int slen = 0; + char act[80]; + unsigned int alen = 0; +diff -up texinfo-7.1.90/info/session.c.orig texinfo-7.1.90/info/session.c +--- texinfo-7.1.90/info/session.c.orig 2024-10-21 14:26:11.000000000 +0200 ++++ texinfo-7.1.90/info/session.c 2024-11-07 12:59:30.401861317 +0100 +@@ -2941,7 +2941,7 @@ DECLARE_INFO_COMMAND (info_menu_sequence + static int + info_handle_pointer (const char *label, WINDOW *window) + { +- char *description; ++ char *description = NULL; + NODE *node; + + if (!strcmp (label, "Up")) +diff -up texinfo-7.1.90/info/util.c.orig texinfo-7.1.90/info/util.c +diff -up texinfo-7.1.90/install-info/install-info.c.orig texinfo-7.1.90/install-info/install-info.c diff --git a/texinfo-7.2-fix-perl-precedence-warnings.patch b/texinfo-7.2-fix-perl-precedence-warnings.patch new file mode 100644 index 0000000..e2a29cb --- /dev/null +++ b/texinfo-7.2-fix-perl-precedence-warnings.patch @@ -0,0 +1,24 @@ +diff -up texinfo-7.2/tp/Texinfo/Convert/Converter.pm.orig texinfo-7.2/tp/Texinfo/Convert/Converter.pm +--- texinfo-7.2/tp/Texinfo/Convert/Converter.pm.orig 2024-12-19 19:31:42.000000000 +0100 ++++ texinfo-7.2/tp/Texinfo/Convert/Converter.pm 2025-08-01 10:31:55.845929864 +0200 +@@ -386,7 +386,7 @@ sub output_tree($$) + + my $fh; + my $encoded_output_file; +- if (! $output_file eq '') { ++ if ($output_file ne '') { + my $path_encoding; + ($encoded_output_file, $path_encoding) + = $self->encoded_output_file_name($output_file); +diff -up texinfo-7.2/tp/Texinfo/Convert/LaTeX.pm.orig texinfo-7.2/tp/Texinfo/Convert/LaTeX.pm +--- texinfo-7.2/tp/Texinfo/Convert/LaTeX.pm.orig 2024-12-19 19:31:42.000000000 +0100 ++++ texinfo-7.2/tp/Texinfo/Convert/LaTeX.pm 2025-08-01 10:32:57.790836873 +0200 +@@ -1085,7 +1085,7 @@ sub output($$) + + my $fh; + my $encoded_output_file; +- if (! $output_file eq '') { ++ if ($output_file ne '') { + my $path_encoding; + ($encoded_output_file, $path_encoding) + = $self->encoded_output_file_name($output_file); diff --git a/texinfo.spec b/texinfo.spec index 8e315b6..719db85 100644 --- a/texinfo.spec +++ b/texinfo.spec @@ -2,25 +2,25 @@ Summary: Tools needed to create Texinfo format documentation files Name: texinfo -Version: 6.8 -Release: 2%{?dist} -License: GPLv3+ +Version: 7.2 +Release: 7%{?dist} +License: GPL-3.0-or-later Url: http://www.gnu.org/software/texinfo/ Source0: ftp://ftp.gnu.org/gnu/texinfo/texinfo-%{version}.tar.xz Source1: ftp://ftp.gnu.org/gnu/texinfo/texinfo-%{version}.tar.xz.sig -# Patch0: this is needed just for koji/mock, all tests pass fine in local build -Patch0: texinfo-6.0-disable-failing-info-test.patch -# Patch1: rhbz#1348671, because of OSTree -Patch1: texinfo-6.1-install-info-use-create-tmp-then-rename-pattern.patch -# Patch2: we need to fix template fix-info-dir generates -Patch2: info-6.5-sync-fix-info-dir.patch -# Patch3: rhbz#1592433, bug in fix-info-dir --delete -Patch3: texinfo-6.5-fix-info-dir.patch +Source2: fix-info-dir +# Patch0: we need to fix template fix-info-dir generates +Patch0: info-6.5-sync-fix-info-dir.patch +# Patch1: rhbz#1592433, bug in fix-info-dir --delete +Patch1: texinfo-6.5-fix-info-dir.patch +# Patch3: fixes issues detected by static analysis +Patch3: texinfo-7.1-various-sast-fixes.patch # Patch4: fixes issues detected by static analysis -Patch4: texinfo-6.5-covscan-fixes.patch -# Patch5: undos change done in gnulib that causes build to fail -# https://lists.gnu.org/r/bug-gnulib/2021-03/msg00066.html -Patch5: texinfo-6.8-undo-gnulib-nonnul.patch +Patch4: texinfo-7.1-make-tainted-data-safe.patch +# Patch5: fixes Perl precedence warnings (already upstream) +Patch5: texinfo-7.2-fix-perl-precedence-warnings.patch +# Patch6: add support for zstd compression +Patch6: texinfo-6.7-zstd-compression.patch BuildRequires: make BuildRequires: gcc @@ -55,6 +55,8 @@ browser program for viewing texinfo files. Summary: Tools for formatting Texinfo documentation files using TeX Requires: texinfo = %{version}-%{release} Requires: tex(tex) tex(epsf.tex) +Requires: /usr/bin/cmp +Requires: /usr/bin/diff Requires(post): %{_bindir}/texconfig-sys Requires(postun): %{_bindir}/texconfig-sys Provides: tex-texinfo @@ -70,7 +72,10 @@ The texinfo-tex package provides tools to format Texinfo documents for printing using TeX. %prep -%autosetup -p1 +%setup -q +mkdir contrib +install -Dpm0755 -t contrib %{SOURCE2} +%autopatch -p1 %build %configure --with-external-Text-Unidecode \ @@ -80,15 +85,10 @@ for printing using TeX. %make_build %install -mkdir -p ${RPM_BUILD_ROOT}/sbin - %make_install -mkdir -p $RPM_BUILD_ROOT%{tex_texinfo} -install -p -m644 doc/texinfo.tex doc/txi-??.tex $RPM_BUILD_ROOT%{tex_texinfo} - -mkdir -p $RPM_BUILD_ROOT%{_sbindir} -mv $RPM_BUILD_ROOT%{_bindir}/install-info $RPM_BUILD_ROOT%{_sbindir} +mkdir -p %{buildroot}%{tex_texinfo} +install -p -m644 doc/texinfo.tex doc/txi-??.tex %{buildroot}%{tex_texinfo} install -Dpm0755 -t %{buildroot}%{_sbindir} contrib/fix-info-dir @@ -119,7 +119,10 @@ export ALL_TESTS=yes %{_bindir}/texi2any %{_bindir}/pod2texi %{_datadir}/texinfo +%{_datadir}/texi2any %{_infodir}/texinfo* +%{_infodir}/texi2any_api.info* +%{_infodir}/texi2any_internals.info* %{_mandir}/man1/makeinfo.1* %{_mandir}/man5/texinfo.5* %{_mandir}/man1/texi2any.1* @@ -149,6 +152,83 @@ export ALL_TESTS=yes %{_mandir}/man1/pdftexi2dvi.1* %changelog +* Sat Nov 29 2025 Neal Gompa - 7.2-7 +- Add patch to support zstd compressed info pages + +* Fri Aug 01 2025 Vitezslav Crhonek - 7.2-6 +- Fix FTBFS (Perl precedence warnings) + Resolves: #2385687 + +* Fri Jul 25 2025 Fedora Release Engineering - 7.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed Jun 25 2025 Vitezslav Crhonek - 7.2-4 +- Fix texi2dvi missing dependencies + Resolves: #2374602 + +* Tue Jan 21 2025 Vitezslav Crhonek - 7.2-3 +- Changes related to bin and sbin unify + +* Sun Jan 19 2025 Fedora Release Engineering - 7.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Mon Jan 13 2025 Vitezslav Crhonek - 7.2-1 +- Update to texinfo-7.2 + Resolves: #2333829 + +* Tue Oct 15 2024 Vitezslav Crhonek - 7.1.1-2 +- Another batch of fixes for issues detected by static analysis + +* Mon Sep 09 2024 Vitezslav Crhonek - 7.1.1-1 +- Update to texinfo-7.1.1 + Resolves: #2310652 + +* Sat Jul 20 2024 Fedora Release Engineering - 7.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Jan 27 2024 Fedora Release Engineering - 7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Tue Oct 24 2023 Vitezslav Crhonek - 7.1-1 +- Update to texinfo-7.1 + Resolves: #2244846 + +* Sat Jul 22 2023 Fedora Release Engineering - 7.0.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed May 31 2023 Vitezslav Crhonek - 7.0.3-2 +- SPDX migration + +* Thu Mar 30 2023 Vitezslav Crhonek - 7.0.3-1 +- Update to texinfo-7.0.3 + Resolves: #2181837 + +* Wed Feb 22 2023 Vitezslav Crhonek - 7.0.2-2 +- Fix possible use of an undefined value as an ARRAY reference in ParserNonXS.pm + (causes FTBFS of a2ps) + Resolves: #2171433 + +* Mon Jan 23 2023 Vitezslav Crhonek - 7.0.2-1 +- Update to texinfo-7.0.2 + Resolves: #2162979 + +* Sat Jan 21 2023 Fedora Release Engineering - 7.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Dec 01 2022 Vitezslav Crhonek - 7.0.1-1 +- Update to texinfo-7.0.1 + Resolves: #2149772 + +* Fri Nov 18 2022 Vitezslav Crhonek - 7.0-1 +- Update to texinfo-7.0 + Resolves: #2140872 + +* Sat Jul 23 2022 Fedora Release Engineering - 6.8-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sat Jan 22 2022 Fedora Release Engineering - 6.8-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Fri Jul 23 2021 Fedora Release Engineering - 6.8-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild