Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
OBS:Server:Unstable
update-alternatives
ubuntu-zstd-support.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ubuntu-zstd-support.patch of Package update-alternatives
diff -urN dpkg-1.20.9/config.h.in dpkg-1.20.9ubuntu1/config.h.in --- dpkg-1.20.9/config.h.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/config.h.in 2021-04-14 12:32:22.000000000 +0200 @@ -380,6 +380,9 @@ /* Define to 1 to use z library rather than console tool */ #undef WITH_LIBZ +/* Define to 1 to use zstd library rather than console tool */ +#undef WITH_LIBZSTD + /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD diff -urN dpkg-1.20.9/configure dpkg-1.20.9ubuntu1/configure --- dpkg-1.20.9/configure 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/configure 2021-04-14 12:32:22.000000000 +0200 @@ -741,6 +741,7 @@ PKG_CONFIG LZMA_LIBS BZ2_LIBS +ZSTD_LIBS Z_LIBS HAVE_LIBMD_MD5_FALSE HAVE_LIBMD_MD5_TRUE @@ -959,6 +960,7 @@ enable_largefile with_libmd with_libz +with_libzstd with_libbz2 with_liblzma with_libselinux @@ -991,6 +993,7 @@ POD2MAN MD_LIBS Z_LIBS +ZSTD_LIBS BZ2_LIBS LZMA_LIBS PKG_CONFIG @@ -1686,6 +1689,7 @@ change default dpkg-deb build compressor --with-libmd use libmd library for message digest functions --with-libz use z library for compression and decompression + --with-libzstd use zstd library for compression and decompression --with-libbz2 use bz2 library for compression and decompression --with-liblzma use lzma library for compression and decompression --with-libselinux use selinux library to set security contexts @@ -1712,6 +1716,7 @@ POD2MAN pod2man program MD_LIBS linker flags for md library Z_LIBS linker flags for z library + ZSTD_LIBS linker flags for zstd library BZ2_LIBS linker flags for bz2 library LZMA_LIBS linker flags for lzma library PKG_CONFIG path to pkg-config utility @@ -21919,6 +21924,106 @@ +# Check whether --with-libzstd was given. +if test "${with_libzstd+set}" = set; then : + withval=$with_libzstd; +else + with_libzstd=check +fi + + have_libzstd="no" + if test "x$with_libzstd" != "xno"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZSTD_decompressStream in -lzstd" >&5 +$as_echo_n "checking for ZSTD_decompressStream in -lzstd... " >&6; } +if ${ac_cv_lib_zstd_ZSTD_decompressStream+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lzstd $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ZSTD_decompressStream (); +int +main () +{ +return ZSTD_decompressStream (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_zstd_ZSTD_decompressStream=yes +else + ac_cv_lib_zstd_ZSTD_decompressStream=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zstd_ZSTD_decompressStream" >&5 +$as_echo "$ac_cv_lib_zstd_ZSTD_decompressStream" >&6; } +if test "x$ac_cv_lib_zstd_ZSTD_decompressStream" = xyes; then : + + ac_fn_c_check_header_mongrel "$LINENO" "zstd.h" "ac_cv_header_zstd_h" "$ac_includes_default" +if test "x$ac_cv_header_zstd_h" = xyes; then : + + have_libzstd="yes" + +fi + + + +fi + + + if test "x$with_libzstd" != "xno"; then : + + if test "x$have_libzstd" = "xyes"; then : + + +$as_echo "#define WITH_LIBZSTD 1" >>confdefs.h + + if test "x$with_libzstd" = "xstatic"; then : + + dpkg_zstd_libs="-Wl,-Bstatic -lzstd -Wl,-Bdynamic" + +else + + dpkg_zstd_libs="-lzstd" + +fi + ZSTD_LIBS="${ZSTD_LIBS:+$ZSTD_LIBS }$dpkg_zstd_libs" + +else + + if test "x$with_libzstd" != "xcheck"; then : + + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "libzstd library or header not found +See \`config.log' for more details" "$LINENO" 5; } + +fi + +fi + +fi + +fi + + + + + + # Check whether --with-libbz2 was given. if test "${with_libbz2+set}" = set; then : withval=$with_libbz2; @@ -30344,6 +30449,7 @@ libselinux . . . . . . . . . : $have_libselinux libmd . . . . . . . . . . . . : $have_libmd libz . . . . . . . . . . . . : $have_libz + libzstd . . . . . . . . . . : $have_libzstd liblzma . . . . . . . . . . . : $have_liblzma libbz2 . . . . . . . . . . . : $have_libbz2 libcurses . . . . . . . . . . : ${have_libcurses:-no} diff -urN dpkg-1.20.9/configure.ac dpkg-1.20.9ubuntu1/configure.ac --- dpkg-1.20.9/configure.ac 2021-01-30 07:09:02.000000000 +0100 +++ dpkg-1.20.9ubuntu1/configure.ac 2021-06-14 16:04:10.000000000 +0200 @@ -66,7 +66,7 @@ [system logging directory [LOCALSTATEDIR/log]]) # Set default dpkg-deb values -DPKG_DEB_COMPRESSOR([xz]) +DPKG_DEB_COMPRESSOR([zstd]) DPKG_DEB_PROG_TAR # Checks for programs. @@ -88,6 +88,7 @@ # Checks for libraries. DPKG_LIB_MD DPKG_LIB_Z +DPKG_LIB_ZSTD DPKG_LIB_BZ2 DPKG_LIB_LZMA DPKG_LIB_SELINUX @@ -279,6 +280,7 @@ libselinux . . . . . . . . . : $have_libselinux libmd . . . . . . . . . . . . : $have_libmd libz . . . . . . . . . . . . : $have_libz + libzstd . . . . . . . . . . : $have_libzstd liblzma . . . . . . . . . . . : $have_liblzma libbz2 . . . . . . . . . . . : $have_libbz2 libcurses . . . . . . . . . . : ${have_libcurses:-no} diff -urN dpkg-1.20.9/dpkg-deb/extract.c dpkg-1.20.9ubuntu1/dpkg-deb/extract.c --- dpkg-1.20.9/dpkg-deb/extract.c 2021-02-15 00:03:29.000000000 +0100 +++ dpkg-1.20.9ubuntu1/dpkg-deb/extract.c 2021-04-14 12:32:22.000000000 +0200 @@ -180,6 +180,7 @@ decompressor = compressor_find_by_extension(extension); if (decompressor != COMPRESSOR_TYPE_NONE && decompressor != COMPRESSOR_TYPE_GZIP && + decompressor != COMPRESSOR_TYPE_ZSTD && decompressor != COMPRESSOR_TYPE_XZ) ohshit(_("archive '%s' uses unknown compression for member '%.*s', " "giving up"), diff -urN dpkg-1.20.9/dpkg-deb/main.c dpkg-1.20.9ubuntu1/dpkg-deb/main.c --- dpkg-1.20.9/dpkg-deb/main.c 2021-01-30 07:09:02.000000000 +0100 +++ dpkg-1.20.9ubuntu1/dpkg-deb/main.c 2021-04-14 12:32:22.000000000 +0200 @@ -108,7 +108,7 @@ " --[no-]uniform-compression Use the compression params on all members.\n" " -z# Set the compression level when building.\n" " -Z<type> Set the compression type used when building.\n" -" Allowed types: gzip, xz, none.\n" +" Allowed types: gzip, xz, zstd, none.\n" " -S<strategy> Set the compression strategy when building.\n" " Allowed values: none; extreme (xz);\n" " filtered, huffman, rle, fixed (gzip).\n" @@ -245,6 +245,7 @@ if (opt_uniform_compression && (compress_params.type != COMPRESSOR_TYPE_NONE && compress_params.type != COMPRESSOR_TYPE_GZIP && + compress_params.type != COMPRESSOR_TYPE_ZSTD && compress_params.type != COMPRESSOR_TYPE_XZ)) badusage(_("unsupported compression type '%s' with uniform compression"), compressor_get_name(compress_params.type)); diff -urN dpkg-1.20.9/dpkg-deb/Makefile.am dpkg-1.20.9ubuntu1/dpkg-deb/Makefile.am --- dpkg-1.20.9/dpkg-deb/Makefile.am 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/dpkg-deb/Makefile.am 2021-04-14 12:32:22.000000000 +0200 @@ -21,5 +21,6 @@ ../lib/dpkg/libdpkg.la \ $(LIBINTL) \ $(Z_LIBS) \ + $(ZSTD_LIBS) \ $(LZMA_LIBS) \ $(BZ2_LIBS) diff -urN dpkg-1.20.9/dpkg-deb/Makefile.in dpkg-1.20.9ubuntu1/dpkg-deb/Makefile.in --- dpkg-1.20.9/dpkg-deb/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/dpkg-deb/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -122,7 +122,7 @@ am__DEPENDENCIES_1 = dpkg_deb_DEPENDENCIES = ../lib/dpkg/libdpkg.la $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent @@ -313,6 +313,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -389,6 +390,7 @@ ../lib/dpkg/libdpkg.la \ $(LIBINTL) \ $(Z_LIBS) \ + $(ZSTD_LIBS) \ $(LZMA_LIBS) \ $(BZ2_LIBS) diff -urN dpkg-1.20.9/dpkg-split/Makefile.in dpkg-1.20.9ubuntu1/dpkg-split/Makefile.in --- dpkg-1.20.9/dpkg-split/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/dpkg-split/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -311,6 +311,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/dselect/Makefile.in dpkg-1.20.9ubuntu1/dselect/Makefile.in --- dpkg-1.20.9/dselect/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/dselect/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -385,6 +385,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/dselect/methods/Makefile.in dpkg-1.20.9ubuntu1/dselect/methods/Makefile.in --- dpkg-1.20.9/dselect/methods/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/dselect/methods/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -290,6 +290,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/lib/compat/Makefile.in dpkg-1.20.9ubuntu1/lib/compat/Makefile.in --- dpkg-1.20.9/lib/compat/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/lib/compat/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -391,6 +391,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/lib/dpkg/compress.c dpkg-1.20.9ubuntu1/lib/dpkg/compress.c --- dpkg-1.20.9/lib/dpkg/compress.c 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/lib/dpkg/compress.c 2021-04-14 12:32:22.000000000 +0200 @@ -32,6 +32,9 @@ #ifdef WITH_LIBZ #include <zlib.h> #endif +#ifdef WITH_LIBZSTD +#include <zstd.h> +#endif #ifdef WITH_LIBLZMA #include <lzma.h> #endif @@ -47,7 +50,7 @@ #include <dpkg/buffer.h> #include <dpkg/command.h> #include <dpkg/compress.h> -#if !defined(WITH_LIBZ) || !defined(WITH_LIBLZMA) || !defined(WITH_LIBBZ2) +#if !defined(WITH_LIBZ) || !defined(WITH_LIBZSTD) || !defined(WITH_LIBLZMA) || !defined(WITH_LIBBZ2) #include <dpkg/subproc.h> static void DPKG_ATTR_SENTINEL @@ -764,6 +767,157 @@ }; /* + * Zstd compressor. + */ + +#define ZSTD "zstd" + +#ifdef WITH_LIBZSTD + +static void +decompress_zstd(int fd_in, int fd_out, const char *desc) +{ + size_t const buf_in_size = ZSTD_DStreamInSize(); + void* const buf_in = m_malloc(buf_in_size); + size_t const buf_out_size = ZSTD_DStreamOutSize(); + void* const buf_out = m_malloc(buf_out_size); + size_t init_result, just_read, to_read; + ZSTD_DStream* const dstream = ZSTD_createDStream(); + if (dstream == NULL) { + ohshit(_("ZSTD_createDStream error creating stream")); + } + + init_result = ZSTD_initDStream(dstream); + if (ZSTD_isError(init_result)) { + ohshit(_("ZSTD_initDStream error : %s"), ZSTD_getErrorName(init_result)); + } + to_read = init_result; + while ((just_read = fd_read(fd_in, buf_in, to_read))) { + ZSTD_inBuffer input = { buf_in, just_read, 0 }; + while (input.pos < input.size) { + size_t actualwrite; + ZSTD_outBuffer output = { buf_out, buf_out_size, 0 }; + to_read = ZSTD_decompressStream(dstream, &output , &input); + if (ZSTD_isError(to_read)) { + ohshit(_("ZSTD_decompressStream error : %s \n"), + ZSTD_getErrorName(to_read)); + } + actualwrite = fd_write(fd_out, output.dst, output.pos); + if (actualwrite != output.pos) { + const char *errmsg = strerror(errno); + ohshite(_("%s: internal zstd write error: '%s'"), desc, errmsg); + } + /* possible next frame */ + if (to_read == 0) { + init_result = ZSTD_initDStream(dstream); + if (ZSTD_isError(init_result)) { + ohshit(_("ZSTD_initDStream error : %s"), ZSTD_getErrorName(init_result)); + } + to_read = init_result; + } + } + } + + ZSTD_freeDStream(dstream); + free(buf_in); + free(buf_out); + if (close(fd_out)) + ohshite(_("%s: internal zstd write error"), desc); +} + +static void +compress_zstd(int fd_in, int fd_out, struct compress_params *params, const char *desc) +{ + size_t const buf_in_size = ZSTD_CStreamInSize(); + void* const buf_in = m_malloc(buf_in_size); + size_t const buf_out_size = ZSTD_CStreamOutSize(); + void* const buf_out = m_malloc(buf_out_size); + size_t init_result, end_res; + size_t just_read, to_read; + ZSTD_CStream* const cstream = ZSTD_createCStream(); + if (cstream == NULL) { + ohshit(_("ZSTD_createCStream error")); + } + + init_result = ZSTD_initCStream(cstream, params->level); + if (ZSTD_isError(init_result)) { + ohshit(_("ZSTD_initCStream error : %s"), ZSTD_getErrorName(init_result)); + } + to_read = buf_in_size; + while ((just_read = fd_read(fd_in, buf_in, to_read))) { + ZSTD_inBuffer input = { buf_in, just_read, 0 }; + while (input.pos < input.size) { + size_t actualwrite; + ZSTD_outBuffer output = { buf_out, buf_out_size, 0 }; + to_read = ZSTD_compressStream(cstream, &output , &input); + if (ZSTD_isError(to_read)) { + ohshit(_("ZSTD_decompressStream error : %s \n"), + ZSTD_getErrorName(to_read)); + } + actualwrite = fd_write(fd_out, output.dst, output.pos); + if (actualwrite != output.pos) { + const char *errmsg = strerror(errno); + ohshite(_("%s: internal zstd write error: '%s'"), + desc, errmsg); + } + } + } + do { + size_t actualwrite; + ZSTD_outBuffer output = { buf_out, buf_out_size, 0 }; + end_res = ZSTD_endStream(cstream, &output); + if (ZSTD_isError(end_res)) { + ohshit(_("ZSTD_endStream error : %s \n"), + ZSTD_getErrorName(end_res)); + } + actualwrite = fd_write(fd_out, output.dst, output.pos); + if (actualwrite != output.pos) { + const char *errmsg = strerror(errno); + ohshite(_("%s: internal zstd write error: '%s'"), desc, + errmsg); + } + } while (end_res > 0); + + ZSTD_freeCStream(cstream); + free(buf_in); + free(buf_out); + + /* ZSTD_endStream() already flushed the output buffers */ + if (close(fd_out)) + ohshite(_("%s: internal zstd write error"), desc); +} + +#else +static const char *env_zstd[] = {}; + +static void +decompress_zstd(int fd_in, int fd_out, const char *desc) +{ + fd_fd_filter(fd_in, fd_out, desc, env_zstd, ZSTD, "-dcq", NULL); +} + +static void +compress_zstd(int fd_in, int fd_out, struct compress_params *params, const char *desc) +{ + char combuf[6]; + + snprintf(combuf, sizeof(combuf), "-c%d", params->level); + fd_fd_filter(fd_in, fd_out, desc, env_zstd, ZSTD, combuf, "-q", NULL); +} +#endif + +static const struct compressor compressor_zstd = { + .name = "zstd", + .extension = ".zst", + /* zstd commands's default is 3 but the aim is to be closer to xz's + * default compression efficiency */ + .default_level = 19, + .fixup_params = fixup_none_params, + .compress = compress_zstd, + .decompress = decompress_zstd, +}; + +/* * Generic compressor filter. */ @@ -773,6 +927,7 @@ [COMPRESSOR_TYPE_XZ] = &compressor_xz, [COMPRESSOR_TYPE_BZIP2] = &compressor_bzip2, [COMPRESSOR_TYPE_LZMA] = &compressor_lzma, + [COMPRESSOR_TYPE_ZSTD] = &compressor_zstd, }; static const struct compressor * diff -urN dpkg-1.20.9/lib/dpkg/compress.h dpkg-1.20.9ubuntu1/lib/dpkg/compress.h --- dpkg-1.20.9/lib/dpkg/compress.h 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/lib/dpkg/compress.h 2021-04-14 12:32:22.000000000 +0200 @@ -42,6 +42,7 @@ COMPRESSOR_TYPE_XZ, COMPRESSOR_TYPE_BZIP2, COMPRESSOR_TYPE_LZMA, + COMPRESSOR_TYPE_ZSTD, }; enum compressor_strategy { diff -urN dpkg-1.20.9/lib/dpkg/Makefile.in dpkg-1.20.9ubuntu1/lib/dpkg/Makefile.in --- dpkg-1.20.9/lib/dpkg/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/lib/dpkg/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -446,6 +446,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/lib/dpkg/parse.c dpkg-1.20.9ubuntu1/lib/dpkg/parse.c --- dpkg-1.20.9/lib/dpkg/parse.c 2021-03-02 03:15:25.000000000 +0100 +++ dpkg-1.20.9ubuntu1/lib/dpkg/parse.c 2021-04-14 12:32:22.000000000 +0200 @@ -319,7 +319,8 @@ if (pkg->status == PKG_STAT_NOTINSTALLED) return; - if (pkgbin->multiarch == PKG_MULTIARCH_SAME) + // mvo: consider stat_configfiles multiarch to prevent LP: #1015567 + if (pkgbin->multiarch == PKG_MULTIARCH_SAME || pkg->status == PKG_STAT_CONFIGFILES) count->multi++; else count->single++; diff -urN dpkg-1.20.9/lib/dpkg/pkg-spec.c dpkg-1.20.9ubuntu1/lib/dpkg/pkg-spec.c --- dpkg-1.20.9/lib/dpkg/pkg-spec.c 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/lib/dpkg/pkg-spec.c 2021-04-14 12:32:22.000000000 +0200 @@ -102,10 +102,7 @@ /* Single instancing only applies with no architecture. */ if (ps->arch->type == DPKG_ARCH_NONE && pkgset_installed_instances(set) > 1) { - snprintf(msg, sizeof(msg), - _("ambiguous package name '%s' with more " - "than one installed instance"), ps->name); - return msg; + ps->arch = dpkg_arch_get(DPKG_ARCH_NATIVE); } } diff -urN dpkg-1.20.9/lib/dpkg/t/Makefile.in dpkg-1.20.9ubuntu1/lib/dpkg/t/Makefile.in --- dpkg-1.20.9/lib/dpkg/t/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/lib/dpkg/t/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -556,6 +556,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/lib/Makefile.in dpkg-1.20.9ubuntu1/lib/Makefile.in --- dpkg-1.20.9/lib/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/lib/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -315,6 +315,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/m4/codeset.m4 dpkg-1.20.9ubuntu1/m4/codeset.m4 --- dpkg-1.20.9/m4/codeset.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/codeset.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,24 @@ +# codeset.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <langinfo.h>]], + [[char* cs = nl_langinfo(CODESET); return !cs;]])], + [am_cv_langinfo_codeset=yes], + [am_cv_langinfo_codeset=no]) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE([HAVE_LANGINFO_CODESET], [1], + [Define if you have <langinfo.h> and nl_langinfo(CODESET).]) + fi +]) diff -urN dpkg-1.20.9/m4/dpkg-build.m4 dpkg-1.20.9ubuntu1/m4/dpkg-build.m4 --- dpkg-1.20.9/m4/dpkg-build.m4 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/dpkg-build.m4 2021-06-14 16:04:10.000000000 +0200 @@ -78,7 +78,7 @@ [change default dpkg-deb build compressor])], [with_dpkg_deb_compressor=$withval], [with_dpkg_deb_compressor=$1]) AS_CASE([$with_dpkg_deb_compressor], - [gzip|xz], [:], + [gzip|xz|zstd], [:], [AC_MSG_ERROR([unsupported default compressor $with_dpkg_deb_compressor])]) AC_DEFINE_UNQUOTED([DPKG_DEB_DEFAULT_COMPRESSOR], [COMPRESSOR_TYPE_]AS_TR_CPP(${with_dpkg_deb_compressor}), diff -urN dpkg-1.20.9/m4/dpkg-libs.m4 dpkg-1.20.9ubuntu1/m4/dpkg-libs.m4 --- dpkg-1.20.9/m4/dpkg-libs.m4 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/dpkg-libs.m4 2021-04-14 12:32:22.000000000 +0200 @@ -75,6 +75,13 @@ DPKG_WITH_COMPRESS_LIB([z], [zlib.h], [gzdopen]) ])# DPKG_LIB_Z +# DPKG_LIB_ZSTD +# ------------- +# Check for zstd library. +AC_DEFUN([DPKG_LIB_ZSTD], [ + DPKG_WITH_COMPRESS_LIB([zstd], [zstd.h], [ZSTD_decompressStream]) +])# DPKG_LIB_ZSTD + # DPKG_LIB_LZMA # ------------- # Check for lzma library. diff -urN dpkg-1.20.9/m4/extern-inline.m4 dpkg-1.20.9ubuntu1/m4/extern-inline.m4 --- dpkg-1.20.9/m4/extern-inline.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/extern-inline.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,102 @@ +dnl 'extern inline' a la ISO C99. + +dnl Copyright 2012-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_EXTERN_INLINE], +[ + AH_VERBATIM([extern_inline], +[/* Please see the Gnulib manual for how to use these macros. + + Suppress extern inline with HP-UX cc, as it appears to be broken; see + <http://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>. + + Suppress extern inline with Sun C in standards-conformance mode, as it + mishandles inline functions that call each other. E.g., for 'inline void f + (void) { } inline void g (void) { f (); }', c99 incorrectly complains + 'reference to static identifier "f" in extern inline function'. + This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. + + Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) + on configurations that mistakenly use 'static inline' to implement + functions or macros in standard C headers like <ctype.h>. For example, + if isdigit is mistakenly implemented via a static inline function, + a program containing an extern inline function that calls isdigit + may not work since the C standard prohibits extern inline functions + from calling static functions. This bug is known to occur on: + + OS X 10.8 and earlier; see: + http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html + + DragonFly; see + http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log + + FreeBSD; see: + http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00104.html + + OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and + for clang but remains for g++; see <http://trac.macports.org/ticket/41033>. + Assume DragonFly and FreeBSD will be similar. */ +#if (((defined __APPLE__ && defined __MACH__) \ + || defined __DragonFly__ || defined __FreeBSD__) \ + && (defined __header_inline \ + ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ + && ! defined __clang__) \ + : ((! defined _DONT_USE_CTYPE_INLINE_ \ + && (defined __GNUC__ || defined __cplusplus)) \ + || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ + && defined __GNUC__ && ! defined __cplusplus)))) +# define _GL_EXTERN_INLINE_STDHEADER_BUG +#endif +#if ((__GNUC__ \ + ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + : (199901L <= __STDC_VERSION__ \ + && !defined __HP_cc \ + && !defined __PGI \ + && !(defined __SUNPRO_C && __STDC__))) \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# define _GL_INLINE inline +# define _GL_EXTERN_INLINE extern inline +# define _GL_EXTERN_INLINE_IN_USE +#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ + /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ +# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) +# else +# define _GL_INLINE extern inline +# endif +# define _GL_EXTERN_INLINE extern +# define _GL_EXTERN_INLINE_IN_USE +#else +# define _GL_INLINE static _GL_UNUSED +# define _GL_EXTERN_INLINE static _GL_UNUSED +#endif + +/* In GCC 4.6 (inclusive) to 5.1 (exclusive), + suppress bogus "no previous prototype for 'FOO'" + and "no previous declaration for 'FOO'" diagnostics, + when FOO is an inline function in the header; see + <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and + <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */ +#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ +# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ +# define _GL_INLINE_HEADER_CONST_PRAGMA +# else +# define _GL_INLINE_HEADER_CONST_PRAGMA \ + _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# endif +# define _GL_INLINE_HEADER_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ + _GL_INLINE_HEADER_CONST_PRAGMA +# define _GL_INLINE_HEADER_END \ + _Pragma ("GCC diagnostic pop") +#else +# define _GL_INLINE_HEADER_BEGIN +# define _GL_INLINE_HEADER_END +#endif]) +]) diff -urN dpkg-1.20.9/m4/fcntl-o.m4 dpkg-1.20.9ubuntu1/m4/fcntl-o.m4 --- dpkg-1.20.9/m4/fcntl-o.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/fcntl-o.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,134 @@ +# fcntl-o.m4 serial 4 +dnl Copyright (C) 2006, 2009-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Written by Paul Eggert. + +# Test whether the flags O_NOATIME and O_NOFOLLOW actually work. +# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. +# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. +AC_DEFUN([gl_FCNTL_O_FLAGS], +[ + dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + + AC_CHECK_HEADERS_ONCE([unistd.h]) + AC_CHECK_FUNCS_ONCE([symlink]) + AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include <sys/types.h> + #include <sys/stat.h> + #if HAVE_UNISTD_H + # include <unistd.h> + #else /* on Windows with MSVC */ + # include <io.h> + # include <stdlib.h> + # defined sleep(n) _sleep ((n) * 1000) + #endif + #include <fcntl.h> + #ifndef O_NOATIME + #define O_NOATIME 0 + #endif + #ifndef O_NOFOLLOW + #define O_NOFOLLOW 0 + #endif + static int const constants[] = + { + O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, + O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY + }; + ]], + [[ + int result = !constants; + #if HAVE_SYMLINK + { + static char const sym[] = "conftest.sym"; + if (symlink ("/dev/null", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + if (unlink (sym) != 0 || symlink (".", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_RDONLY | O_NOFOLLOW); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + unlink (sym); + } + #endif + { + static char const file[] = "confdefs.h"; + int fd = open (file, O_RDONLY | O_NOATIME); + if (fd < 0) + result |= 8; + else + { + struct stat st0; + if (fstat (fd, &st0) != 0) + result |= 16; + else + { + char c; + sleep (1); + if (read (fd, &c, 1) != 1) + result |= 24; + else + { + if (close (fd) != 0) + result |= 32; + else + { + struct stat st1; + if (stat (file, &st1) != 0) + result |= 40; + else + if (st0.st_atime != st1.st_atime) + result |= 64; + } + } + } + } + } + return result;]])], + [gl_cv_header_working_fcntl_h=yes], + [case $? in #( + 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( + 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( + 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( + *) gl_cv_header_working_fcntl_h='no';; + esac], + [gl_cv_header_working_fcntl_h=cross-compiling])]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOATIME* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val], + [Define to 1 if O_NOATIME works.]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val], + [Define to 1 if O_NOFOLLOW works.]) +]) diff -urN dpkg-1.20.9/m4/glibc21.m4 dpkg-1.20.9ubuntu1/m4/glibc21.m4 --- dpkg-1.20.9/m4/glibc21.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/glibc21.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,34 @@ +# glibc21.m4 serial 5 +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2016 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.1 or newer, or uClibc. +# From Bruno Haible. + +AC_DEFUN([gl_GLIBC21], + [ + AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc], + [ac_cv_gnu_library_2_1], + [AC_EGREP_CPP([Lucky], + [ +#include <features.h> +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif +#ifdef __UCLIBC__ + Lucky user +#endif + ], + [ac_cv_gnu_library_2_1=yes], + [ac_cv_gnu_library_2_1=no]) + ] + ) + AC_SUBST([GLIBC21]) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) diff -urN dpkg-1.20.9/m4/glibc2.m4 dpkg-1.20.9ubuntu1/m4/glibc2.m4 --- dpkg-1.20.9/m4/glibc2.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/glibc2.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,31 @@ +# glibc2.m4 serial 3 +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2016 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.0 or newer. +# From Bruno Haible. + +AC_DEFUN([gt_GLIBC2], + [ + AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer], + [ac_cv_gnu_library_2], + [AC_EGREP_CPP([Lucky GNU user], + [ +#include <features.h> +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) && !defined __UCLIBC__ + Lucky GNU user + #endif +#endif + ], + [ac_cv_gnu_library_2=yes], + [ac_cv_gnu_library_2=no]) + ] + ) + AC_SUBST([GLIBC2]) + GLIBC2="$ac_cv_gnu_library_2" + ] +) diff -urN dpkg-1.20.9/m4/intdiv0.m4 dpkg-1.20.9ubuntu1/m4/intdiv0.m4 --- dpkg-1.20.9/m4/intdiv0.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/intdiv0.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,87 @@ +# intdiv0.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2002, 2007-2008, 2010-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gt_INTDIV0], +[ + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + + AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], + gt_cv_int_divbyzero_sigfpe, + [ + gt_cv_int_divbyzero_sigfpe= +changequote(,)dnl + case "$host_os" in + macos* | darwin[6-9]* | darwin[1-9][0-9]*) + # On Mac OS X 10.2 or newer, just assume the same as when cross- + # compiling. If we were to perform the real test, 1 Crash Report + # dialog window would pop up. + case "$host_cpu" in + i[34567]86 | x86_64) + gt_cv_int_divbyzero_sigfpe="guessing yes" ;; + esac + ;; + esac +changequote([,])dnl + if test -z "$gt_cv_int_divbyzero_sigfpe"; then + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stdlib.h> +#include <signal.h> + +static void +sigfpe_handler (int sig) +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + _exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (2); +} +]])], + [gt_cv_int_divbyzero_sigfpe=yes], + [gt_cv_int_divbyzero_sigfpe=no], + [ + # Guess based on the CPU. +changequote(,)dnl + case "$host_cpu" in + alpha* | i[34567]86 | x86_64 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac +changequote([,])dnl + ]) + fi + ]) + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value], + [Define if integer division by zero raises signal SIGFPE.]) +]) diff -urN dpkg-1.20.9/m4/intldir.m4 dpkg-1.20.9ubuntu1/m4/intldir.m4 --- dpkg-1.20.9/m4/intldir.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/intldir.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,19 @@ +# intldir.m4 serial 2 (gettext-0.18) +dnl Copyright (C) 2006, 2009-2014, 2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +AC_PREREQ([2.52]) + +dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory. +AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], []) diff -urN dpkg-1.20.9/m4/intl.m4 dpkg-1.20.9ubuntu1/m4/intl.m4 --- dpkg-1.20.9/m4/intl.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/intl.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,304 @@ +# intl.m4 serial 29 (gettext-0.19) +dnl Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009. + +AC_PREREQ([2.60]) + +dnl Checks for all prerequisites of the intl subdirectory, +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +AC_DEFUN([AM_INTL_SUBDIR], +[ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([gt_GLIBC2])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([gl_VISIBILITY])dnl + AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl + AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl + AC_REQUIRE([gt_TYPE_WCHAR_T])dnl + AC_REQUIRE([gt_TYPE_WINT_T])dnl + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gt_PRINTF_POSIX]) + AC_REQUIRE([gl_GLIBC21])dnl + AC_REQUIRE([gl_XSIZE])dnl + AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl + AC_REQUIRE([gt_INTL_MACOSX])dnl + AC_REQUIRE([gl_EXTERN_INLINE])dnl + AC_REQUIRE([gt_GL_ATTRIBUTE])dnl + + dnl Support for automake's --enable-silent-rules. + case "$enable_silent_rules" in + yes) INTL_DEFAULT_VERBOSITY=0;; + no) INTL_DEFAULT_VERBOSITY=1;; + *) INTL_DEFAULT_VERBOSITY=1;; + esac + AC_SUBST([INTL_DEFAULT_VERBOSITY]) + + AC_CHECK_TYPE([ptrdiff_t], , + [AC_DEFINE([ptrdiff_t], [long], + [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) + ]) + AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h]) + AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ + snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) + + dnl Use the _snprintf function only if it is declared (because on NetBSD it + dnl is defined as a weak alias of snprintf; we prefer to use the latter). + AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include <stdio.h>]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + AC_CHECK_DECLS([getc_unlocked], , , [#include <stdio.h>]) + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + AC_SUBST([HAVE_POSIX_PRINTF]) + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + AC_SUBST([HAVE_ASPRINTF]) + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + AC_SUBST([HAVE_SNPRINTF]) + if test "$ac_cv_func_newlocale" = yes; then + HAVE_NEWLOCALE=1 + else + HAVE_NEWLOCALE=0 + fi + AC_SUBST([HAVE_NEWLOCALE]) + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + AC_SUBST([HAVE_WPRINTF]) + + AM_LANGINFO_CODESET + gt_LC_MESSAGES + + dnl Compilation on mingw and Cygwin needs special Makefile rules, because + dnl 1. when we install a shared library, we must arrange to export + dnl auxiliary pointer variables for every exported variable, + dnl 2. when we install a shared library and a static library simultaneously, + dnl the include file specifies __declspec(dllimport) and therefore we + dnl must arrange to define the auxiliary pointer variables for the + dnl exported variables _also_ in the static library. + if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac + else + is_woe32dll=no + fi + WOE32DLL=$is_woe32dll + AC_SUBST([WOE32DLL]) + + dnl On mingw and Cygwin, we can activate special Makefile rules which add + dnl version information to the shared libraries and executables. + case "$host_os" in + mingw* | cygwin*) is_woe32=yes ;; + *) is_woe32=no ;; + esac + WOE32=$is_woe32 + AC_SUBST([WOE32]) + if test $WOE32 = yes; then + dnl Check for a program that compiles Windows resource files. + AC_CHECK_TOOL([WINDRES], [windres]) + fi + + dnl Determine whether when creating a library, "-lc" should be passed to + dnl libtool or not. On many platforms, it is required for the libtool option + dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool + dnl in the *.la files - makes it impossible to create multithreaded programs, + dnl because libtool also reorders the -lc to come before the -pthread, and + dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>. + case "$host_os" in + hpux*) LTLIBC="" ;; + *) LTLIBC="-lc" ;; + esac + AC_SUBST([LTLIBC]) + + dnl Rename some macros and functions used for locking. + AH_BOTTOM([ +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init_func libintl_lock_init_func +#define glthread_lock_lock_func libintl_lock_lock_func +#define glthread_lock_unlock_func libintl_lock_unlock_func +#define glthread_lock_destroy_func libintl_lock_destroy_func +#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded +#define glthread_rwlock_init_func libintl_rwlock_init_func +#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded +#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func +#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded +#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func +#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded +#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func +#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded +#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func +#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded +#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func +#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded +#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func +#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded +#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func +#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded +#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func +#define glthread_once_func libintl_once_func +#define glthread_once_singlethreaded libintl_once_singlethreaded +#define glthread_once_multithreaded libintl_once_multithreaded +]) +]) + + +dnl Checks for the core files of the intl subdirectory: +dnl dcigettext.c +dnl eval-plural.h +dnl explodename.c +dnl finddomain.c +dnl gettextP.h +dnl gmo.h +dnl hash-string.h hash-string.c +dnl l10nflist.c +dnl libgnuintl.h.in (except the *printf stuff) +dnl loadinfo.h +dnl loadmsgcat.c +dnl localealias.c +dnl log.c +dnl plural-exp.h plural-exp.c +dnl plural.y +dnl Used by libglocale. +AC_DEFUN([gt_INTL_SUBDIR_CORE], +[ + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + AC_REQUIRE([gl_LOCK])dnl + + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]], + [[]])], + [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], + [Define to 1 if the compiler understands __builtin_expect.])]) + + AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ + stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ + argz_stringify argz_next __fsetlocking]) + + dnl Solaris 12 provides getlocalename_l, while Illumos doesn't have + dnl it nor the equivalent. + if test $ac_cv_func_uselocale = yes; then + AC_CHECK_FUNCS([getlocalename_l]) + fi + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include <stdio.h>]) + + AM_ICONV + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-2.7 for %define api.pure. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 2.[7-9]* | [3-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi +]) + +dnl Copies _GL_UNUSED and _GL_ATTRIBUTE_PURE definitions from +dnl gnulib-common.m4 as a fallback, if the project isn't using Gnulib. +AC_DEFUN([gt_GL_ATTRIBUTE], [ + m4_ifndef([gl_[]COMMON], + AH_VERBATIM([gt_gl_attribute], +[/* Define as a marker that can be attached to declarations that might not + be used. This helps to reduce warnings, such as from + GCC -Wunused-parameter. */ +#ifndef _GL_UNUSED +# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_UNUSED +# endif +#endif + +/* The __pure__ attribute was added in gcc 2.96. */ +#ifndef _GL_ATTRIBUTE_PURE +# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE /* empty */ +# endif +#endif +]))]) diff -urN dpkg-1.20.9/m4/intmax.m4 dpkg-1.20.9ubuntu1/m4/intmax.m4 --- dpkg-1.20.9/m4/intmax.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/intmax.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,36 @@ +# intmax.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2002-2005, 2008-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether the system has the 'intmax_t' type, but don't attempt to +dnl find a replacement if it is lacking. + +AC_DEFUN([gt_TYPE_INTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include <stddef.h> +#include <stdlib.h> +#if HAVE_STDINT_H_WITH_UINTMAX +#include <stdint.h> +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include <inttypes.h> +#endif + ]], + [[intmax_t x = -1; + return !x;]])], + [gt_cv_c_intmax_t=yes], + [gt_cv_c_intmax_t=no])]) + if test $gt_cv_c_intmax_t = yes; then + AC_DEFINE([HAVE_INTMAX_T], [1], + [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.]) + fi +]) diff -urN dpkg-1.20.9/m4/inttypes_h.m4 dpkg-1.20.9ubuntu1/m4/inttypes_h.m4 --- dpkg-1.20.9/m4/inttypes_h.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/inttypes_h.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,29 @@ +# inttypes_h.m4 serial 10 +dnl Copyright (C) 1997-2004, 2006, 2008-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists, +# doesn't clash with <sys/types.h>, and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include <sys/types.h> +#include <inttypes.h> + ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_inttypes_h=yes], + [gl_cv_header_inttypes_h=no])]) + if test $gl_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1], + [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, + and declares uintmax_t. ]) + fi +]) diff -urN dpkg-1.20.9/m4/inttypes-pri.m4 dpkg-1.20.9ubuntu1/m4/inttypes-pri.m4 --- dpkg-1.20.9/m4/inttypes-pri.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/inttypes-pri.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,42 @@ +# inttypes-pri.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1997-2002, 2006, 2008-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ([2.53]) + +# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI* +# macros to non-string values. This is the case on AIX 4.3.3. + +AC_DEFUN([gt_INTTYPES_PRI], +[ + AC_CHECK_HEADERS([inttypes.h]) + if test $ac_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + [gt_cv_inttypes_pri_broken], + [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include <inttypes.h> +#ifdef PRId32 +char *p = PRId32; +#endif + ]], + [[]])], + [gt_cv_inttypes_pri_broken=no], + [gt_cv_inttypes_pri_broken=yes]) + ]) + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1], + [Define if <inttypes.h> exists and defines unusable PRI* macros.]) + PRI_MACROS_BROKEN=1 + else + PRI_MACROS_BROKEN=0 + fi + AC_SUBST([PRI_MACROS_BROKEN]) +]) diff -urN dpkg-1.20.9/m4/lcmessage.m4 dpkg-1.20.9ubuntu1/m4/lcmessage.m4 --- dpkg-1.20.9/m4/lcmessage.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/lcmessage.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,35 @@ +# lcmessage.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014, 2016 Free Software +dnl Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995. + +# Check whether LC_MESSAGES is available in <locale.h>. + +AC_DEFUN([gt_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <locale.h>]], + [[return LC_MESSAGES]])], + [gt_cv_val_LC_MESSAGES=yes], + [gt_cv_val_LC_MESSAGES=no])]) + if test $gt_cv_val_LC_MESSAGES = yes; then + AC_DEFINE([HAVE_LC_MESSAGES], [1], + [Define if your <locale.h> file defines LC_MESSAGES.]) + fi +]) diff -urN dpkg-1.20.9/m4/lock.m4 dpkg-1.20.9ubuntu1/m4/lock.m4 --- dpkg-1.20.9/m4/lock.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/lock.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,42 @@ +# lock.m4 serial 13 (gettext-0.18.2) +dnl Copyright (C) 2005-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gl_LOCK], +[ + AC_REQUIRE([gl_THREADLIB]) + if test "$gl_threads_api" = posix; then + # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + AC_CHECK_TYPE([pthread_rwlock_t], + [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1], + [Define if the POSIX multithreading library has read/write locks.])], + [], + [#include <pthread.h>]) + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM( + [[#include <pthread.h>]], + [[ +#if __FreeBSD__ == 4 +error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \ + && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070) +error "No, in Mac OS X < 10.7 recursive mutexes actually don't work." +#else +int x = (int)PTHREAD_MUTEX_RECURSIVE; +return !x; +#endif + ]])], + [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1], + [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])]) + fi + gl_PREREQ_LOCK +]) + +# Prerequisites of lib/glthread/lock.c. +AC_DEFUN([gl_PREREQ_LOCK], [:]) diff -urN dpkg-1.20.9/m4/longlong.m4 dpkg-1.20.9ubuntu1/m4/longlong.m4 --- dpkg-1.20.9/m4/longlong.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/longlong.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,113 @@ +# longlong.m4 serial 17 +dnl Copyright (C) 1999-2007, 2009-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_LONG_LONG_INT if 'long long int' works. +# This fixes a bug in Autoconf 2.61, and can be faster +# than what's in Autoconf 2.62 through 2.68. + +# Note: If the type 'long long int' exists but is only 32 bits large +# (as on some very old compilers), HAVE_LONG_LONG_INT will not be +# defined. In this case you can treat 'long long int' like 'long int'. + +AC_DEFUN([AC_TYPE_LONG_LONG_INT], +[ + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], + [ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. + dnl If cross compiling, assume the bug is not important, since + dnl nobody cross compiles for this platform as far as we know. + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[@%:@include <limits.h> + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif]], + [[long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0;]])], + [], + [ac_cv_type_long_long_int=no], + [:]) + fi + fi]) + if test $ac_cv_type_long_long_int = yes; then + AC_DEFINE([HAVE_LONG_LONG_INT], [1], + [Define to 1 if the system has the type 'long long int'.]) + fi +]) + +# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. +# This fixes a bug in Autoconf 2.61, and can be faster +# than what's in Autoconf 2.62 through 2.68. + +# Note: If the type 'unsigned long long int' exists but is only 32 bits +# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT +# will not be defined. In this case you can treat 'unsigned long long int' +# like 'unsigned long int'. + +AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], +[ + AC_CACHE_CHECK([for unsigned long long int], + [ac_cv_type_unsigned_long_long_int], + [ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [], + [ac_cv_type_unsigned_long_long_int=no]) + fi]) + if test $ac_cv_type_unsigned_long_long_int = yes; then + AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], + [Define to 1 if the system has the type 'unsigned long long int'.]) + fi +]) + +# Expands to a C program that can be used to test for simultaneous support +# of 'long long' and 'unsigned long long'. We don't want to say that +# 'long long' is available if 'unsigned long long' is not, or vice versa, +# because too many programs rely on the symmetry between signed and unsigned +# integer types (excluding 'bool'). +AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], +[ + AC_LANG_PROGRAM( + [[/* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63;]], + [[/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull));]]) +]) diff -urN dpkg-1.20.9/m4/printf-posix.m4 dpkg-1.20.9ubuntu1/m4/printf-posix.m4 --- dpkg-1.20.9/m4/printf-posix.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/printf-posix.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,48 @@ +# printf-posix.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2003, 2007, 2009-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether the printf() function supports POSIX/XSI format strings with +dnl positions. + +AC_DEFUN([gt_PRINTF_POSIX], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings], + gt_cv_func_printf_posix, + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stdio.h> +#include <string.h> +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +}]])], + [gt_cv_func_printf_posix=yes], + [gt_cv_func_printf_posix=no], + [ + AC_EGREP_CPP([notposix], [ +#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + ], + [gt_cv_func_printf_posix="guessing no"], + [gt_cv_func_printf_posix="guessing yes"]) + ]) + ]) + case $gt_cv_func_printf_posix in + *yes) + AC_DEFINE([HAVE_POSIX_PRINTF], [1], + [Define if your printf() function supports format strings with positions.]) + ;; + esac +]) diff -urN dpkg-1.20.9/m4/size_max.m4 dpkg-1.20.9ubuntu1/m4/size_max.m4 --- dpkg-1.20.9/m4/size_max.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/size_max.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,79 @@ +# size_max.m4 serial 10 +dnl Copyright (C) 2003, 2005-2006, 2008-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gl_SIZE_MAX], +[ + AC_CHECK_HEADERS([stdint.h]) + dnl First test whether the system already has SIZE_MAX. + AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ + gl_cv_size_max= + AC_EGREP_CPP([Found it], [ +#include <limits.h> +#if HAVE_STDINT_H +#include <stdint.h> +#endif +#ifdef SIZE_MAX +Found it +#endif +], [gl_cv_size_max=yes]) + if test -z "$gl_cv_size_max"; then + dnl Define it ourselves. Here we assume that the type 'size_t' is not wider + dnl than the type 'unsigned long'. Try hard to find a definition that can + dnl be used in a preprocessor #if, i.e. doesn't contain a cast. + AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], + [#include <stddef.h> +#include <limits.h>], [size_t_bits_minus_1=]) + AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], + [#include <stddef.h>], [fits_in_uint=]) + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + if test $fits_in_uint = 1; then + dnl Even though SIZE_MAX fits in an unsigned int, it must be of type + dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include <stddef.h> + extern size_t foo; + extern unsigned long foo; + ]], + [[]])], + [fits_in_uint=0]) + fi + dnl We cannot use 'expr' to simplify this expression, because 'expr' + dnl works only with 'long' integers in the host environment, while we + dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + dnl Shouldn't happen, but who knows... + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + ]) + if test "$gl_cv_size_max" != yes; then + AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], + [Define as the maximum value of type 'size_t', if the system doesn't define it.]) + fi + dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after + dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with + dnl #define by AC_DEFINE_UNQUOTED. + AH_VERBATIM([SIZE_MAX], +[/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#ifndef SIZE_MAX +# undef SIZE_MAX +#endif]) +]) + +dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. +dnl Remove this when we can assume autoconf >= 2.61. +m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) +]) diff -urN dpkg-1.20.9/m4/stdint_h.m4 dpkg-1.20.9ubuntu1/m4/stdint_h.m4 --- dpkg-1.20.9/m4/stdint_h.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/stdint_h.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,27 @@ +# stdint_h.m4 serial 9 +dnl Copyright (C) 1997-2004, 2006, 2008-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists, +# doesn't clash with <sys/types.h>, and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_STDINT_H], +[ + AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include <sys/types.h> + #include <stdint.h>]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_stdint_h=yes], + [gl_cv_header_stdint_h=no])]) + if test $gl_cv_header_stdint_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1], + [Define if <stdint.h> exists, doesn't clash with <sys/types.h>, + and declares uintmax_t. ]) + fi +]) diff -urN dpkg-1.20.9/m4/threadlib.m4 dpkg-1.20.9ubuntu1/m4/threadlib.m4 --- dpkg-1.20.9/m4/threadlib.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/threadlib.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,389 @@ +# threadlib.m4 serial 11 (gettext-0.18.2) +dnl Copyright (C) 2005-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl gl_THREADLIB +dnl ------------ +dnl Tests for a multithreading library to be used. +dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO +dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the +dnl default is 'no', otherwise it is system dependent. In both cases, the user +dnl can change the choice through the options --enable-threads=choice or +dnl --disable-threads. +dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS, +dnl USE_PTH_THREADS, USE_WINDOWS_THREADS +dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use +dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with +dnl libtool). +dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for +dnl programs that really need multithread functionality. The difference +dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak +dnl symbols, typically LIBTHREAD is empty whereas LIBMULTITHREAD is not. +dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for +dnl multithread-safe programs. + +AC_DEFUN([gl_THREADLIB_EARLY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) +]) + +dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_EARLY_BODY], +[ + dnl Ordering constraints: This macro modifies CPPFLAGS in a way that + dnl influences the result of the autoconf tests that test for *_unlocked + dnl declarations, on AIX 5 at least. Therefore it must come early. + AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl + AC_BEFORE([$0], [gl_ARGP])dnl + + AC_REQUIRE([AC_CANONICAL_HOST]) + dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + dnl Check for multithreading. + m4_ifdef([gl_THREADLIB_DEFAULT_NO], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) + AC_ARG_ENABLE([threads], +AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ +AC_HELP_STRING([--disable-threads], [build without multithread safety])]), + [gl_use_threads=$enableval], + [if test -n "$gl_use_threads_default"; then + gl_use_threads="$gl_use_threads_default" + else +changequote(,)dnl + case "$host_os" in + dnl Disable multithreading by default on OSF/1, because it interferes + dnl with fork()/exec(): When msgexec is linked with -lpthread, its + dnl child process gets an endless segmentation fault inside execvp(). + dnl Disable multithreading by default on Cygwin 1.5.x, because it has + dnl bugs that lead to endless loops or crashes. See + dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>. + osf*) gl_use_threads=no ;; + cygwin*) + case `uname -r` in + 1.[0-5].*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + ;; + *) gl_use_threads=yes ;; + esac +changequote([,])dnl + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using <pthread.h>: + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks <pthread.h>. cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_LINK_IFELSE test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in <errno.h>. + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + fi +]) + +dnl The guts of gl_THREADLIB. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_BODY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + dnl Check whether the compiler and linker support weak declarations. + AC_CACHE_CHECK([whether imported symbols can be declared weak], + [gl_cv_have_weak], + [gl_cv_have_weak=no + dnl First, test whether the compiler accepts it syntactically. + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[extern void xyzzy (); +#pragma weak xyzzy]], + [[xyzzy();]])], + [gl_cv_have_weak=maybe]) + if test $gl_cv_have_weak = maybe; then + dnl Second, test whether it actually works. On Cygwin 1.7.2, with + dnl gcc 4.3, symbols declared weak always evaluate to the address 0. + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stdio.h> +#pragma weak fputs +int main () +{ + return (fputs == NULL); +}]])], + [gl_cv_have_weak=yes], + [gl_cv_have_weak=no], + [dnl When cross-compiling, assume that only ELF platforms support + dnl weak symbols. + AC_EGREP_CPP([Extensible Linking Format], + [#ifdef __ELF__ + Extensible Linking Format + #endif + ], + [gl_cv_have_weak="guessing yes"], + [gl_cv_have_weak="guessing no"]) + ]) + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY. + AC_CHECK_HEADER([pthread.h], + [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + # + # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 + # needs -pthread for some reason. See: + # http://lists.gnu.org/archive/html/bug-gnulib/2014-09/msg00023.html + save_LIBS=$LIBS + for gl_pthread in '' '-pthread'; do + LIBS="$LIBS $gl_pthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <pthread.h> + pthread_mutex_t m; + pthread_mutexattr_t ma; + ]], + [[pthread_mutex_lock (&m); + pthread_mutexattr_init (&ma);]])], + [gl_have_pthread=yes + LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread + LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread]) + LIBS=$save_LIBS + test -n "$gl_have_pthread" && break + done + + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + AC_CHECK_LIB([pthread], [pthread_kill], + [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + case "$host_os" in + solaris* | hpux*) + AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], + [Define if the pthread_in_use() detection is hard.]) + esac + ]) + elif test -z "$gl_have_pthread"; then + # Some library is needed. Try libpthread and libc_r. + AC_CHECK_LIB([pthread], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread]) + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + AC_CHECK_LIB([c_r], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r]) + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + AC_DEFINE([USE_POSIX_THREADS], [1], + [Define if the POSIX multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], + [Define if references to the POSIX multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include <thread.h> +#include <synch.h> + ]], + [[thr_self();]])], + [gl_have_solaristhread=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_SOLARIS_THREADS], [1], + [Define if the old Solaris multithreading library can be used.]) + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1], + [Define if references to the old Solaris multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_LINKFLAGS([pth]) + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS $LIBPTH" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include <pth.h>]], [[pth_self();]])], + [gl_have_pth=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_PTH_THREADS], [1], + [Define if the GNU Pth multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_PTH_THREADS_WEAK], [1], + [Define if references to the GNU Pth multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + case "$gl_use_threads" in + yes | windows | win32) # The 'win32' is for backward compatibility. + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=windows + AC_DEFINE([USE_WINDOWS_THREADS], [1], + [Define if the native Windows multithreading API can be used.]) + fi + ;; + esac + fi + fi + AC_MSG_CHECKING([for multithread API to use]) + AC_MSG_RESULT([$gl_threads_api]) + AC_SUBST([LIBTHREAD]) + AC_SUBST([LTLIBTHREAD]) + AC_SUBST([LIBMULTITHREAD]) + AC_SUBST([LTLIBMULTITHREAD]) +]) + +AC_DEFUN([gl_THREADLIB], +[ + AC_REQUIRE([gl_THREADLIB_EARLY]) + AC_REQUIRE([gl_THREADLIB_BODY]) +]) + + +dnl gl_DISABLE_THREADS +dnl ------------------ +dnl Sets the gl_THREADLIB default so that threads are not used by default. +dnl The user can still override it at installation time, by using the +dnl configure option '--enable-threads'. + +AC_DEFUN([gl_DISABLE_THREADS], [ + m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no]) +]) + + +dnl Survey of platforms: +dnl +dnl Platform Available Compiler Supports test-lock +dnl flavours option weak result +dnl --------------- --------- --------- -------- --------- +dnl Linux 2.4/glibc posix -lpthread Y OK +dnl +dnl GNU Hurd/glibc posix +dnl +dnl Ubuntu 14.04 posix -pthread Y OK +dnl +dnl FreeBSD 5.3 posix -lc_r Y +dnl posix -lkse ? Y +dnl posix -lpthread ? Y +dnl posix -lthr Y +dnl +dnl FreeBSD 5.2 posix -lc_r Y +dnl posix -lkse Y +dnl posix -lthr Y +dnl +dnl FreeBSD 4.0,4.10 posix -lc_r Y OK +dnl +dnl NetBSD 1.6 -- +dnl +dnl OpenBSD 3.4 posix -lpthread Y OK +dnl +dnl Mac OS X 10.[123] posix -lpthread Y OK +dnl +dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK +dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK +dnl +dnl HP-UX 11 posix -lpthread N (cc) OK +dnl Y (gcc) +dnl +dnl IRIX 6.5 posix -lpthread Y 0.5 +dnl +dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK +dnl +dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK +dnl -lpthread (gcc) Y +dnl +dnl Cygwin posix -lpthread Y OK +dnl +dnl Any of the above pth -lpth 0.0 +dnl +dnl Mingw windows N OK +dnl +dnl BeOS 5 -- +dnl +dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is +dnl turned off: +dnl OK if all three tests terminate OK, +dnl 0.5 if the first test terminates OK but the second one loops endlessly, +dnl 0.0 if the first test already loops endlessly. diff -urN dpkg-1.20.9/m4/uintmax_t.m4 dpkg-1.20.9ubuntu1/m4/uintmax_t.m4 --- dpkg-1.20.9/m4/uintmax_t.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/uintmax_t.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,30 @@ +# uintmax_t.m4 serial 12 +dnl Copyright (C) 1997-2004, 2007-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +AC_PREREQ([2.13]) + +# Define uintmax_t to 'unsigned long' or 'unsigned long long' +# if it is not already defined in <stdint.h> or <inttypes.h>. + +AC_DEFUN([gl_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type], + [Define to unsigned long or unsigned long long + if <stdint.h> and <inttypes.h> don't define.]) + else + AC_DEFINE([HAVE_UINTMAX_T], [1], + [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.]) + fi +]) diff -urN dpkg-1.20.9/m4/visibility.m4 dpkg-1.20.9ubuntu1/m4/visibility.m4 --- dpkg-1.20.9/m4/visibility.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/visibility.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,77 @@ +# visibility.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2005, 2008, 2010-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl Tests whether the compiler supports the command-line option +dnl -fvisibility=hidden and the function and variable attributes +dnl __attribute__((__visibility__("hidden"))) and +dnl __attribute__((__visibility__("default"))). +dnl Does *not* test for __visibility__("protected") - which has tricky +dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on +dnl Mac OS X. +dnl Does *not* test for __visibility__("internal") - which has processor +dnl dependent semantics. +dnl Does *not* test for #pragma GCC visibility push(hidden) - which is +dnl "really only recommended for legacy code". +dnl Set the variable CFLAG_VISIBILITY. +dnl Defines and sets the variable HAVE_VISIBILITY. + +AC_DEFUN([gl_VISIBILITY], +[ + AC_REQUIRE([AC_PROG_CC]) + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + dnl First, check whether -Werror can be added to the command line, or + dnl whether it leads to an error because of some other option that the + dnl user has put into $CC $CFLAGS $CPPFLAGS. + AC_MSG_CHECKING([whether the -Werror option is usable]) + AC_CACHE_VAL([gl_cv_cc_vis_werror], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[]], [[]])], + [gl_cv_cc_vis_werror=yes], + [gl_cv_cc_vis_werror=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_vis_werror]) + dnl Now check whether visibility declarations are supported. + AC_MSG_CHECKING([for simple visibility declarations]) + AC_CACHE_VAL([gl_cv_cc_visibility], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + dnl We use the option -Werror and a function dummyfunc, because on some + dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning + dnl "visibility attribute not supported in this configuration; ignored" + dnl at the first function definition in every compilation unit, and we + dnl don't want to use the option in this case. + if test $gl_cv_cc_vis_werror = yes; then + CFLAGS="$CFLAGS -Werror" + fi + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {} + ]], + [[]])], + [gl_cv_cc_visibility=yes], + [gl_cv_cc_visibility=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_visibility]) + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + AC_SUBST([CFLAG_VISIBILITY]) + AC_SUBST([HAVE_VISIBILITY]) + AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], + [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) +]) diff -urN dpkg-1.20.9/m4/wchar_t.m4 dpkg-1.20.9ubuntu1/m4/wchar_t.m4 --- dpkg-1.20.9/m4/wchar_t.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/wchar_t.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,24 @@ +# wchar_t.m4 serial 4 (gettext-0.18.2) +dnl Copyright (C) 2002-2003, 2008-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether <stddef.h> has the 'wchar_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WCHAR_T], +[ + AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include <stddef.h> + wchar_t foo = (wchar_t)'\0';]], + [[]])], + [gt_cv_c_wchar_t=yes], + [gt_cv_c_wchar_t=no])]) + if test $gt_cv_c_wchar_t = yes; then + AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) + fi +]) diff -urN dpkg-1.20.9/m4/wint_t.m4 dpkg-1.20.9ubuntu1/m4/wint_t.m4 --- dpkg-1.20.9/m4/wint_t.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/wint_t.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,32 @@ +# wint_t.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether <wchar.h> has the 'wint_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WINT_T], +[ + AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included + before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> +#include <wchar.h> + wint_t foo = (wchar_t)'\0';]], + [[]])], + [gt_cv_c_wint_t=yes], + [gt_cv_c_wint_t=no])]) + if test $gt_cv_c_wint_t = yes; then + AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) + fi +]) diff -urN dpkg-1.20.9/m4/xsize.m4 dpkg-1.20.9ubuntu1/m4/xsize.m4 --- dpkg-1.20.9/m4/xsize.m4 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/m4/xsize.m4 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,12 @@ +# xsize.m4 serial 5 +dnl Copyright (C) 2003-2004, 2008-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_XSIZE], +[ + dnl Prerequisites of lib/xsize.h. + AC_REQUIRE([gl_SIZE_MAX]) + AC_CHECK_HEADERS([stdint.h]) +]) diff -urN dpkg-1.20.9/Makefile.in dpkg-1.20.9ubuntu1/Makefile.in --- dpkg-1.20.9/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -225,9 +225,9 @@ $(top_srcdir)/build-aux/ltmain.sh \ $(top_srcdir)/build-aux/missing $(top_srcdir)/check.am \ $(top_srcdir)/cpan.am $(top_srcdir)/doc/Doxyfile.in ABOUT-NLS \ - AUTHORS COPYING NEWS README THANKS TODO build-aux/ar-lib \ - build-aux/compile build-aux/config.guess \ - build-aux/config.rpath build-aux/config.sub \ + AUTHORS COPYING ChangeLog NEWS README THANKS TODO \ + build-aux/ar-lib build-aux/compile build-aux/config.guess \ + build-aux/config.rpath build-aux/config.sub build-aux/depcomp \ build-aux/install-sh build-aux/ltmain.sh build-aux/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) @@ -393,6 +393,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/man/dpkg-buildflags.pod dpkg-1.20.9ubuntu1/man/dpkg-buildflags.pod --- dpkg-1.20.9/man/dpkg-buildflags.pod 2021-04-05 00:50:44.000000000 +0200 +++ dpkg-1.20.9ubuntu1/man/dpkg-buildflags.pod 2021-04-14 12:32:22.000000000 +0200 @@ -354,6 +354,24 @@ =back +=head2 optimize + +Several compile-time options (detailed below) can be used to help optimize +a resulting binary (since dpkg 1.21.0). +B<Note>: enabling B<all> these options can result in unreproducible binary +artifacts. + +=over + +=item lto + +This setting (since dpkg 1.21.0; disabled by default) enables +Link Time Optimization by adding B<-flto=auto -ffat-lto-objects> to +B<CFLAGS>, B<CXXFLAGS>, B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>, +B<FFLAGS> and B<FCFLAGS>. + +=back + =head2 sanitize Several compile-time options (detailed below) can be used to help sanitize diff -urN dpkg-1.20.9/man/dpkg-deb.pod dpkg-1.20.9ubuntu1/man/dpkg-deb.pod --- dpkg-1.20.9/man/dpkg-deb.pod 2021-01-30 07:09:02.000000000 +0100 +++ dpkg-1.20.9ubuntu1/man/dpkg-deb.pod 2021-06-14 16:04:10.000000000 +0200 @@ -254,7 +254,7 @@ =item B<-z>I<compress-level> Specify which compression level to use on the compressor backend, when -building a package (default is 9 for gzip, 6 for xz). +building a package (default is 9 for gzip, 6 for xz and 19 for zstd). The accepted values are 0-9 with: 0 being mapped to compressor none for gzip. Before dpkg 1.16.2 level 0 was equivalent to compressor none for all compressors. @@ -269,8 +269,8 @@ =item B<-Z>I<compress-type> Specify which compression type to use when building a package. -Allowed values are B<gzip>, B<xz> (since dpkg 1.15.6), -and B<none> (default is B<xz>). +Allowed values are B<gzip>, B<xz> (since dpkg 1.15.6), B<zstd> +(since dpkg 1.19.0.5ubuntu2) and B<none> (default is B<zstd>). =item B<--[no-]uniform-compression> @@ -278,8 +278,7 @@ members (i.e. B<control.tar> and B<data.tar>; since dpkg 1.17.6). Otherwise only the B<data.tar> member will use those parameters. The only supported -compression types allowed to be uniformly used are B<none>, B<gzip> -and B<xz>. +compression types allowed to be uniformly used are B<none>, B<gzip>, B<xz> and B<zstd>. The B<--no-uniform-compression> option disables uniform compression (since dpkg 1.19.0). Uniform compression is the default (since dpkg 1.19.0). diff -urN dpkg-1.20.9/man/Makefile.in dpkg-1.20.9ubuntu1/man/Makefile.in --- dpkg-1.20.9/man/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/man/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -300,6 +300,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/man/po/dpkg-man.pot dpkg-1.20.9ubuntu1/man/po/dpkg-man.pot --- dpkg-1.20.9/man/po/dpkg-man.pot 2021-04-14 00:43:16.000000000 +0200 +++ dpkg-1.20.9ubuntu1/man/po/dpkg-man.pot 2021-04-14 12:32:22.000000000 +0200 @@ -9390,7 +9390,8 @@ #: dpkg-deb.pod msgid "" "Specify which compression level to use on the compressor backend, when " -"building a package (default is 9 for gzip, 6 for xz). The accepted values " +"building a package (default is 9 for gzip, 6 for xz and 19 for zstd). " +"The accepted values " "are 0-9 with: 0 being mapped to compressor none for gzip. Before dpkg " "1.16.2 level 0 was equivalent to compressor none for all compressors." msgstr "" diff -urN dpkg-1.20.9/po/Makevars.template dpkg-1.20.9ubuntu1/po/Makevars.template --- dpkg-1.20.9/po/Makevars.template 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/po/Makevars.template 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,78 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This tells whether or not to prepend "GNU " prefix to the package +# name that gets inserted into the header of the $(DOMAIN).pot file. +# Possible values are "yes", "no", or empty. If it is empty, try to +# detect it automatically by scanning the files in $(top_srcdir) for +# "GNU packagename" string. +PACKAGE_GNU = + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = no + +# These options get passed to msgmerge. +# Useful options are in particular: +# --previous to keep previous msgids of translated messages, +# --quiet to reduce the verbosity. +MSGMERGE_OPTIONS = + +# These options get passed to msginit. +# If you want to disable line wrapping when writing PO files, add +# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and +# MSGINIT_OPTIONS. +MSGINIT_OPTIONS = + +# This tells whether or not to regenerate a PO file when $(DOMAIN).pot +# has changed. Possible values are "yes" and "no". Set this to no if +# the POT file is checked in the repository and the version control +# program ignores timestamps. +PO_DEPENDS_ON_POT = yes + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = yes diff -urN dpkg-1.20.9/README dpkg-1.20.9ubuntu1/README --- dpkg-1.20.9/README 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/README 2021-04-14 12:32:22.000000000 +0200 @@ -73,6 +73,7 @@ libmd (used by libdpkg, currently falling back to embedded code) libz (from zlib, used instead of gzip command-line tool) + libzstd (from libzstd, used instead of zstd command-line tool) liblzma (from xz utils, used instead of xz command-line tool) libbz2 (from bzip2, used instead of bzip2 command-line tool) libselinux diff -urN dpkg-1.20.9/scripts/Dpkg/BuildProfiles.pm dpkg-1.20.9ubuntu1/scripts/Dpkg/BuildProfiles.pm --- dpkg-1.20.9/scripts/Dpkg/BuildProfiles.pm 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/scripts/Dpkg/BuildProfiles.pm 2021-04-14 12:32:22.000000000 +0200 @@ -30,6 +30,7 @@ use List::Util qw(any); use Dpkg::Build::Env; +use Dpkg::Vendor qw(run_vendor_hook); my $cache_profiles; my @build_profiles; @@ -63,6 +64,7 @@ @build_profiles = split ' ', Dpkg::Build::Env::get('DEB_BUILD_PROFILES'); } $cache_profiles = 1; + run_vendor_hook('update-buildprofiles', \@build_profiles); return @build_profiles; } @@ -79,7 +81,8 @@ $cache_profiles = 1; @build_profiles = @profiles; - Dpkg::Build::Env::set('DEB_BUILD_PROFILES', join ' ', @profiles); + run_vendor_hook('update-buildprofiles', \@build_profiles); + Dpkg::Build::Env::set('DEB_BUILD_PROFILES', join ' ', @build_profiles); } =item @profiles = parse_build_profiles($string) diff -urN dpkg-1.20.9/scripts/Dpkg/Shlibs/Objdump.pm dpkg-1.20.9ubuntu1/scripts/Dpkg/Shlibs/Objdump.pm --- dpkg-1.20.9/scripts/Dpkg/Shlibs/Objdump.pm 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/scripts/Dpkg/Shlibs/Objdump.pm 2021-04-14 12:32:22.000000000 +0200 @@ -24,6 +24,7 @@ use Dpkg::Gettext; use Dpkg::ErrorHandling; +use Dpkg::IPC; sub new { my $this = shift; @@ -73,6 +74,53 @@ return exists $self->{objects}{$objid}; } +sub is_armhf { + my ($file) = @_; + my ($output, %opts, $pid, $res); + my $hf = 0; + my $sf = 0; + $pid = spawn(exec => [ "readelf", "-h", "--", $file ], + env => { "LC_ALL" => "C" }, + to_pipe => \$output, %opts); + while (<$output>) { + chomp; + if (/0x500040./) { + $hf = 1; + last; + } + if (/0x500020./) { + $sf = 1; + last; + } + } + close($output); + wait_child($pid, nocheck => 1); + if ($?) { + subprocerr("readelf"); + } + if(($hf) || ($sf)) { + return $hf; + } + $hf = 0; + undef $output; + $pid = spawn(exec => [ "readelf", "-A", "--", $file ], + env => { "LC_ALL" => "C" }, + to_pipe => \$output, %opts); + while (<$output>) { + chomp; + if (/Tag_ABI_VFP_args: VFP registers/) { + $hf = 1; + last; + } + } + close($output); + wait_child($pid, nocheck => 1); + if ($?) { + subprocerr("readelf"); + } + return $hf; +} + use constant { ELF_BITS_NONE => 0, ELF_BITS_32 => 1, @@ -212,6 +260,14 @@ # Mask any processor flags that might not change the architecture ABI. $elf{flags} &= $elf_flags_mask{$elf{mach}} // 0; + if (($elf{mach} == ELF_MACH_ARM) && ($elf{endian} == ELF_ORDER_2LSB)) { + if (is_armhf($file)) { + $elf{flags} |= ELF_FLAG_ARM_HARD_FLOAT; + } else { + $elf{flags} |= ELF_FLAG_ARM_SOFT_FLOAT; + } + } + # Repack for easy comparison, as a big-endian byte stream, so that # unpacking for output gives meaningful results. $format{$file} = pack 'C2(SL)>', @elf{qw(bits endian mach flags)}; @@ -373,6 +429,13 @@ } elsif ($section eq 'none') { if (/^\s*.+:\s*file\s+format\s+(\S+)$/) { $self->{format} = $1; + if (($self->{format} eq "elf32-littlearm") && $self->{file}) { + if (Dpkg::Shlibs::Objdump::is_armhf($self->{file})) { + $self->{format} = "elf32-littlearm-hfabi"; + } else { + $self->{format} = "elf32-littlearm-sfabi"; + } + } } elsif (/^architecture:\s*\S+,\s*flags\s*\S+:$/) { # Parse 2 lines of "-f" # architecture: i386, flags 0x00000112: diff -urN dpkg-1.20.9/scripts/Dpkg/Source/Package/V3/Native.pm dpkg-1.20.9ubuntu1/scripts/Dpkg/Source/Package/V3/Native.pm --- dpkg-1.20.9/scripts/Dpkg/Source/Package/V3/Native.pm 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/scripts/Dpkg/Source/Package/V3/Native.pm 2021-04-14 12:32:22.000000000 +0200 @@ -73,7 +73,7 @@ my ($self, $dir) = @_; my $v = Dpkg::Version->new($self->{fields}->{'Version'}); - return (0, g_('native package version may not have a revision')) + warning (g_('native package version may not have a revision')) unless $v->is_native(); return 1; diff -urN dpkg-1.20.9/scripts/Dpkg/Source/Package/V3/Quilt.pm dpkg-1.20.9ubuntu1/scripts/Dpkg/Source/Package/V3/Quilt.pm --- dpkg-1.20.9/scripts/Dpkg/Source/Package/V3/Quilt.pm 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/scripts/Dpkg/Source/Package/V3/Quilt.pm 2021-04-14 12:32:22.000000000 +0200 @@ -93,7 +93,7 @@ return ($code, $msg) if $code == 0; my $v = Dpkg::Version->new($self->{fields}->{'Version'}); - return (0, g_('non-native package version does not contain a revision')) + warning (g_('non-native package version does not contain a revision')) if $v->is_native(); my $quilt = $self->_build_quilt_object($dir); diff -urN dpkg-1.20.9/scripts/Dpkg/Vendor/Debian.pm dpkg-1.20.9ubuntu1/scripts/Dpkg/Vendor/Debian.pm --- dpkg-1.20.9/scripts/Dpkg/Vendor/Debian.pm 2021-04-05 00:50:44.000000000 +0200 +++ dpkg-1.20.9ubuntu1/scripts/Dpkg/Vendor/Debian.pm 2021-04-14 12:32:22.000000000 +0200 @@ -26,6 +26,7 @@ our $VERSION = '0.01'; use Dpkg; +use Dpkg::Arch; use Dpkg::Gettext; use Dpkg::ErrorHandling; use Dpkg::Control::Types; @@ -91,6 +92,45 @@ } } +sub _lto_disabled { + my $fn = "/usr/share/lto-disabled-list/lto-disabled-list"; + open(LIST, "<", $fn) or return; + + # get source name + -r "debian/control" or return; + require Dpkg::Control::Info; + my $ctrl = Dpkg::Control::Info->new(); + my $src_fields = $ctrl->get_source(); + return unless defined $src_fields; + + my $src = ""; + foreach (keys %{$src_fields}) { + my $v = $src_fields->{$_}; + if (m/^Source$/i) { + $src = $v; + last; + } + } + return unless $src ne ""; + + my $arch = Dpkg::Arch::get_host_arch(); + + # read disabled-list + while (<LIST>) { + if (m/^$src\s/) { + if (m/^$src\s.*(any|$arch)\s/) { + close(LIST); + return 1; + } else { + close(LIST); + return; + } + } + } + close(LIST); + return; +} + sub _add_build_flags { my ($self, $flags) = @_; @@ -108,6 +148,9 @@ fixfilepath => 1, fixdebugpath => 1, }, + optimize => { + lto => 0, + }, sanitize => { address => 0, thread => 0, @@ -127,6 +170,21 @@ }, ); + # no hook to set in Ubuntu.pm + require Dpkg::Arch; + my $arch = Dpkg::Arch::get_host_arch(); + + if (Dpkg::Arch::debarch_eq($arch, 'amd64') + or Dpkg::Arch::debarch_eq($arch, 'arm64') + or Dpkg::Arch::debarch_eq($arch, 'ppc64el') + or Dpkg::Arch::debarch_eq($arch, 's390x')) + { + $use_feature{optimize}{lto} = 1; + if (_lto_disabled()) { + $use_feature{optimize}{lto} = 0; + } + } + my %builtin_feature = ( hardening => { pie => 1, @@ -146,9 +204,6 @@ $opts_maint->parse_features($area, $use_feature{$area}); } - require Dpkg::Arch; - - my $arch = Dpkg::Arch::get_host_arch(); my ($abi, $libc, $os, $cpu) = Dpkg::Arch::debarch_to_debtuple($arch); unless (defined $abi and defined $libc and defined $os and defined $cpu) { @@ -270,6 +325,20 @@ $flags->append('GCJFLAGS', $map); } + ## Area: optimize + + if ($use_feature{optimize}{lto}) { + my $ltoflag = '-flto=auto -ffat-lto-objects'; + $flags->append('CFLAGS', $ltoflag); + $flags->append('CXXFLAGS', $ltoflag); + $flags->append('OBJCFLAGS', $ltoflag); + $flags->append('OBJCXXFLAGS', $ltoflag); + $flags->append('FFLAGS', $ltoflag); + $flags->append('FCFLAGS', $ltoflag); + + $flags->append('LDFLAGS', '-flto=auto'); + } + ## Area: sanitize # Handle logical feature interactions. diff -urN dpkg-1.20.9/scripts/Dpkg/Vendor/Default.pm dpkg-1.20.9ubuntu1/scripts/Dpkg/Vendor/Default.pm --- dpkg-1.20.9/scripts/Dpkg/Vendor/Default.pm 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/scripts/Dpkg/Vendor/Default.pm 2021-04-14 12:32:22.000000000 +0200 @@ -130,6 +130,12 @@ the default values set for the various build flags. $flags is a Dpkg::BuildFlags object. +=item update-buildprofiles ($build_profiles_ref) + +The hook is called in Dpkg::BuildProfiles to allow the vendor to +override the default values set. $build_profiles_ref is a array ref to +Dpkg::BuildProfiles object. + =item builtin-system-build-paths () The hook is called by dpkg-genbuildinfo to determine if the current path @@ -180,6 +186,8 @@ my ($textref, $ch_info) = @params; } elsif ($hook eq 'update-buildflags') { my $flags = shift @params; + } elsif ($hook eq 'update-buildprofiles') { + my $build_profiles_ref = shift @params; } elsif ($hook eq 'builtin-system-build-paths') { return (); } elsif ($hook eq 'build-tainted-by') { diff -urN dpkg-1.20.9/scripts/Dpkg/Vendor/Ubuntu.pm dpkg-1.20.9ubuntu1/scripts/Dpkg/Vendor/Ubuntu.pm --- dpkg-1.20.9/scripts/Dpkg/Vendor/Ubuntu.pm 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/scripts/Dpkg/Vendor/Ubuntu.pm 2021-04-14 12:32:22.000000000 +0200 @@ -92,6 +92,14 @@ $fields->{'Launchpad-Bugs-Fixed'} = join(' ', @$bugs); } + } elsif ($hook eq 'update-buildopts') { + my $build_opts = shift @params; + require Dpkg::Arch; + my $arch = Dpkg::Arch::get_host_arch(); + if (Dpkg::Arch::debarch_eq($arch, 'riscv64')) { + $build_opts->set('nocheck', 1, 'riscv64'); + } + } elsif ($hook eq 'update-buildflags') { my $flags = shift @params; @@ -117,6 +125,14 @@ } # Per https://wiki.ubuntu.com/DistCompilerFlags $flags->prepend('LDFLAGS', '-Wl,-Bsymbolic-functions'); + } elsif ($hook eq 'update-buildprofiles') { + my $build_profiles_ref = shift @params; + unless(grep $_ =~ /^!?noudeb$/, @$build_profiles_ref) { + unshift(@$build_profiles_ref, 'noudeb'); + } else { + # Strip otherwise invalid profile name + @$build_profiles_ref = grep { $_ ne "!noudeb" } @$build_profiles_ref; + } } else { return $self->SUPER::run_hook($hook, @params); } diff -urN dpkg-1.20.9/scripts/dpkg-buildpackage.pl dpkg-1.20.9ubuntu1/scripts/dpkg-buildpackage.pl --- dpkg-1.20.9/scripts/dpkg-buildpackage.pl 2021-04-05 00:50:44.000000000 +0200 +++ dpkg-1.20.9ubuntu1/scripts/dpkg-buildpackage.pl 2021-04-14 12:32:22.000000000 +0200 @@ -203,6 +203,8 @@ my $build_opts = Dpkg::BuildOptions->new(); +run_vendor_hook('update-buildopts', $build_opts); + if ($build_opts->has('nocheck')) { $check_command = undef; } elsif (not find_command($check_command)) { @@ -426,9 +428,11 @@ } $build_opts->set('parallel', $parallel); $build_opts->export(); +} else { + $build_opts->export(); } -set_build_profiles(@build_profiles) if @build_profiles; +set_build_profiles(@build_profiles); my $changelog = changelog_parse(); my $ctrl = Dpkg::Control::Info->new(); diff -urN dpkg-1.20.9/scripts/dpkg-gencontrol.pl dpkg-1.20.9ubuntu1/scripts/dpkg-gencontrol.pl --- dpkg-1.20.9/scripts/dpkg-gencontrol.pl 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/scripts/dpkg-gencontrol.pl 2021-04-14 12:32:22.000000000 +0200 @@ -313,7 +313,8 @@ unless defined $fields->{$f}; } -my $pkg_type = $pkg->{'Package-Type'} || +my $pkg_type = $override{'Package-Type'} || + $pkg->{'Package-Type'} || $pkg->get_custom_field('Package-Type') || 'deb'; if ($pkg_type eq 'udeb') { diff -urN dpkg-1.20.9/scripts/Makefile.in dpkg-1.20.9ubuntu1/scripts/Makefile.in --- dpkg-1.20.9/scripts/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/scripts/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -365,6 +365,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/scripts/mk/Makefile.in dpkg-1.20.9ubuntu1/scripts/mk/Makefile.in --- dpkg-1.20.9/scripts/mk/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/scripts/mk/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -286,6 +286,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/scripts/po/Makevars.template dpkg-1.20.9ubuntu1/scripts/po/Makevars.template --- dpkg-1.20.9/scripts/po/Makevars.template 1970-01-01 01:00:00.000000000 +0100 +++ dpkg-1.20.9ubuntu1/scripts/po/Makevars.template 2021-04-14 12:32:22.000000000 +0200 @@ -0,0 +1,78 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This tells whether or not to prepend "GNU " prefix to the package +# name that gets inserted into the header of the $(DOMAIN).pot file. +# Possible values are "yes", "no", or empty. If it is empty, try to +# detect it automatically by scanning the files in $(top_srcdir) for +# "GNU packagename" string. +PACKAGE_GNU = + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = no + +# These options get passed to msgmerge. +# Useful options are in particular: +# --previous to keep previous msgids of translated messages, +# --quiet to reduce the verbosity. +MSGMERGE_OPTIONS = + +# These options get passed to msginit. +# If you want to disable line wrapping when writing PO files, add +# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and +# MSGINIT_OPTIONS. +MSGINIT_OPTIONS = + +# This tells whether or not to regenerate a PO file when $(DOMAIN).pot +# has changed. Possible values are "yes" and "no". Set this to no if +# the POT file is checked in the repository and the version control +# program ignores timestamps. +PO_DEPENDS_ON_POT = yes + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = yes diff -urN dpkg-1.20.9/scripts/t/Dpkg_BuildFlags.t dpkg-1.20.9ubuntu1/scripts/t/Dpkg_BuildFlags.t --- dpkg-1.20.9/scripts/t/Dpkg_BuildFlags.t 2021-04-13 20:15:56.000000000 +0200 +++ dpkg-1.20.9ubuntu1/scripts/t/Dpkg_BuildFlags.t 2021-04-14 12:32:22.000000000 +0200 @@ -16,7 +16,7 @@ use strict; use warnings; -use Test::More tests => 26; +use Test::More tests => 28; BEGIN { $ENV{DEB_BUILD_ARCH} = 'amd64'; @@ -71,6 +71,9 @@ fixfilepath timeless ) ], + optimize => [ qw) + lto + ) ], sanitize => [ qw( address leak diff -urN dpkg-1.20.9/scripts/t/Dpkg_BuildProfiles.t dpkg-1.20.9ubuntu1/scripts/t/Dpkg_BuildProfiles.t --- dpkg-1.20.9/scripts/t/Dpkg_BuildProfiles.t 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/scripts/t/Dpkg_BuildProfiles.t 2021-04-14 12:32:22.000000000 +0200 @@ -16,7 +16,7 @@ use strict; use warnings; -use Test::More tests => 8; +use Test::More tests => 10; BEGIN { use_ok('Dpkg::BuildProfiles', qw(parse_build_profiles @@ -26,6 +26,9 @@ # TODO: Add actual test cases. +# Check stock things +$ENV{DEB_VENDOR} = 'Debian'; + my $formula; $formula = [ ]; @@ -58,4 +61,16 @@ is_deeply([ get_build_profiles() ], [ qw(nocheck stage1) ], 'get active build profiles explicitly set'); +# Check Ubuntu vendor hook +$ENV{DEB_VENDOR} = 'Ubuntu'; + +set_build_profiles(qw(nocheck stage1)); +is_deeply([ get_build_profiles() ], [ qw(noudeb nocheck stage1) ], + 'get active build profiles explicitly set'); + +set_build_profiles(qw(!noudeb nocheck stage1)); +is_deeply([ get_build_profiles() ], [ qw(nocheck stage1) ], + 'get active build profiles explicitly set'); + + 1; diff -urN dpkg-1.20.9/src/Makefile.in dpkg-1.20.9ubuntu1/src/Makefile.in --- dpkg-1.20.9/src/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/src/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -363,6 +363,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ Datei dpkg-1.20.9/tests/t-unpack-fifo/pkg-fifo/test-fifo ist ein FIFO, während Datei dpkg-1.20.9ubuntu1/tests/t-unpack-fifo/pkg-fifo/test-fifo ein FIFO ist. Datei dpkg-1.20.9/tests/t-unpack-hardlink/pkg-hardlink/test-fifo-link0 ist ein FIFO, während Datei dpkg-1.20.9ubuntu1/tests/t-unpack-hardlink/pkg-hardlink/test-fifo-link0 ein FIFO ist. Datei dpkg-1.20.9/tests/t-unpack-hardlink/pkg-hardlink/test-fifo-link1 ist ein FIFO, während Datei dpkg-1.20.9ubuntu1/tests/t-unpack-hardlink/pkg-hardlink/test-fifo-link1 ein FIFO ist. diff -urN dpkg-1.20.9/t-func/deb-format.at dpkg-1.20.9ubuntu1/t-func/deb-format.at --- dpkg-1.20.9/t-func/deb-format.at 2021-01-30 07:07:17.000000000 +0100 +++ dpkg-1.20.9ubuntu1/t-func/deb-format.at 2021-04-14 12:32:22.000000000 +0200 @@ -28,6 +28,7 @@ xz -c data.tar >data.tar.xz bzip2 -c data.tar >data.tar.bz2 lzma -c data.tar >data.tar.lzma +pzstd -q -c data.tar >data.tar.zst touch _ignore touch unknown ]) @@ -289,6 +290,18 @@ drwxr-xr-x root/root 0 1970-01-01 00:00 ./ -rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ ]) + +AT_CHECK([ +# Test data.tar.zst member +ar rc pkg-data-zst.deb debian-binary control.tar.gz data.tar.zst +ar t pkg-data-zst.deb +dpkg-deb -c pkg-data-zst.deb +], [], [debian-binary +control.tar.gz +data.tar.zst +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) AT_CHECK([ # Test data.tar.lzma member diff -urN dpkg-1.20.9/t-func/Makefile.in dpkg-1.20.9ubuntu1/t-func/Makefile.in --- dpkg-1.20.9/t-func/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/t-func/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -255,6 +255,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/utils/Makefile.in dpkg-1.20.9ubuntu1/utils/Makefile.in --- dpkg-1.20.9/utils/Makefile.in 2021-04-14 00:43:39.000000000 +0200 +++ dpkg-1.20.9ubuntu1/utils/Makefile.in 2021-04-14 12:32:22.000000000 +0200 @@ -370,6 +370,7 @@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ Z_LIBS = @Z_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff -urN dpkg-1.20.9/utils/update-alternatives.c dpkg-1.20.9ubuntu1/utils/update-alternatives.c --- dpkg-1.20.9/utils/update-alternatives.c 2021-03-02 03:15:25.000000000 +0100 +++ dpkg-1.20.9ubuntu1/utils/update-alternatives.c 2021-04-14 12:32:22.000000000 +0200 @@ -2850,7 +2850,8 @@ bool modifies_sys = false; int i = 0; - setlocale(LC_ALL, ""); + if (getenv("DPKG_UNTRANSLATED_MESSAGES") == NULL) + setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor