From: Helmut Grohne Date: Tue, 4 Apr 2023 15:09:31 +0000 (+0100) Subject: protobuf (3.6.1.3-2+deb10u1) buster-security; urgency=medium X-Git-Tag: archive/raspbian/3.6.1.3-2+rpi1+deb10u1^2~9 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=f96aec1255ae6cda20f2cc39b8ded83a231117c4;p=protobuf.git protobuf (3.6.1.3-2+deb10u1) buster-security; urgency=medium * Non-maintainer upload by the LTS Team. * Fix CVE-2021-22569 (DoS in Java) * Fix CVE-2021-22570 (NULL pointer dereference) * Fix CVE-2022-1941 (memory DoS) [dgit import unpatched protobuf 3.6.1.3-2+deb10u1] --- f96aec1255ae6cda20f2cc39b8ded83a231117c4 diff --cc debian/changelog index 0000000,0000000..403f1a0 new file mode 100644 --- /dev/null +++ b/debian/changelog @@@ -1,0 -1,0 +1,681 @@@ ++protobuf (3.6.1.3-2+deb10u1) buster-security; urgency=medium ++ ++ * Non-maintainer upload by the LTS Team. ++ * Fix CVE-2021-22569 (DoS in Java) ++ * Fix CVE-2021-22570 (NULL pointer dereference) ++ * Fix CVE-2022-1941 (memory DoS) ++ ++ -- Helmut Grohne Tue, 04 Apr 2023 17:09:31 +0200 ++ ++protobuf (3.6.1.3-2) unstable; urgency=medium ++ ++ * Prevent installation of non-working combination of libarcus3 and ++ cura-engine (closes: #910964). ++ ++ -- Laszlo Boszormenyi (GCS) Tue, 16 Apr 2019 22:12:03 +0000 ++ ++protobuf (3.6.1.3-1) unstable; urgency=medium ++ ++ * New upstream release. ++ * Mark libprotobuf-java Multi-Arch foreign. ++ ++ -- Laszlo Boszormenyi (GCS) Sun, 09 Dec 2018 12:45:11 +0000 ++ ++protobuf (3.6.1.2-1) unstable; urgency=medium ++ ++ * New upstream release. ++ * Remove Python 3.7 patches as applied upstream. ++ ++ [ Michael Vogt ] ++ * Remove explicit #!/usr/bin/python2.4 usage (closes: #600261). ++ ++ -- Laszlo Boszormenyi (GCS) Sat, 08 Dec 2018 16:13:58 +0000 ++ ++protobuf (3.6.1.1-1) unstable; urgency=medium ++ ++ * New upstream release. ++ ++ -- Laszlo Boszormenyi (GCS) Mon, 26 Nov 2018 23:23:31 +0000 ++ ++protobuf (3.6.1-4) unstable; urgency=medium ++ ++ * Note that -dev package contains common proto files (closes: #842159). ++ * Allow Java warnings on stderr during autopkgtest. ++ ++ -- Laszlo Boszormenyi (GCS) Tue, 23 Oct 2018 14:33:32 +0000 ++ ++protobuf (3.6.1-3) unstable; urgency=medium ++ ++ * Generate all Java source files (closes: #911404). ++ * Make package linux-only (closes: #837310). ++ * Update Standards-Version to 4.2.1 . ++ ++ -- Laszlo Boszormenyi (GCS) Sat, 20 Oct 2018 19:13:40 +0000 ++ ++protobuf (3.6.1-2) unstable; urgency=medium ++ ++ * Fix linking with recent Google's C++ test framework. ++ * Upload to Sid. ++ ++ -- Laszlo Boszormenyi (GCS) Thu, 11 Oct 2018 15:15:45 +0000 ++ ++protobuf (3.6.1-1) experimental; urgency=medium ++ ++ * New upstream release. ++ * Builds with OpenJDK 10 (closes: #901518). ++ * Library transition from libproto*16 to libproto*17 . ++ * Extend Python 3.7 FTBFS fix. ++ * Update Standards-Version to 4.1.5 . ++ ++ [ Michael Hudson-Doyle ] ++ * Backport patch to fix FTBFS with Python 3.7 (closes: #902597). ++ ++ -- Laszlo Boszormenyi (GCS) Tue, 14 Aug 2018 18:22:07 +0000 ++ ++protobuf (3.6.0.1-1) experimental; urgency=medium ++ ++ * New major upstream release. ++ * Link with atomic on m68k, powerpcspe and sh4 architectures as well. ++ ++ -- Laszlo Boszormenyi (GCS) Mon, 11 Jun 2018 14:56:51 +0000 ++ ++protobuf (3.6.0~rc2-2) experimental; urgency=medium ++ ++ * Build all Ruby files (closes: #900677). ++ * Explicitly link with atomic on armel, mips, mipsel and powerpc ++ architectures. ++ ++ -- Laszlo Boszormenyi (GCS) Sun, 03 Jun 2018 15:52:16 +0000 ++ ++protobuf (3.6.0~rc2-1) experimental; urgency=medium ++ ++ * New major upstream release candidate version. ++ * Make Ruby build dependencies architecture dependent. ++ ++ -- Laszlo Boszormenyi (GCS) Fri, 01 Jun 2018 13:00:39 +0000 ++ ++protobuf (3.6.0~rc1-1) experimental; urgency=medium ++ ++ * New major upstream release candidate version. ++ * Library transition from libproto*15 to libproto*16 . ++ * Add ruby-google-protobuf package (closes: #855034). ++ * Update patches. ++ * Use packaged Google Test and Google Mock libraries. ++ * Update watch file. ++ ++ -- Laszlo Boszormenyi (GCS) Tue, 29 May 2018 22:00:11 +0000 ++ ++protobuf (3.5.2-2) experimental; urgency=medium ++ ++ * Backport build fix for s390x architecture. ++ ++ -- Laszlo Boszormenyi (GCS) Fri, 27 Apr 2018 14:39:06 +0000 ++ ++protobuf (3.5.2-1) experimental; urgency=medium ++ ++ * New upstream release (closes: #874498). ++ * Library transition from libproto*10 to libproto*15 . ++ * Make protobuf-compiler recommend libprotobuf-dev for basic upstream types ++ (closes: #842158). ++ * Take over maintainer responsibility. ++ * Disable Vcs-* fields for now. ++ * Update debhelper level to 11: ++ - don't specify parallel to debhelper. ++ * Update Standards-Version to 4.1.4 . ++ ++ -- Laszlo Boszormenyi (GCS) Wed, 25 Apr 2018 21:29:01 +0000 ++ ++protobuf (3.0.0-9.1) unstable; urgency=medium ++ ++ * Non-maintainer upload. ++ ++ [ Mattia Rizzolo ] ++ * Apply patch from Ubuntu to fix tests with Python 3.6. Closes: #862805 ++ * Add missing Build-Depends on python-six. ++ ++ [ Helmut Grohne ] ++ * Fix FTCBFS: ++ + Remove unneeded versioned Build-Depends on g++ (satisfied in oldstable). ++ + Remove unused Build-Depends on python-google-apputils. ++ + Build-Depend on python(3)-all-dev instead of python(3)-all + ++ libpython(3)-all-dev. ++ + Run generate_descriptor_proto.sh on a native build before performing ++ the actual cross build. ++ + Save the native protoc in debian/native_protoc/ and pass it to the ++ cross build via --with-protoc. ++ + Set up environment variables for cross building python extensions. ++ + Fix the loops used for the python(3) builds install and tests, to ++ actually build for all python versions and tests them all. ++ + Closes: #846343 ++ ++ -- Mattia Rizzolo Mon, 16 Oct 2017 13:34:16 +0200 ++ ++protobuf (3.0.0-9) unstable; urgency=medium ++ ++ * Backport upstream fix for Python 3 build failure (closes: #845686). ++ ++ -- Laszlo Boszormenyi (GCS) Fri, 25 Nov 2016 16:11:01 +0000 ++ ++protobuf (3.0.0-8) unstable; urgency=medium ++ ++ [ Zhou Mo ] ++ * Build python3-protobuf, thanks to Thomas Viehmann (closes: #836821). ++ * Add the missing B-D "libgtest-dev" (closes: #836826). ++ * Add "python3-six" to B-D, which is required by python3 test. ++ ++ [ Bart Martens ] ++ * Generalize watch file. ++ ++ -- Laszlo Boszormenyi (GCS) Thu, 24 Nov 2016 17:33:28 +0000 ++ ++protobuf (3.0.0-7) unstable; urgency=medium ++ ++ * Team upload. ++ ++ [ Bas Couwenberg ] ++ * Added patch by Srivats P to restore New*Callback into google::protobuf ++ namespace. Required for ostinato (#835435). (Closes: #836200). ++ ++ -- Dmitry Smirnov Fri, 02 Sep 2016 16:57:13 +1000 ++ ++protobuf (3.0.0-6) unstable; urgency=medium ++ ++ * New "java-test-scope.patch" to set scope of "junit" and "easymock" to ++ "test" (Closes: #835514). ++ Thanks, Markus Koschany. ++ ++ -- Dmitry Smirnov Sat, 27 Aug 2016 09:02:16 +1000 ++ ++protobuf (3.0.0-5) unstable; urgency=medium ++ ++ * Team upload. ++ * Removed obsolete Conflicts/Replaces (Closes: #835385). ++ Thanks, Robert Edmonds. ++ * New patch to fix "EXPECT_DEATH" FTBFS on kFreeBSD (Closes: #835388). ++ Thanks, Bas Couwenberg. ++ ++ -- Dmitry Smirnov Fri, 26 Aug 2016 08:36:08 +1000 ++ ++protobuf (3.0.0-4) unstable; urgency=low ++ ++ * Team upload. ++ * Updated "libprotobuf-java.poms" (Closes: #835358). ++ Thanks, Markus Koschany. ++ * Added new patches to fix FTBFS on s390x and sparc64 (Closes: #835290). ++ Thanks, Aurelien Jarno; thanks Sebastiaan Couwenberg. ++ * New patch to fix FTBFS on Hurd (Closes: #835267). ++ Thanks, Sebastiaan Couwenberg. ++ * rules: removed "-O0" #796069 workaround for mips(el). ++ ++ -- Dmitry Smirnov Thu, 25 Aug 2016 11:28:07 +1000 ++ ++protobuf (3.0.0-3) unstable; urgency=low ++ ++ [ Bas Couwenberg ] ++ * Added new patch to fix FTBFS "misleading indentation" (Closes: #835266). ++ ++ -- Dmitry Smirnov Wed, 24 Aug 2016 13:54:36 +1000 ++ ++protobuf (3.0.0-2) unstable; urgency=medium ++ ++ * rules: invoke "generate_descriptor_proto.sh" to re-generate pre-built ++ .pb.go files if necessary. ++ ++ -- Dmitry Smirnov Wed, 24 Aug 2016 13:19:43 +1000 ++ ++protobuf (3.0.0-1) unstable; urgency=low ++ ++ * Team upload. ++ ++ [ Dmitry Smirnov ] ++ * New upstream release [July 2016] (Closes: #795841, #811650). ++ - removed obsolete patches. ++ * Introduced "watch" file. ++ * copyright: ++ + full review & update; ++ + convert to copyright-format 1.0; ++ * Build-Depends += "google-mock". ++ ++ -- Dmitry Smirnov Mon, 22 Aug 2016 15:35:08 +1000 ++ ++protobuf (2.6.1-2) unstable; urgency=low ++ ++ * Acknowledge NMUs, thanks Matthias Klose and Simon McVittie! ++ ++ [ Robert Edmonds ] ++ * debian/control: Change Maintainer to the pkg-protobuf-devel list ++ * debian/control: Add Laszlo Boszormenyi as Uploader ++ ++ [ Andrew Pollock ] ++ * Update Git repository location ++ ++ [ Iustin Pop ] ++ * Standards version 3.9.8 (no changes needed) ++ * Update project home page (now on github) ++ * Update yet again Vcs-* URLs to point to secure URIs ++ * Update information about our the ezsetup-removal patch ++ * Apply BTS patch for fixing Sparc64 builds, thanks to David Matthew ++ Mattli (Closes: #805072) ++ * Don't fixup arch-dependent package dirs in indep builds ++ (Closes: #806096) ++ * Migrate from custom test scripts to autopkgtest ++ ++ -- Iustin Pop Sun, 08 May 2016 14:55:24 +0200 ++ ++protobuf (2.6.1-1.3) unstable; urgency=medium ++ ++ * Non-maintainer upload. ++ * Disable optimization on mips and mipsel so that the tests pass. ++ To keep the g++-5 transition moving, optimization is completely ++ disabled here; someone who knows better can be more selective ++ later. (Mitigates: #796069) ++ ++ -- Simon McVittie Wed, 26 Aug 2015 21:37:58 +0100 ++ ++protobuf (2.6.1-1.2) unstable; urgency=medium ++ ++ * Non-maintainer upload. ++ * Restore maintainer address. ++ ++ -- Matthias Klose Thu, 06 Aug 2015 08:47:53 +0200 ++ ++protobuf (2.6.1-1.1) unstable; urgency=medium ++ ++ * Non maintainer upload. ++ * Rename libprotobuf-lite9 to libprotobuf-lite9v5, triggered by the libstdc++6 ++ ABI change. Addresses: #791246. ++ * Rename libprotobuf9 to libprotobuf9v5. ++ * Rename libprotoc9 to libprotoc9v5. ++ * Add Conflicts/Replaces for the old libraries. ++ ++ -- Matthias Klose Tue, 04 Aug 2015 20:33:36 +0200 ++ ++protobuf (2.6.1-1) unstable; urgency=medium ++ ++ * New upstream release. ++ ++ -- Robert Edmonds Fri, 24 Oct 2014 13:55:53 -0400 ++ ++protobuf (2.6.0-4) unstable; urgency=medium ++ ++ * Merge post-2.6.0 fixes that were merged upstream. In particular, ++ protoc-generated code should now compile correctly when built with Clang. ++ ++ -- Robert Edmonds Mon, 22 Sep 2014 16:52:50 -0400 ++ ++protobuf (2.6.0-3) unstable; urgency=medium ++ ++ * Upload to unstable. ++ ++ -- Robert S. Edmonds Thu, 11 Sep 2014 22:50:10 -0400 ++ ++protobuf (2.6.0-2) experimental; urgency=medium ++ ++ * Compile the Java bindings only on architecture-independent builds. ++ ++ -- Robert S. Edmonds Fri, 05 Sep 2014 19:32:39 -0400 ++ ++protobuf (2.6.0-1) experimental; urgency=medium ++ ++ * New upstream release. ++ * Upload to experimental. ++ * Switch to dh sequencer in debian/rules. ++ * Bump ABI version from 8 to 9. ++ * Drop all patches from debian/patches/: ++ - arm_optimization.diff ++ (Appears to be no longer needed.) ++ - disable-setuptools-download.diff ++ (Disable ez_setup entirely, rather than disabling the downloader ++ component inside ez_setup.) ++ - fix-ftbfs-gcc4.7-kfreebsd.patch ++ (Fixed upstream.) ++ - fix-ftbfs-upstream-issue-488.patch ++ (Fixed upstream.) ++ - revert_upstream_issue_388_about_rpath.diff ++ (Fixed upstream.) ++ * Use dh-autoreconf. (Closes: #725976.) ++ * Enable the new C++-based Python extension module shipped in 2.6.0. ++ See /usr/share/doc/python-protobuf/README.Debian for details. ++ ++ -- Robert S. Edmonds Tue, 02 Sep 2014 16:57:20 -0400 ++ ++protobuf (2.5.0-9) unstable; urgency=medium ++ ++ * Upload to unstable. ++ * Officially take over primary maintainership of the package, per Iustin. ++ ++ -- Robert S. Edmonds Wed, 05 Feb 2014 11:37:11 -0500 ++ ++protobuf (2.5.0-8) experimental; urgency=medium ++ ++ * Revert debian/patches/fix-ftbfs-upstream-issue-488.patch to use the ++ version of this patch from 2.5.0-5. ++ * Build-Depend on g++ >= 4:4.7 to ensure that the *default* compiler is new ++ enough to support the gcc __atomic*() built-ins. ++ ++ -- Robert S. Edmonds Mon, 03 Feb 2014 19:42:23 -0500 ++ ++protobuf (2.5.0-7) unstable; urgency=medium ++ ++ * Upload to unstable. ++ * Closes: #736801. ++ ++ -- Robert S. Edmonds Wed, 29 Jan 2014 14:27:42 -0500 ++ ++protobuf (2.5.0-6) experimental; urgency=medium ++ ++ * Use a different approach to fixing the FTBFS caused by upstream bug #488. ++ * Revert the Build-Depends on a specific gcc/g++ version. ++ ++ -- Robert S. Edmonds Sun, 26 Jan 2014 23:56:47 -0500 ++ ++protobuf (2.5.0-5) unstable; urgency=medium ++ ++ * Upload to unstable. ++ * Note that the experimental C++ backend in python-protobuf has been ++ disabled. ++ ++ -- Robert S. Edmonds Sat, 25 Jan 2014 16:57:43 -0500 ++ ++protobuf (2.5.0-4) experimental; urgency=medium ++ ++ * Rewrite the platform detection logic in .../platform-macros.h to be more ++ tolerant of all Debian architectures. ++ * Switch from autotools-dev to dh-autoreconf. ++ ++ -- Robert S. Edmonds Sun, 12 Jan 2014 12:49:50 -0500 ++ ++protobuf (2.5.0-3) experimental; urgency=medium ++ ++ * Fix FTBFS on mips, due to missing detection of that architecture in ++ .../platform-macros.h. ++ * Fix FTBFS on ia64, powerpc, and sparc, where the default gcc version is ++ too old to compile the new __atomic*() intrinsics, by Build-Depending on ++ gcc-4.8, g++-4.8. ++ ++ -- Robert S. Edmonds Sat, 11 Jan 2014 17:21:17 -0500 ++ ++protobuf (2.5.0-2) experimental; urgency=low ++ ++ * Fix FTBFS on "unsupported" architectures due to upstream issue 488: ++ - https://code.google.com/p/protobuf/issues/detail?id=488 ++ Patch from Stanislav Ochotnicky (Red Hat). ++ ++ -- Robert S. Edmonds Sat, 19 Oct 2013 10:42:29 -0400 ++ ++protobuf (2.5.0-1) experimental; urgency=low ++ ++ [ Micah Anderson ] ++ * New upstream version. (Closes: #704731.) ++ * Update debian/watch. ++ * Refresh patches. ++ ++ [ Colin Watson ] ++ * Use the autotools-dev dh addon to update config.guess/config.sub for ++ arm64. (Closes: #725976.) ++ ++ [ Steve Langasek ] ++ * Don't recommend protobuf-compiler from the bindings, it's not used and ++ this doesn't need to be pulled in at runtime. (Closes: #703628.) ++ * Mark protobuf-compiler Multi-Arch: foreign; the output of this command ++ is architecture-independent source, we don't need the version of the ++ compiler to match the target arch. ++ * Bump to debhelper compat 9, so that our libs get installed to the ++ multiarch locations. ++ * Mark the library packages Multi-Arch: same. ++ * Fix debian/rules to support cross-building of the python bindings. ++ * Build-depend on libpython-dev, not python-dev, for cross-build ++ compatibility. ++ * (Closes: #726083.) ++ ++ [ Robert S. Edmonds ] ++ * Upload to experimental. ++ * Bump ABI version from 7 to 8. ++ * Bump Standards-Version to 3.9.4. ++ * Convert from python-support to dh-python. ++ * Drop support for python2.6. ++ * python-protobuf: switch back to the pure Python implementation, as ++ upstream appears to no longer be maintaining the current C++ based Python ++ binding. See the following upstream issues for details: ++ - https://code.google.com/p/protobuf/issues/detail?id=434 ++ - https://code.google.com/p/protobuf/issues/detail?id=503 ++ ++ -- Robert S. Edmonds Sat, 12 Oct 2013 18:32:37 -0400 ++ ++protobuf (2.4.1-3) unstable; urgency=low ++ ++ * Add patch from Steven Chamberlain fixing build failures of the ++ embedded gtest copy on kFreeBSD (Closes: #675837) ++ ++ -- Iustin Pop Sun, 17 Jun 2012 18:29:37 +0200 ++ ++protobuf (2.4.1-2) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Work around build failure with GCC 4.7. Closes: #672094. ++ ++ [ Jakub Adam ] ++ * Install libprotobuf-java without reference to parent POM ++ (Closes: #648672) ++ ++ [ Iustin Pop ] ++ * libprotobuf-java: ++ - remove dependency on default-jre (Closes: #653115) ++ - revert the jar name change introduced in 2.4.1, due to the use of ++ maven helper (Closes: #648850) ++ * Bump priority of packages from extra to optional (Closes: #664744) ++ * Enable hardening flags (Closes: #673675) ++ ++ -- Iustin Pop Thu, 24 May 2012 01:27:26 +0200 ++ ++protobuf (2.4.1-1) unstable; urgency=low ++ ++ [ Thomas Koch ] ++ * remove ant-wrapper, which worked around #491074 ++ * patch: revert_upstream_issue_388_about_rpath ++ * publish maven artifacts (Closes: #644263) ++ ++ [ Iustin Pop ] ++ * Fix (again) the pkg-test script ++ * Update section based on override disparities ++ * Imported Upstream version 2.4.1 ++ * Modify debian/rules directly not via patches ++ * Drop .la files per ReleaseGoals/LAFileRemoval ++ ++ -- Iustin Pop Tue, 08 Nov 2011 07:56:58 +0900 ++ ++protobuf (2.4.0a-2) unstable; urgency=low ++ ++ * Re-upload to unstable ++ ++ -- Iustin Pop Sat, 16 Apr 2011 20:18:28 +0200 ++ ++protobuf (2.4.0a-1) experimental; urgency=low ++ ++ * New upstream version, uploading to experimental due to Python changes ++ * Fix "Missing depends on zlib1g-dev", thanks Fernando Tarlá Cardoso Lemos ++ (Closes: #608670) ++ * Re-enable parallel builds, but only for the C++ sources/tests ++ * Enable the C++-based implementation for the Python bindings ++ ++ -- Iustin Pop Wed, 16 Feb 2011 21:24:42 +0100 ++ ++protobuf (2.3.0-4) unstable; urgency=low ++ ++ * Thanks to Peter Palfrader for finding the two bugs below: ++ * Disable setuptools auto-download in case of wrong dependencies, and ++ fix the current dependency version (Closes: #593269) ++ * Fix the python cleanup rule, by always running the individual steps ++ (Closes: #593268) ++ ++ -- Iustin Pop Wed, 18 Aug 2010 22:54:42 +0200 ++ ++protobuf (2.3.0-3) unstable; urgency=low ++ ++ * Acknowledge NMU (thanks Giuseppe!) ++ * Update packaging to comply with policy 3.9.1 (.la files are still ++ shipped though) ++ * Updated watch file to account for code.google.com brokeness ++ ++ -- Iustin Pop Sat, 31 Jul 2010 17:47:24 -0400 ++ ++protobuf (2.3.0-2.1) unstable; urgency=high ++ ++ * Non-maintainer upload. ++ * Build-depends on on default-jdk and set JAVA_HOME to ++ /usr/lib/jvm/default-java (Closes: #587732) ++ ++ -- Giuseppe Iuculano Sat, 10 Jul 2010 18:37:19 +0200 ++ ++protobuf (2.3.0-2) unstable; urgency=low ++ ++ * Fix "FTBFS on armel (test-suite failure)" by disabling optimizations ++ of a troublesome function (idea taken from #580334) (Closes: #572923) ++ * Standards version 3.8.4 (no changes needed) ++ * Update my address to the @debian.org one ++ ++ -- Iustin Pop Mon, 24 May 2010 18:04:17 +0200 ++ ++protobuf (2.3.0-1) unstable; urgency=low ++ ++ * New upstream version. ++ * Split out libprotobuf-lite from the libprotobuf package. ++ * Add CFLAGS specific to sh4; closes: #560322. ++ ++ -- Robert S. Edmonds Mon, 25 Jan 2010 18:14:49 -0500 ++ ++protobuf (2.2.0a-1) unstable; urgency=low ++ ++ * Acknowledge NMUs (thanks Dirk!) ++ * Convert the source format to 3.0 (quilt) ++ ++ -- Iustin Pop Sun, 06 Dec 2009 16:27:40 +0100 ++ ++protobuf (2.2.0a-0.1) unstable; urgency=low ++ ++ * Non-maintainer upload ++ * New upstream release made this evening correction major SONAME ++ * debian/control: Updated major version to 5 (Closes: #556563) ++ * debian/rules: Updated two links to use libproto*5 ++ * debian/libprotobuf5.shlibs: Added ++ * debian/libprotoc5.shlibs: Added ++ ++ -- Dirk Eddelbuettel Wed, 18 Nov 2009 21:47:41 -0600 ++ ++protobuf (2.2.0-0.1) unstable; urgency=low ++ ++ * Non-maintainer upload coordinated with maintainer ++ * New upstream release (Closes: #551931) ++ ++ * debian/libprotobuf-install: Added 'usr/lib/pkgconfig/*' to have ++ pkg-config support files installed ++ ++ * debian/control: Added (= ${binary:Version}) to Depends for -dev ++ packages for tighter link to underlying libraries [lintian warning] ++ * debian/control: Updated StandardVersion: to 3.8.3 ++ ++ * debian/control: Major version not incremented as upstream kept it at 4 ++ ++ -- Dirk Eddelbuettel Sat, 14 Nov 2009 06:44:22 -0600 ++ ++protobuf (2.1.0-1) unstable; urgency=low ++ ++ * New Upstream Version ++ * Fix "Please split out libprotoc.so.N out of the libprotobufN ++ package" (Closes: #524087) ++ * Update Standards Version to 3.8.2 (no changes needed, sections are already ++ correct and the rest doesn't affect this package) ++ ++ -- Iustin Pop Wed, 24 Jun 2009 00:19:03 +0200 ++ ++protobuf (2.0.3-2.2) unstable; urgency=medium ++ ++ * Non-maintainer upload. ++ * Fix FTBFS from -2.1: don't fail when we can't clean up the java build, ++ such as when openjdk isn't installed. ++ * Disable parallel builds, because libtool is made of fail (if binary-arch ++ and build-indep run concurrently, we relink a library while it's being ++ used; that doesn't work so well). ++ ++ -- Julien Cristau Tue, 02 Jun 2009 16:19:00 +0200 ++ ++protobuf (2.0.3-2.1) unstable; urgency=medium ++ ++ * Non-maintainer upload. ++ * Medium urgency for RC bugfix. ++ * Fix building of test suites on ia64: use __clone2() instead of clone(), ++ which doesn't exist there (closes: #530606). Patch by Sune Vuorela. ++ * Only build the java and python bindings when building the arch:all ++ packages. Move openjdk to Build-Depends-Indep. This should allow ++ building on hppa, which doesn't have openjdk. Based on a patch by Sune ++ Vuorela (but any bugs are mine). ++ ++ -- Julien Cristau Tue, 02 Jun 2009 14:45:32 +0200 ++ ++protobuf (2.0.3-2) unstable; urgency=low ++ ++ * Fix the binary-arch/binary-common interaction by only calling ++ dh_pysupport when we are in arch-independent mode (DH_OPTIONS=-i) ++ * Remove the extraneous conflicts/replace with libprotobuf2/libprotobuf0 ++ from libprotobuf3, as they share no files (and have different SONAMES) ++ (Closes: #523992) ++ ++ -- Iustin Pop Tue, 14 Apr 2009 09:35:39 +0200 ++ ++protobuf (2.0.3-1) unstable; urgency=low ++ ++ [ Ehren Kret ] ++ * New Upstream Version (Closes: #522470) ++ * Applied patch proposed in bug#503807 provided by ++ Torsten Werner (Closes: #503807) ++ ++ [ Iustin Pop ] ++ * Policy version 3.8.1, added handling for the nocheck DEB_BUILD_OPTIONS flag ++ * Fix lintian warnings (copyright-with-old-dh-make-debian-copyright, ++ wrong-section-according-to-package-name) ++ * The new upstream version build successfully (and passes the ++ unittest) with gcc-snapshort, so marking bug#505411 as fixed ++ (Closes: #505411) ++ ++ -- Iustin Pop Thu, 09 Apr 2009 15:01:36 +0200 ++ ++protobuf (2.0.2-1) unstable; urgency=low ++ ++ * New Upstream Version (Closes: #501349) ++ ++ -- Iustin Pop Tue, 07 Oct 2008 21:51:47 +0200 ++ ++protobuf (2.0.1-2) unstable; urgency=low ++ ++ * Fix the java .jar symlink (Closes: #501490) ++ ++ -- Iustin Pop Sat, 04 Oct 2008 17:05:01 +0200 ++ ++protobuf (2.0.1-1) unstable; urgency=low ++ ++ * New Upstream Version (Closes: #499925) ++ ++ -- Iustin Pop Sun, 28 Sep 2008 18:14:16 +0200 ++ ++protobuf (2.0.0~b-3) unstable; urgency=low ++ ++ * Remove DM-Upload-Allowed for sponsoring ++ ++ -- Iustin Pop Sun, 03 Aug 2008 11:01:44 +0200 ++ ++protobuf (2.0.0~b-2) unstable; urgency=low ++ ++ * Mark the different license for some of the files, and fix the long ++ description (it contained UTF-8 chars), both thanks to Vincent Bernat ++ ++ * Cleanup debian/rules (removed commented out debhelper lines) ++ * Improve the java build process, as suggested by Matthew Johnson ++ ++ ++ -- Iustin Pop Sat, 02 Aug 2008 14:12:59 +0200 ++ ++protobuf (2.0.0~b-1) unstable; urgency=low ++ ++ * Initial release (Closes: #489842) ++ ++ -- Iustin Pop Tue, 08 Jul 2008 20:03:51 +0200 diff --cc debian/clean index 0000000,0000000..f723754 new file mode 100644 --- /dev/null +++ b/debian/clean @@@ -1,0 -1,0 +1,1 @@@ ++protoc.1 diff --cc debian/compat index 0000000,0000000..b4de394 new file mode 100644 --- /dev/null +++ b/debian/compat @@@ -1,0 -1,0 +1,1 @@@ ++11 diff --cc debian/control index 0000000,0000000..110615d new file mode 100644 --- /dev/null +++ b/debian/control @@@ -1,0 -1,0 +1,255 @@@ ++Source: protobuf ++Section: devel ++Priority: optional ++Maintainer: Laszlo Boszormenyi (GCS) ++Build-Depends: ++# Debian build system ++ , debhelper (>= 11) ++# C/C++ ++ , zlib1g-dev ++ , libgmock-dev ++ , libgtest-dev ++# Python ++ , dh-python ++ , python-all:any ++ , libpython-all-dev ++ , python3-all:any ++ , libpython3-all-dev ++ , python-setuptools ++ , python-six ++ , python3-setuptools ++ , python3-six ++# Manpage generator ++ , xmlto ++# Tests ++ , unzip ++# Ruby ++ , rake-compiler ++ , gem2deb ++Build-Depends-Indep: ++# Java ++ , ant ++ , default-jdk ++ , maven-repo-helper ++Standards-Version: 4.2.1 ++Homepage: https://github.com/google/protobuf/ ++#Vcs-Browser: https://anonscm.debian.org/cgit/pkg-protobuf/pkg-protobuf.git ++#Vcs-Git: https://anonscm.debian.org/git/pkg-protobuf/pkg-protobuf.git ++#X-Python-Version: >= 2.7 ++XS-Ruby-Versions: all ++ ++Package: ruby-google-protobuf ++Architecture: linux-any ++Multi-Arch: same ++Section: ruby ++X-DhRuby-Root: ruby ++XB-Ruby-Versions: ${ruby:Versions} ++Depends: ruby | ruby-interpreter, ++ ${misc:Depends}, ++ ${shlibs:Depends} ++Conflicts: ruby-google-protobuf (<< 3.6.0~) ++Replaces: ruby-google-protobuf (<< 3.6.0~) ++Description: Protocol Buffers ++ Protocol Buffers are Google's data interchange format. ++ . ++ This library contains the Ruby extension that implements Protocol Buffers ++ functionality in Ruby. ++ . ++ The Ruby extension makes use of generated Ruby code that defines message and ++ enum types in a Ruby DSL. You may write definitions in this DSL directly, but ++ we recommend using protoc's Ruby generation support with .proto files. The ++ build process in this directory only installs the extension; you need to ++ install protoc as well to have Ruby code generation functionality. ++ ++Package: libprotobuf17 ++Architecture: linux-any ++Multi-Arch: same ++Section: libs ++Depends: ${shlibs:Depends}, ${misc:Depends} ++Breaks: libarcus3 (<< 3.3.0-2), cura-engine (<< 1:3.3.0-2.1+b1) ++Description: protocol buffers C++ library ++ Protocol buffers are a flexible, efficient, automated mechanism for ++ serializing structured data - similar to XML, but smaller, faster, and ++ simpler. You define how you want your data to be structured once, then you can ++ use special generated source code to easily write and read your structured ++ data to and from a variety of data streams and using a variety of languages. ++ You can even update your data structure without breaking deployed programs ++ that are compiled against the "old" format. ++ . ++ Google uses Protocol Buffers for almost all of its internal RPC protocols and ++ file formats. ++ . ++ This package contains the runtime library needed for C++ applications. ++ ++Package: libprotobuf-lite17 ++Architecture: linux-any ++Multi-Arch: same ++Section: libs ++Depends: ${shlibs:Depends}, ${misc:Depends} ++Description: protocol buffers C++ library (lite version) ++ Protocol buffers are a flexible, efficient, automated mechanism for ++ serializing structured data - similar to XML, but smaller, faster, and ++ simpler. You define how you want your data to be structured once, then you can ++ use special generated source code to easily write and read your structured ++ data to and from a variety of data streams and using a variety of languages. ++ You can even update your data structure without breaking deployed programs ++ that are compiled against the "old" format. ++ . ++ Google uses Protocol Buffers for almost all of its internal RPC protocols and ++ file formats. ++ . ++ This package contains the runtime library needed for C++ applications whose ++ message definitions have the "lite runtime" optimization setting. ++ ++Package: libprotobuf-dev ++Architecture: linux-any ++Multi-Arch: same ++Section: libdevel ++Depends: ${misc:Depends}, zlib1g-dev, ++ libprotobuf17 (= ${binary:Version}), libprotobuf-lite17 (= ${binary:Version}) ++Description: protocol buffers C++ library (development files) and proto files ++ Protocol buffers are a flexible, efficient, automated mechanism for ++ serializing structured data - similar to XML, but smaller, faster, and ++ simpler. You define how you want your data to be structured once, then you can ++ use special generated source code to easily write and read your structured ++ data to and from a variety of data streams and using a variety of languages. ++ You can even update your data structure without breaking deployed programs ++ that are compiled against the "old" format. ++ . ++ Google uses Protocol Buffers for almost all of its internal RPC protocols and ++ file formats. ++ . ++ This package contains the development headers and static libraries needed for ++ writing C++ applications. Includes well known proto type files. ++ ++Package: libprotoc17 ++Architecture: linux-any ++Multi-Arch: same ++Section: libs ++Depends: ${shlibs:Depends}, ${misc:Depends} ++Description: protocol buffers compiler library ++ Protocol buffers are a flexible, efficient, automated mechanism for ++ serializing structured data - similar to XML, but smaller, faster, and ++ simpler. You define how you want your data to be structured once, then you can ++ use special generated source code to easily write and read your structured ++ data to and from a variety of data streams and using a variety of languages. ++ You can even update your data structure without breaking deployed programs ++ that are compiled against the "old" format. ++ . ++ Google uses Protocol Buffers for almost all of its internal RPC protocols and ++ file formats. ++ . ++ This package contains the runtime library needed for the protocol buffer ++ compiler. ++ ++Package: libprotoc-dev ++Architecture: linux-any ++Multi-Arch: same ++Section: libdevel ++Depends: ${misc:Depends}, ++ libprotoc17 (= ${binary:Version}), libprotobuf-dev (= ${binary:Version}) ++Replaces: libprotobuf-dev (<< 2.1.0) ++Breaks: libprotobuf-dev (<< 2.1.0) ++Description: protocol buffers compiler library (development files) ++ Protocol buffers are a flexible, efficient, automated mechanism for ++ serializing structured data - similar to XML, but smaller, faster, and ++ simpler. You define how you want your data to be structured once, then you can ++ use special generated source code to easily write and read your structured ++ data to and from a variety of data streams and using a variety of languages. ++ You can even update your data structure without breaking deployed programs ++ that are compiled against the "old" format. ++ . ++ Google uses Protocol Buffers for almost all of its internal RPC protocols and ++ file formats. ++ . ++ This package contains the development headers and static library needed for ++ writing protobuf compilers. ++ ++Package: protobuf-compiler ++Architecture: linux-any ++Multi-Arch: foreign ++Depends: ${shlibs:Depends}, ${misc:Depends}, libprotoc17 (= ${binary:Version}) ++Recommends: libprotobuf-dev ++Description: compiler for protocol buffer definition files ++ Protocol buffers are a flexible, efficient, automated mechanism for ++ serializing structured data - similar to XML, but smaller, faster, and ++ simpler. You define how you want your data to be structured once, then you can ++ use special generated source code to easily write and read your structured ++ data to and from a variety of data streams and using a variety of languages. ++ You can even update your data structure without breaking deployed programs ++ that are compiled against the "old" format. ++ . ++ Google uses Protocol Buffers for almost all of its internal RPC protocols and ++ file formats. ++ . ++ This package contains the protocol buffer compiler that is used for ++ translating from .proto files (containing the definitions) to the language ++ binding for the supported languages. ++ ++Package: python-protobuf ++Architecture: linux-any ++Section: python ++Depends: ${shlibs:Depends}, ${python:Depends}, ${misc:Depends} ++Provides: ${python:Provides} ++XB-Python-Version: ${python:Versions} ++Description: Python bindings for protocol buffers ++ Protocol buffers are a flexible, efficient, automated mechanism for ++ serializing structured data - similar to XML, but smaller, faster, and ++ simpler. You define how you want your data to be structured once, then you can ++ use special generated source code to easily write and read your structured ++ data to and from a variety of data streams and using a variety of languages. ++ You can even update your data structure without breaking deployed programs ++ that are compiled against the "old" format. ++ . ++ Google uses Protocol Buffers for almost all of its internal RPC protocols and ++ file formats. ++ . ++ This package contains the Python bindings for the protocol buffers. You will ++ need the protoc tool (in the protobuf-compiler package) to compile your ++ definition to Python classes, and then the modules in this package will allow ++ you to use those classes in your programs. ++ ++Package: python3-protobuf ++Architecture: linux-any ++Section: python ++Depends: ${shlibs:Depends}, ${python3:Depends}, ${misc:Depends} ++Provides: ${python3:Provides} ++XB-Python-Version: ${python3:Versions} ++Description: Python 3 bindings for protocol buffers ++ Protocol buffers are a flexible, efficient, automated mechanism for ++ serializing structured data - similar to XML, but smaller, faster, and ++ simpler. You define how you want your data to be structured once, then you can ++ use special generated source code to easily write and read your structured ++ data to and from a variety of data streams and using a variety of languages. ++ You can even update your data structure without breaking deployed programs ++ that are compiled against the "old" format. ++ . ++ Google uses Protocol Buffers for almost all of its internal RPC protocols and ++ file formats. ++ . ++ This package contains the Python 3 bindings for the protocol buffers. You will ++ need the protoc tool (in the protobuf-compiler package) to compile your ++ definition to Python classes, and then the modules in this package will allow ++ you to use those classes in your programs. ++ ++Package: libprotobuf-java ++Architecture: all ++Multi-Arch: foreign ++Depends: ${misc:Depends} ++Section: java ++Description: Java bindings for protocol buffers ++ Protocol buffers are a flexible, efficient, automated mechanism for ++ serializing structured data - similar to XML, but smaller, faster, and ++ simpler. You define how you want your data to be structured once, then you can ++ use special generated source code to easily write and read your structured ++ data to and from a variety of data streams and using a variety of languages. ++ You can even update your data structure without breaking deployed programs ++ that are compiled against the "old" format. ++ . ++ Google uses Protocol Buffers for almost all of its internal RPC protocols and ++ file formats. ++ . ++ This package contains the Java bindings for the protocol buffers. You will ++ need the protoc tool (in the protobuf-compiler package) to compile your ++ definition to Java classes, and then the modules in this package will allow ++ you to use those classes in your programs. diff --cc debian/copyright index 0000000,0000000..cb72d65 new file mode 100644 --- /dev/null +++ b/debian/copyright @@@ -1,0 -1,0 +1,197 @@@ ++Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ ++Upstream-Name: protobuf ++Source: https://github.com/google/protobuf ++Comment: ++ This package was debianized by Iustin Pop ++ on Mon, 07 Jul 2008 17:48:21 +0200. ++ ++Files: * ++Copyright: 2008-2018 Google Inc. ++License: BSD-3-Clause~Google ++ ++Files: ++ src/google/protobuf/stubs/atomicops_internals_power.h ++Copyright: 2014 Bloomberg Finance LP ++License: BSD-3-Clause~Bloomberg ++ ++Files: ++ src/google/protobuf/stubs/atomicops_internals_generic_gcc.h ++Copyright: 2013 Red Hat Inc ++License: BSD-3-Clause~RedHat ++ ++Files: m4/acx_pthread.m4 ++Copyright: 2006 Steven G. Johnson ++License: GPLWithACException ++ This program is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by the Free ++ Software Foundation. As a special exception, the respective Autoconf ++ Macro's copyright owner gives unlimited permission to copy, distribute and ++ modify the configure scripts that are the output of Autoconf when ++ processing the Macro. You need not follow the terms of the GNU General ++ Public License when using or distributing such scripts. ++ . ++ On Debian systems, the complete text of the GNU General Public ++ License can be found in "/usr/share/common-licenses/GPL-2". ++Comment: ++ Unspecified GPL, assuming any version as per text of the GPL-2 license: ++ "If the Program does not specify a version number of this License, you may ++ choose any version ever published by the Free Software Foundation." ++ ++Files: ++ python/mox.py ++ python/stubout.py ++Copyright: 2008 Google Inc. ++License: Apache-2.0 ++ ++Files: conformance/third_party/jsoncpp/* ++Copyright: 2007-2010 Baptiste Lepilleur ++License: Public-Domain or Expat ++ ++Files: debian/* ++Copyright: ++ 2009 Dirk Eddelbuettel ++ 2016 Dmitry Smirnov ++ 2009 Julien Cristau ++ 2013-2014 Robert Edmonds ++ 2008,2009,2010 Iustin Pop ++ 2016- Laszlo Boszormenyi (GCS) ++License: GPL-3 ++ ++License: Public-Domain ++ The author explicitly disclaims copyright in all jurisdictions which ++ recognize such a disclaimer. In such jurisdictions, this software is ++ released into the Public Domain. ++ ++License: Expat ++ Permission is hereby granted, free of charge, to any person obtaining a copy ++ of this software and associated documentation files (the "Software"), to deal ++ in the Software without restriction, including without limitation the rights ++ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++ copies of the Software, and to permit persons to whom the Software is ++ furnished to do so, subject to the following conditions: ++ ․ ++ The above copyright notice and this permission notice shall be included in ++ all copies or substantial portions of the Software. ++ ․ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN ++ THE SOFTWARE. ++ ++License: BSD-3-Clause~Google ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ . ++ * Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ * Redistributions in binary form must reproduce the above ++ copyright notice, this list of conditions and the following disclaimer ++ in the documentation and/or other materials provided with the ++ distribution. ++ * Neither the name of Google Inc. nor the names of its ++ contributors may be used to endorse or promote products derived from ++ this software without specific prior written permission. ++ . ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++Comment: ++ Code generated by the Protocol Buffer compiler is owned by the owner ++ of the input file used when generating it. This code is not ++ standalone and requires a support library to be linked with it. ++ This support library is itself covered by the above license. ++ ++License: BSD-3-Clause~Bloomberg ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ . ++ * Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ * Redistributions in binary form must reproduce the above ++ copyright notice, this list of conditions and the following disclaimer ++ in the documentation and/or other materials provided with the ++ distribution. ++ * Neither the name of Bloomberg Finance LP. nor the names of its ++ contributors may be used to endorse or promote products derived from ++ this software without specific prior written permission. ++ . ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++License: BSD-3-Clause~RedHat ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ . ++ * Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ * Redistributions in binary form must reproduce the above ++ copyright notice, this list of conditions and the following disclaimer ++ in the documentation and/or other materials provided with the ++ distribution. ++ * Neither the name of Red Hat Inc. nor the names of its ++ contributors may be used to endorse or promote products derived from ++ this software without specific prior written permission. ++ . ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++License: Apache-2.0 ++ Licensed under the Apache License, Version 2.0 (the "License"); ++ you may not use this file except in compliance with the License. ++ You may obtain a copy of the License at ++ ․ ++ https://www.apache.org/licenses/LICENSE-2.0 ++ ․ ++ Unless required by applicable law or agreed to in writing, software ++ distributed under the License is distributed on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ See the License for the specific language governing permissions and ++ limitations under the License. ++ ․ ++ On Debian systems, the complete text of the Apache License, ++ Version 2.0 can be found in "/usr/share/common-licenses/Apache-2.0". ++ ++License: GPL-3 ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, version 3 of the License. ++ ․ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ․ ++ On Debian systems, the complete text of the GNU General Public ++ License Version 3 can be found in "/usr/share/common-licenses/GPL-3". diff --cc debian/gbp.conf index 0000000,0000000..0da192b new file mode 100644 --- /dev/null +++ b/debian/gbp.conf @@@ -1,0 -1,0 +1,4 @@@ ++[buildpackage] ++pristine-tar = True ++[import-orig] ++pristine-tar = True diff --cc debian/gmock/Makefile.am index 0000000,0000000..3639543 new file mode 100644 --- /dev/null +++ b/debian/gmock/Makefile.am @@@ -1,0 -1,0 +1,152 @@@ ++# Automake file ++ ++ACLOCAL_AMFLAGS = -I m4 ++ ++# Nonstandard package files for distribution. ++#EXTRA_DIST = LICENSE ++ ++# We may need to build our internally packaged gtest. If so, it will be ++# included in the 'subdirs' variable. ++SUBDIRS = $(subdirs) ++ ++# This is generated by the configure script, so clean it for distribution. ++#DISTCLEANFILES = scripts/gmock-config ++ ++# We define the global AM_CPPFLAGS as everything we compile includes from these ++# directories. ++AM_CPPFLAGS = $(GTEST_CPPFLAGS) -I$(srcdir)/include ++ ++# Modifies compiler and linker flags for pthreads compatibility. ++if HAVE_PTHREADS ++ AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1 ++ AM_LIBS = @PTHREAD_LIBS@ ++endif ++ ++# Build rules for libraries. ++lib_LTLIBRARIES = lib/libgmock.la lib/libgmock_main.la ++ ++lib_libgmock_la_SOURCES = src/gmock-all.cc ++ ++pkginclude_HEADERS = \ ++ /usr/include/gmock/gmock-actions.h \ ++ /usr/include/gmock/gmock-cardinalities.h \ ++ /usr/include/gmock/gmock-generated-actions.h \ ++ /usr/include/gmock/gmock-generated-function-mockers.h \ ++ /usr/include/gmock/gmock-generated-matchers.h \ ++ /usr/include/gmock/gmock-generated-nice-strict.h \ ++ /usr/include/gmock/gmock-matchers.h \ ++ /usr/include/gmock/gmock-more-actions.h \ ++ /usr/include/gmock/gmock-more-matchers.h \ ++ /usr/include/gmock/gmock-spec-builders.h \ ++ /usr/include/gmock/gmock.h ++ ++pkginclude_internaldir = $(pkgincludedir)/internal ++pkginclude_internal_HEADERS = \ ++ /usr/include/gmock/internal/gmock-generated-internal-utils.h \ ++ /usr/include/gmock/internal/gmock-internal-utils.h \ ++ /usr/include/gmock/internal/gmock-port.h ++ ++lib_libgmock_main_la_SOURCES = src/gmock_main.cc ++lib_libgmock_main_la_LIBADD = lib/libgmock.la ++ ++# Build rules for tests. Automake's naming for some of these variables isn't ++# terribly obvious, so this is a brief reference: ++# ++# TESTS -- Programs run automatically by "make check" ++# check_PROGRAMS -- Programs built by "make check" but not necessarily run ++ ++TESTS= ++check_PROGRAMS= ++AM_LDFLAGS = $(GTEST_LDFLAGS) ++ ++# This exercises all major components of Google Mock. It also ++# verifies that libgmock works. ++TESTS += test/gmock-spec-builders_test ++check_PROGRAMS += test/gmock-spec-builders_test ++test_gmock_spec_builders_test_SOURCES = test/gmock-spec-builders_test.cc ++test_gmock_spec_builders_test_LDADD = $(GTEST_LIBS) lib/libgmock.la ++ ++# This tests using Google Mock in multiple translation units. It also ++# verifies that libgmock_main and libgmock work. ++TESTS += test/gmock_link_test ++check_PROGRAMS += test/gmock_link_test ++test_gmock_link_test_SOURCES = \ ++ test/gmock_link2_test.cc \ ++ test/gmock_link_test.cc \ ++ test/gmock_link_test.h ++test_gmock_link_test_LDADD = $(GTEST_LIBS) lib/libgmock_main.la lib/libgmock.la ++ ++# Google Mock source files that we don't compile directly. ++GMOCK_SOURCE_INGLUDES = \ ++ src/gmock-cardinalities.cc \ ++ src/gmock-internal-utils.cc \ ++ src/gmock-matchers.cc \ ++ src/gmock-spec-builders.cc \ ++ src/gmock.cc ++ ++EXTRA_DIST = $(GMOCK_SOURCE_INGLUDES) ++ ++# C++ tests that we don't compile using autotools. ++EXTRA_DIST += \ ++ test/gmock-actions_test.cc \ ++ test/gmock_all_test.cc \ ++ test/gmock-cardinalities_test.cc \ ++ test/gmock_ex_test.cc \ ++ test/gmock-generated-actions_test.cc \ ++ test/gmock-generated-function-mockers_test.cc \ ++ test/gmock-generated-internal-utils_test.cc \ ++ test/gmock-generated-matchers_test.cc \ ++ test/gmock-internal-utils_test.cc \ ++ test/gmock-matchers_test.cc \ ++ test/gmock-more-actions_test.cc \ ++ test/gmock-nice-strict_test.cc \ ++ test/gmock-port_test.cc \ ++ test/gmock_stress_test.cc ++ ++# Nonstandard package files for distribution. ++EXTRA_DIST += \ ++ make/Makefile ++ ++# Pump scripts for generating Google Mock headers. ++# TODO(chandlerc@google.com): automate the generation of *.h from *.h.pump. ++EXTRA_DIST += \ ++ include/gmock/gmock-generated-actions.h.pump \ ++ include/gmock/gmock-generated-function-mockers.h.pump \ ++ include/gmock/gmock-generated-matchers.h.pump \ ++ include/gmock/gmock-generated-nice-strict.h.pump \ ++ include/gmock/internal/gmock-generated-internal-utils.h.pump ++ ++# Script for fusing Google Mock and Google Test source files. ++EXTRA_DIST += scripts/fuse_gmock_files.py ++ ++# The Google Mock Generator tool from the cppclean project. ++EXTRA_DIST += \ ++ scripts/generator/README \ ++ scripts/generator/README.cppclean \ ++ scripts/generator/cpp/__init__.py \ ++ scripts/generator/cpp/ast.py \ ++ scripts/generator/cpp/gmock_class.py \ ++ scripts/generator/cpp/keywords.py \ ++ scripts/generator/cpp/tokenize.py \ ++ scripts/generator/cpp/utils.py \ ++ scripts/generator/gmock_gen.py ++ ++# CMake scripts. ++EXTRA_DIST += \ ++ CMakeLists.txt ++ ++# Death tests may produce core dumps in the build directory. In case ++# this happens, clean them to keep distcleancheck happy. ++CLEANFILES = core ++ ++# Disables 'make install' as installing a compiled version of Google ++# Mock can lead to undefined behavior due to violation of the ++# One-Definition Rule. ++ ++install-exec-local: ++ echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Mock into your build system." ++ false ++ ++install-data-local: ++ echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Mock into your build system." ++ false diff --cc debian/gmock/configure.ac index 0000000,0000000..8709fe2 new file mode 100644 --- /dev/null +++ b/debian/gmock/configure.ac @@@ -1,0 -1,0 +1,113 @@@ ++AC_INIT([Google C++ Mocking Framework], ++ [1.7.0], ++ [googlemock@googlegroups.com], ++ [gmock]) ++ ++# Provide various options to initialize the Autoconf and configure processes. ++AC_PREREQ([2.59]) ++AC_CONFIG_MACRO_DIR([m4]) ++AC_CONFIG_AUX_DIR([build-aux]) ++AC_CONFIG_HEADERS([build-aux/config.h]) ++AC_CONFIG_FILES([Makefile]) ++#AC_CONFIG_FILES([scripts/gmock-config], [chmod +x scripts/gmock-config]) ++ ++# Initialize Automake with various options. We require at least v1.9, prevent ++# pedantic complaints about package files, and enable various distribution ++# targets. ++AM_INIT_AUTOMAKE([1.9 dist-bzip2 dist-zip foreign subdir-objects]) ++ ++# Check for programs used in building Google Test. ++AC_PROG_CC ++AC_PROG_CXX ++AC_LANG([C++]) ++AC_PROG_LIBTOOL ++ ++PTHREAD_LIBS="" ++AC_CHECK_LIB(pthread, pthread_create, [ ++ PTHREAD_LIBS="-lpthread" ++ have_pthreads="yes" ++]) ++ ++AM_CONDITIONAL([HAVE_PTHREADS],[test "x$have_pthreads" == "xyes"]) ++AC_SUBST(PTHREAD_CFLAGS) ++AC_SUBST(PTHREAD_LIBS) ++ ++# GoogleMock currently has hard dependencies upon GoogleTest above and beyond ++# running its own test suite, so we both provide our own version in ++# a subdirectory and provide some logic to use a custom version or a system ++# installed version. ++AC_ARG_WITH([gtest], ++ [AS_HELP_STRING([--with-gtest], ++ [Specifies how to find the gtest package. If no ++ arguments are given, the default behavior, a ++ system installed gtest will be used if present, ++ and an internal version built otherwise. If a ++ path is provided, the gtest built or installed at ++ that prefix will be used.])], ++ [], ++ [with_gtest=yes]) ++AC_ARG_ENABLE([external-gtest], ++ [AS_HELP_STRING([--disable-external-gtest], ++ [Disables any detection or use of a system ++ installed or user provided gtest. Any option to ++ '--with-gtest' is ignored. (Default is enabled.)]) ++ ], [], [enable_external_gtest=yes]) ++ ++# Setup various GTEST variables. TODO(chandlerc@google.com): When these are ++# used below, they should be used such that any pre-existing values always ++# trump values we set them to, so that they can be used to selectively override ++# details of the detection process. ++AC_ARG_VAR([GTEST_CONFIG], ++ [The exact path of Google Test's 'gtest-config' script.]) ++AC_ARG_VAR([GTEST_CPPFLAGS], ++ [C-like preprocessor flags for Google Test.]) ++AC_ARG_VAR([GTEST_CXXFLAGS], ++ [C++ compile flags for Google Test.]) ++AC_ARG_VAR([GTEST_LDFLAGS], ++ [Linker path and option flags for Google Test.]) ++AC_ARG_VAR([GTEST_LIBS], ++ [Library linking flags for Google Test.]) ++AC_ARG_VAR([GTEST_VERSION], ++ [The version of Google Test available.]) ++HAVE_BUILT_GTEST="no" ++ ++GTEST_MIN_VERSION="1.7.0" ++ ++AS_IF([test "x${enable_external_gtest}" = "xyes"], ++ [# Begin filling in variables as we are able. ++ AS_IF([test "x${with_gtest}" != "xyes"], ++ [AS_IF([test -x "${with_gtest}/scripts/gtest-config"], ++ [GTEST_CONFIG="${with_gtest}/scripts/gtest-config"], ++ [GTEST_CONFIG="${with_gtest}/bin/gtest-config"]) ++ AS_IF([test -x "${GTEST_CONFIG}"], [], ++ [AC_MSG_ERROR([dnl ++Unable to locate either a built or installed Google Test at '${with_gtest}'.]) ++ ])]) ++ ++ AS_IF([test -x "${GTEST_CONFIG}"], [], ++ [AC_PATH_PROG([GTEST_CONFIG], [gtest-config])]) ++ AS_IF([test -x "${GTEST_CONFIG}"], ++ [AC_MSG_CHECKING([for Google Test version >= ${GTEST_MIN_VERSION}]) ++ AS_IF([${GTEST_CONFIG} --min-version=${GTEST_MIN_VERSION}], ++ [AC_MSG_RESULT([yes]) ++ HAVE_BUILT_GTEST="yes"], ++ [AC_MSG_RESULT([no])])])]) ++ ++AS_IF([test "x${HAVE_BUILT_GTEST}" = "xyes"], ++ [GTEST_CPPFLAGS=`${GTEST_CONFIG} --cppflags` ++ GTEST_CXXFLAGS=`${GTEST_CONFIG} --cxxflags` ++ GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags` ++ GTEST_LIBS=`${GTEST_CONFIG} --libs` ++ GTEST_VERSION=`${GTEST_CONFIG} --version`], ++ [AC_CONFIG_SUBDIRS([gtest]) ++ # GTEST_CONFIG needs to be executable both in a Makefile environmont and ++ # in a shell script environment, so resolve an absolute path for it here. ++ GTEST_CONFIG="`pwd -P`/gtest/scripts/gtest-config" ++ GTEST_CPPFLAGS='-I$(top_srcdir)/gtest/include' ++ GTEST_CXXFLAGS='-g' ++ GTEST_LDFLAGS='' ++ GTEST_LIBS='$(top_builddir)/gtest/lib/libgtest.la' ++ GTEST_VERSION="${GTEST_MIN_VERSION}"]) ++ ++# Output the generated files. No further autoconf macros may be used. ++AC_OUTPUT diff --cc debian/gmock/gtest/Makefile.am index 0000000,0000000..42e16b6 new file mode 100644 --- /dev/null +++ b/debian/gmock/gtest/Makefile.am @@@ -1,0 -1,0 +1,246 @@@ ++# Automake file ++ ++ACLOCAL_AMFLAGS = -I m4 ++ ++# Nonstandard package files for distribution ++EXTRA_DIST = \ ++ include/gtest/gtest-param-test.h.pump \ ++ include/gtest/internal/gtest-param-util-generated.h.pump \ ++ include/gtest/internal/gtest-tuple.h.pump \ ++ include/gtest/internal/gtest-type-util.h.pump \ ++ make/Makefile \ ++ scripts/fuse_gtest_files.py \ ++ scripts/gen_gtest_pred_impl.py \ ++ scripts/pump.py \ ++ scripts/test/Makefile ++ ++# gtest source files that we don't compile directly. They are ++# #included by gtest-all.cc. ++GTEST_SRC = \ ++ src/gtest-death-test.cc \ ++ src/gtest-filepath.cc \ ++ src/gtest-internal-inl.h \ ++ src/gtest-port.cc \ ++ src/gtest-printers.cc \ ++ src/gtest-test-part.cc \ ++ src/gtest-typed-test.cc \ ++ src/gtest.cc ++ ++EXTRA_DIST += $(GTEST_SRC) ++ ++# Sample files that we don't compile. ++EXTRA_DIST += \ ++ samples/prime_tables.h \ ++ samples/sample2_unittest.cc \ ++ samples/sample3_unittest.cc \ ++ samples/sample4_unittest.cc \ ++ samples/sample5_unittest.cc \ ++ samples/sample6_unittest.cc \ ++ samples/sample7_unittest.cc \ ++ samples/sample8_unittest.cc \ ++ samples/sample9_unittest.cc ++ ++# C++ test files that we don't compile directly. ++EXTRA_DIST += \ ++ test/gtest-death-test_ex_test.cc \ ++ test/gtest-death-test_test.cc \ ++ test/gtest-filepath_test.cc \ ++ test/gtest-linked_ptr_test.cc \ ++ test/gtest-listener_test.cc \ ++ test/gtest-message_test.cc \ ++ test/gtest-options_test.cc \ ++ test/gtest-param-test2_test.cc \ ++ test/gtest-param-test2_test.cc \ ++ test/gtest-param-test_test.cc \ ++ test/gtest-param-test_test.cc \ ++ test/gtest-param-test_test.h \ ++ test/gtest-port_test.cc \ ++ test/gtest_premature_exit_test.cc \ ++ test/gtest-printers_test.cc \ ++ test/gtest-test-part_test.cc \ ++ test/gtest-tuple_test.cc \ ++ test/gtest-typed-test2_test.cc \ ++ test/gtest-typed-test_test.cc \ ++ test/gtest-typed-test_test.h \ ++ test/gtest-unittest-api_test.cc \ ++ test/gtest_break_on_failure_unittest_.cc \ ++ test/gtest_catch_exceptions_test_.cc \ ++ test/gtest_color_test_.cc \ ++ test/gtest_env_var_test_.cc \ ++ test/gtest_environment_test.cc \ ++ test/gtest_filter_unittest_.cc \ ++ test/gtest_help_test_.cc \ ++ test/gtest_list_tests_unittest_.cc \ ++ test/gtest_main_unittest.cc \ ++ test/gtest_no_test_unittest.cc \ ++ test/gtest_output_test_.cc \ ++ test/gtest_pred_impl_unittest.cc \ ++ test/gtest_prod_test.cc \ ++ test/gtest_repeat_test.cc \ ++ test/gtest_shuffle_test_.cc \ ++ test/gtest_sole_header_test.cc \ ++ test/gtest_stress_test.cc \ ++ test/gtest_throw_on_failure_ex_test.cc \ ++ test/gtest_throw_on_failure_test_.cc \ ++ test/gtest_uninitialized_test_.cc \ ++ test/gtest_unittest.cc \ ++ test/gtest_unittest.cc \ ++ test/gtest_xml_outfile1_test_.cc \ ++ test/gtest_xml_outfile2_test_.cc \ ++ test/gtest_xml_output_unittest_.cc \ ++ test/production.cc \ ++ test/production.h ++ ++ ++# CMake script ++EXTRA_DIST += \ ++ CMakeLists.txt \ ++ cmake/internal_utils.cmake ++ ++# xcode project files ++EXTRA_DIST += \ ++ xcode/Config/DebugProject.xcconfig \ ++ xcode/Config/FrameworkTarget.xcconfig \ ++ xcode/Config/General.xcconfig \ ++ xcode/Config/ReleaseProject.xcconfig \ ++ xcode/Config/StaticLibraryTarget.xcconfig \ ++ xcode/Config/TestTarget.xcconfig \ ++ xcode/Resources/Info.plist \ ++ xcode/Scripts/runtests.sh \ ++ xcode/Scripts/versiongenerate.py \ ++ xcode/gtest.xcodeproj/project.pbxproj ++ ++# xcode sample files ++EXTRA_DIST += \ ++ xcode/Samples/FrameworkSample/Info.plist \ ++ xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj \ ++ xcode/Samples/FrameworkSample/runtests.sh \ ++ xcode/Samples/FrameworkSample/widget.cc \ ++ xcode/Samples/FrameworkSample/widget.h \ ++ xcode/Samples/FrameworkSample/widget_test.cc ++ ++# C++Builder project files ++EXTRA_DIST += \ ++ codegear/gtest.cbproj \ ++ codegear/gtest.groupproj \ ++ codegear/gtest_all.cc \ ++ codegear/gtest_link.cc \ ++ codegear/gtest_main.cbproj \ ++ codegear/gtest_unittest.cbproj ++ ++# Distribute and install M4 macro ++m4datadir = $(datadir)/aclocal ++m4data_DATA = m4/gtest.m4 ++EXTRA_DIST += $(m4data_DATA) ++ ++# We define the global AM_CPPFLAGS as everything we compile includes from these ++# directories. ++AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include ++ ++# Modifies compiler and linker flags for pthreads compatibility. ++if HAVE_PTHREADS ++ AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1 ++ AM_LIBS = @PTHREAD_LIBS@ ++else ++ AM_CXXFLAGS = -DGTEST_HAS_PTHREAD=0 ++endif ++ ++# Build rules for libraries. ++lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la ++ ++lib_libgtest_la_SOURCES = src/gtest-all.cc ++ ++pkginclude_HEADERS = \ ++ /usr/include/gtest/gtest-death-test.h \ ++ /usr/include/gtest/gtest-message.h \ ++ /usr/include/gtest/gtest-param-test.h \ ++ /usr/include/gtest/gtest-printers.h \ ++ /usr/include/gtest/gtest-spi.h \ ++ /usr/include/gtest/gtest-test-part.h \ ++ /usr/include/gtest/gtest-typed-test.h \ ++ /usr/include/gtest/gtest.h \ ++ /usr/include/gtest/gtest_pred_impl.h \ ++ /usr/include/gtest/gtest_prod.h ++ ++pkginclude_internaldir = $(pkgincludedir)/internal ++pkginclude_internal_HEADERS = \ ++ /usr/include/gtest/internal/gtest-death-test-internal.h \ ++ /usr/include/gtest/internal/gtest-filepath.h \ ++ /usr/include/gtest/internal/gtest-internal.h \ ++ /usr/include/gtest/internal/gtest-linked_ptr.h \ ++ /usr/include/gtest/internal/gtest-param-util-generated.h \ ++ /usr/include/gtest/internal/gtest-param-util.h \ ++ /usr/include/gtest/internal/gtest-port.h \ ++ /usr/include/gtest/internal/gtest-string.h \ ++ /usr/include/gtest/internal/gtest-tuple.h \ ++ /usr/include/gtest/internal/gtest-type-util.h ++ ++lib_libgtest_main_la_SOURCES = src/gtest_main.cc ++lib_libgtest_main_la_LIBADD = lib/libgtest.la ++ ++# Bulid rules for samples and tests. Automake's naming for some of ++# these variables isn't terribly obvious, so this is a brief ++# reference: ++# ++# TESTS -- Programs run automatically by "make check" ++# check_PROGRAMS -- Programs built by "make check" but not necessarily run ++ ++noinst_LTLIBRARIES = samples/libsamples.la ++ ++samples_libsamples_la_SOURCES = \ ++ samples/sample1.cc \ ++ samples/sample1.h \ ++ samples/sample2.cc \ ++ samples/sample2.h \ ++ samples/sample3-inl.h \ ++ samples/sample4.cc \ ++ samples/sample4.h ++ ++TESTS= ++TESTS_ENVIRONMENT = GTEST_SOURCE_DIR="$(srcdir)/test" \ ++ GTEST_BUILD_DIR="$(top_builddir)/test" ++check_PROGRAMS= ++ ++# A simple sample on using gtest. ++TESTS += samples/sample1_unittest ++check_PROGRAMS += samples/sample1_unittest ++samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc ++samples_sample1_unittest_LDADD = lib/libgtest_main.la \ ++ lib/libgtest.la \ ++ samples/libsamples.la ++ ++# Another sample. It also verifies that libgtest works. ++TESTS += samples/sample10_unittest ++check_PROGRAMS += samples/sample10_unittest ++samples_sample10_unittest_SOURCES = samples/sample10_unittest.cc ++samples_sample10_unittest_LDADD = lib/libgtest.la ++ ++# This tests most constructs of gtest and verifies that libgtest_main ++# and libgtest work. ++TESTS += test/gtest_all_test ++check_PROGRAMS += test/gtest_all_test ++test_gtest_all_test_SOURCES = test/gtest_all_test.cc ++test_gtest_all_test_LDADD = lib/libgtest_main.la \ ++ lib/libgtest.la ++ ++# Tests that fused gtest files compile and work. ++FUSED_GTEST_SRC = \ ++ fused-src/gtest/gtest-all.cc \ ++ fused-src/gtest/gtest.h \ ++ fused-src/gtest/gtest_main.cc ++ ++# Death tests may produce core dumps in the build directory. In case ++# this happens, clean them to keep distcleancheck happy. ++CLEANFILES = core ++ ++# Disables 'make install' as installing a compiled version of Google ++# Test can lead to undefined behavior due to violation of the ++# One-Definition Rule. ++ ++install-exec-local: ++ echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." ++ false ++ ++install-data-local: ++ echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." ++ false diff --cc debian/gmock/gtest/configure.ac index 0000000,0000000..39918fb new file mode 100644 --- /dev/null +++ b/debian/gmock/gtest/configure.ac @@@ -1,0 -1,0 +1,35 @@@ ++AC_INIT([Google C++ Testing Framework], ++ [1.7.0], ++ [googletestframework@googlegroups.com], ++ [gtest]) ++ ++# Provide various options to initialize the Autoconf and configure processes. ++AC_PREREQ([2.59]) ++AC_CONFIG_MACRO_DIR([m4]) ++AC_CONFIG_AUX_DIR([build-aux]) ++AC_CONFIG_HEADERS([build-aux/config.h]) ++AC_CONFIG_FILES([Makefile]) ++ ++# Initialize Automake with various options. We require at least v1.9, prevent ++# pedantic complaints about package files, and enable various distribution ++# targets. ++AM_INIT_AUTOMAKE([1.9 dist-bzip2 dist-zip foreign subdir-objects]) ++ ++# Check for programs used in building Google Test. ++AC_PROG_CC ++AC_PROG_CXX ++AC_LANG([C++]) ++AC_PROG_LIBTOOL ++ ++PTHREAD_LIBS="" ++AC_CHECK_LIB(pthread, pthread_create, [ ++ PTHREAD_LIBS="-lpthread" ++ have_pthreads="yes" ++]) ++ ++AM_CONDITIONAL([HAVE_PTHREADS],[test "x$have_pthreads" = "xyes"]) ++AC_SUBST(PTHREAD_CFLAGS) ++AC_SUBST(PTHREAD_LIBS) ++ ++# Output the generated files. No further autoconf macros may be used. ++AC_OUTPUT diff --cc debian/java-build.xml index 0000000,0000000..c8bc4d7 new file mode 100644 --- /dev/null +++ b/debian/java-build.xml @@@ -1,0 -1,0 +1,44 @@@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --cc debian/libprotobuf-dev.dirs index 0000000,0000000..7276ecd new file mode 100644 --- /dev/null +++ b/debian/libprotobuf-dev.dirs @@@ -1,0 -1,0 +1,1 @@@ ++usr/share/doc diff --cc debian/libprotobuf-dev.install index 0000000,0000000..ad15927 new file mode 100644 --- /dev/null +++ b/debian/libprotobuf-dev.install @@@ -1,0 -1,0 +1,6 @@@ ++usr/lib/*/libprotobuf.a ++usr/lib/*/libprotobuf-lite.a ++usr/lib/*/libprotobuf.so ++usr/lib/*/libprotobuf-lite.so ++usr/lib/*/pkgconfig/* ++usr/include diff --cc debian/libprotobuf-java.poms index 0000000,0000000..c13a2b2 new file mode 100644 --- /dev/null +++ b/debian/libprotobuf-java.poms @@@ -1,0 -1,0 +1,1 @@@ ++java/core/pom.xml --artifact=java/core/target/protobuf.jar --java-lib --no-parent --usj-name=protobuf diff --cc debian/libprotobuf-lite17.install index 0000000,0000000..45e0054 new file mode 100644 --- /dev/null +++ b/debian/libprotobuf-lite17.install @@@ -1,0 -1,0 +1,1 @@@ ++usr/lib/*/libprotobuf-lite.so.* diff --cc debian/libprotobuf17.install index 0000000,0000000..9ac8d24 new file mode 100644 --- /dev/null +++ b/debian/libprotobuf17.install @@@ -1,0 -1,0 +1,1 @@@ ++usr/lib/*/libprotobuf.so.* diff --cc debian/libprotoc-dev.dirs index 0000000,0000000..7276ecd new file mode 100644 --- /dev/null +++ b/debian/libprotoc-dev.dirs @@@ -1,0 -1,0 +1,1 @@@ ++usr/share/doc diff --cc debian/libprotoc-dev.install index 0000000,0000000..c463a30 new file mode 100644 --- /dev/null +++ b/debian/libprotoc-dev.install @@@ -1,0 -1,0 +1,3 @@@ ++usr/lib/*/libprotoc.a ++usr/lib/*/libprotoc.so ++usr/include/google/protobuf/compiler diff --cc debian/libprotoc17.install index 0000000,0000000..a280133 new file mode 100644 --- /dev/null +++ b/debian/libprotoc17.install @@@ -1,0 -1,0 +1,1 @@@ ++usr/lib/*/libprotoc*.so.* diff --cc debian/patches/CVE-2021-22569.patch index 0000000,0000000..f307a5f new file mode 100644 --- /dev/null +++ b/debian/patches/CVE-2021-22569.patch @@@ -1,0 -1,0 +1,465 @@@ ++From 9638a5e5315bf73f5e7148c16181676372321892 Mon Sep 17 00:00:00 2001 ++From: Adam Cozzette ++Date: Wed, 5 Jan 2022 08:50:29 -0800 ++Subject: [PATCH] Improve performance of parsing unknown fields in Java (#9371) ++ ++Credit should go to @elharo for most of these Java changes--I am just ++cherry-picking them from our internal codebase. The one thing I did ++change was to give the UTF-8 validation tests their own Bazel test ++target. This makes it possible to give the other tests a shorter ++timeout, which is important for UnknownFieldSetPerformanceTest in ++particular. ++--- ++ Makefile.am | 1 + ++ java/core/BUILD | 24 +- ++ .../com/google/protobuf/UnknownFieldSet.java | 427 +++++++++--------- ++ .../UnknownFieldSetPerformanceTest.java | 78 ++++ ++ .../google/protobuf/UnknownFieldSetTest.java | 182 +++++++- ++ java/lite/pom.xml | 1 + ++ 6 files changed, 499 insertions(+), 214 deletions(-) ++ create mode 100644 java/core/src/test/java/com/google/protobuf/UnknownFieldSetPerformanceTest.java ++ ++Backport: ++ * Drop bazel BUILD file changes as Debian builds using ant ++ * Drop test cases as Debian does not run them ++ * Drop unnecessary de-finalization ++ * Eliminate diamonds ++ * Drop removal of not yet added field fieldsDescending. ++ ++diff --git a/java/core/src/main/java/com/google/protobuf/UnknownFieldSet.java b/java/core/src/main/java/com/google/protobuf/UnknownFieldSet.java ++index ba2f9df08..5c482d62d 100644 ++--- a/java/core/src/main/java/com/google/protobuf/UnknownFieldSet.java +++++ b/java/core/src/main/java/com/google/protobuf/UnknownFieldSet.java ++@@ -43,14 +43,14 @@ import java.util.Map; ++ import java.util.TreeMap; ++ ++ /** ++- * {@code UnknownFieldSet} is used to keep track of fields which were seen when +++ * {@code UnknownFieldSet} keeps track of fields which were seen when ++ * parsing a protocol message but whose field numbers or types are unrecognized. ++ * This most frequently occurs when new fields are added to a message type ++ * and then messages containing those fields are read by old software that was ++ * compiled before the new types were added. ++ * ++ *

Every {@link Message} contains an {@code UnknownFieldSet} (and every ++- * {@link Message.Builder} contains an {@link Builder}). +++ * {@link Message.Builder} contains a {@link Builder}). ++ * ++ *

Most users will never need to use this class. ++ * ++@@ -57,8 +57,13 @@ import java.util.TreeMap; ++ */ ++ public final class UnknownFieldSet implements MessageLite { ++ ++- private UnknownFieldSet() { ++- fields = null; +++ private final TreeMap fields; +++ +++ /** +++ * Construct an {@code UnknownFieldSet} around the given map. +++ */ +++ UnknownFieldSet(TreeMap fields) { +++ this.fields = fields; ++ } ++ ++ /** Create a new {@link Builder}. */ ++@@ -83,18 +87,7 @@ public final class UnknownFieldSet implements MessageLite { ++ return defaultInstance; ++ } ++ private static final UnknownFieldSet defaultInstance = ++- new UnknownFieldSet(Collections.emptyMap(), ++- Collections.emptyMap()); ++- ++- /** ++- * Construct an {@code UnknownFieldSet} around the given map. The map is ++- * expected to be immutable. ++- */ ++- UnknownFieldSet(final Map fields, ++- final Map fieldsDescending) { ++- this.fields = fields; ++- } ++- private final Map fields; +++ new UnknownFieldSet(new TreeMap()); ++ ++ ++ @Override ++@@ -110,12 +100,16 @@ public final class UnknownFieldSet implements MessageLite { ++ ++ @Override ++ public int hashCode() { +++ if (fields.isEmpty()) { // avoid allocation of iterator. +++ // This optimization may not be helpful but it is needed for the allocation tests to pass. +++ return 0; +++ } ++ return fields.hashCode(); ++ } ++ ++ /** Get a map of fields in the set by number. */ ++ public Map asMap() { ++- return fields; +++ return (Map) fields.clone(); ++ } ++ ++ /** Check if the given field number is present in the set. */ ++@@ -195,7 +189,7 @@ ++ @Override ++ public void writeDelimitedTo(OutputStream output) throws IOException { ++ final CodedOutputStream codedOutput = CodedOutputStream.newInstance(output); ++- codedOutput.writeRawVarint32(getSerializedSize()); +++ codedOutput.writeUInt32NoTag(getSerializedSize()); ++ writeTo(codedOutput); ++ codedOutput.flush(); ++ } ++@@ -204,8 +198,10 @@ public final class UnknownFieldSet implements MessageLite { ++ @Override ++ public int getSerializedSize() { ++ int result = 0; ++- for (final Map.Entry entry : fields.entrySet()) { ++- result += entry.getValue().getSerializedSize(entry.getKey()); +++ if (!fields.isEmpty()) { +++ for (Map.Entry entry : fields.entrySet()) { +++ result += entry.getValue().getSerializedSize(entry.getKey()); +++ } ++ } ++ return result; ++ } ++@@ -309,64 +305,45 @@ public final class UnknownFieldSet implements MessageLite { ++ // This constructor should never be called directly (except from 'create'). ++ private Builder() {} ++ ++- private Map fields; ++- ++- // Optimization: We keep around a builder for the last field that was ++- // modified so that we can efficiently add to it multiple times in a ++- // row (important when parsing an unknown repeated field). ++- private int lastFieldNumber; ++- private Field.Builder lastField; +++ private TreeMap fieldBuilders = +++ new TreeMap(); ++ ++ private static Builder create() { ++- Builder builder = new Builder(); ++- builder.reinitialize(); ++- return builder; +++ return new Builder(); ++ } ++ ++ /** ++ * Get a field builder for the given field number which includes any ++ * values that already exist. ++ */ ++ private Field.Builder getFieldBuilder(final int number) { ++- if (lastField != null) { ++- if (number == lastFieldNumber) { ++- return lastField; ++- } ++- // Note: addField() will reset lastField and lastFieldNumber. ++- addField(lastFieldNumber, lastField.build()); ++- } ++ if (number == 0) { ++ return null; ++ } else { ++- final Field existing = fields.get(number); ++- lastFieldNumber = number; ++- lastField = Field.newBuilder(); ++- if (existing != null) { ++- lastField.mergeFrom(existing); +++ Field.Builder builder = fieldBuilders.get(number); +++ if (builder == null) { +++ builder = Field.newBuilder(); +++ fieldBuilders.put(number, builder); ++ } ++- return lastField; +++ return builder; ++ } ++ } ++ ++ /** ++ * Build the {@link UnknownFieldSet} and return it. ++- * ++- *

Once {@code build()} has been called, the {@code Builder} will no ++- * longer be usable. Calling any method after {@code build()} will result ++- * in undefined behavior and can cause a {@code NullPointerException} to be ++- * thrown. ++ */ ++ @Override ++ public UnknownFieldSet build() { ++- getFieldBuilder(0); // Force lastField to be built. ++ final UnknownFieldSet result; ++- if (fields.isEmpty()) { +++ if (fieldBuilders.isEmpty()) { ++ result = getDefaultInstance(); ++ } else { ++- Map descendingFields = null; ++- result = new UnknownFieldSet(Collections.unmodifiableMap(fields), descendingFields); +++ TreeMap fields = new TreeMap(); +++ for (Map.Entry entry : fieldBuilders.entrySet()) { +++ fields.put(entry.getKey(), entry.getValue().build()); +++ } +++ result = new UnknownFieldSet(fields); ++ } ++- fields = null; ++ return result; ++ } ++ ++@@ -378,10 +353,13 @@ public final class UnknownFieldSet implements MessageLite { ++ ++ @Override ++ public Builder clone() { ++- getFieldBuilder(0); // Force lastField to be built. ++- Map descendingFields = null; ++- return UnknownFieldSet.newBuilder().mergeFrom( ++- new UnknownFieldSet(fields, descendingFields)); +++ Builder clone = UnknownFieldSet.newBuilder(); +++ for (Map.Entry entry : fieldBuilders.entrySet()) { +++ Integer key = entry.getKey(); +++ Field.Builder value = entry.getValue(); +++ clone.fieldBuilders.put(key, value.clone()); +++ } +++ return clone; ++ } ++ ++ @Override ++@@ -390,31 +367,24 @@ public final class UnknownFieldSet implements MessageLite { ++ return UnknownFieldSet.getDefaultInstance(); ++ } ++ ++- private void reinitialize() { ++- fields = Collections.emptyMap(); ++- lastFieldNumber = 0; ++- lastField = null; ++- } ++- ++ /** Reset the builder to an empty set. */ ++ @Override ++ public Builder clear() { ++- reinitialize(); +++ fieldBuilders = new TreeMap(); ++ return this; ++ } ++ ++- /** Clear fields from the set with a given field number. */ +++ /** +++ * Clear fields from the set with a given field number. +++ * +++ * @throws IllegalArgumentException if number is not positive +++ */ ++ public Builder clearField(final int number) { ++- if (number == 0) { ++- throw new IllegalArgumentException("Zero is not a valid field number."); ++- } ++- if (lastField != null && lastFieldNumber == number) { ++- // Discard this. ++- lastField = null; ++- lastFieldNumber = 0; +++ if (number <= 0) { +++ throw new IllegalArgumentException(number + " is not a valid field number."); ++ } ++- if (fields.containsKey(number)) { ++- fields.remove(number); +++ if (fieldBuilders.containsKey(number)) { +++ fieldBuilders.remove(number); ++ } ++ return this; ++ } ++@@ -435,10 +405,12 @@ public final class UnknownFieldSet implements MessageLite { ++ /** ++ * Add a field to the {@code UnknownFieldSet}. If a field with the same ++ * number already exists, the two are merged. +++ * +++ * @throws IllegalArgumentException if number is not positive ++ */ ++ public Builder mergeField(final int number, final Field field) { ++- if (number == 0) { ++- throw new IllegalArgumentException("Zero is not a valid field number."); +++ if (number <= 0) { +++ throw new IllegalArgumentException(number + " is not a valid field number."); ++ } ++ if (hasField(number)) { ++ getFieldBuilder(number).mergeFrom(field); ++@@ -454,10 +426,12 @@ public final class UnknownFieldSet implements MessageLite { ++ * Convenience method for merging a new field containing a single varint ++ * value. This is used in particular when an unknown enum value is ++ * encountered. +++ * +++ * @throws IllegalArgumentException if number is not positive ++ */ ++ public Builder mergeVarintField(final int number, final int value) { ++- if (number == 0) { ++- throw new IllegalArgumentException("Zero is not a valid field number."); +++ if (number <= 0) { +++ throw new IllegalArgumentException(number + " is not a valid field number."); ++ } ++ getFieldBuilder(number).addVarint(value); ++ return this; ++@@ -467,41 +441,34 @@ public final class UnknownFieldSet implements MessageLite { ++ * Convenience method for merging a length-delimited field. ++ * ++ *

For use by generated code only. +++ * +++ * @throws IllegalArgumentException if number is not positive ++ */ ++ public Builder mergeLengthDelimitedField( ++ final int number, final ByteString value) { ++- if (number == 0) { ++- throw new IllegalArgumentException("Zero is not a valid field number."); +++ if (number <= 0) { +++ throw new IllegalArgumentException(number + " is not a valid field number."); ++ } ++ getFieldBuilder(number).addLengthDelimited(value); ++ return this; ++ } ++ ++ /** Check if the given field number is present in the set. */ ++ public boolean hasField(final int number) { ++- if (number == 0) { ++- throw new IllegalArgumentException("Zero is not a valid field number."); ++- } ++- return number == lastFieldNumber || fields.containsKey(number); +++ return fieldBuilders.containsKey(number); ++ } ++ ++ /** ++ * Add a field to the {@code UnknownFieldSet}. If a field with the same ++ * number already exists, it is removed. +++ * +++ * @throws IllegalArgumentException if number is not positive ++ */ ++ public Builder addField(final int number, final Field field) { ++- if (number == 0) { ++- throw new IllegalArgumentException("Zero is not a valid field number."); ++- } ++- if (lastField != null && lastFieldNumber == number) { ++- // Discard this. ++- lastField = null; ++- lastFieldNumber = 0; +++ if (number <= 0) { +++ throw new IllegalArgumentException(number + " is not a valid field number."); ++ } ++- if (fields.isEmpty()) { ++- fields = new TreeMap(); ++- } ++- fields.put(number, field); +++ fieldBuilders.put(number, Field.newBuilder(field)); ++ return this; ++ } ++ ++@@ -509,7 +476,10 @@ public final class UnknownFieldSet implements MessageLite { ++ * fields are added, the changes may or may not be reflected in this map. ++ */ ++ public Map asMap() { ++- getFieldBuilder(0); // Force lastField to be built. +++ TreeMap fields = new TreeMap(); +++ for (Map.Entry entry : fieldBuilders.entrySet()) { +++ fields.put(entry.getKey(), entry.getValue().build()); +++ } ++ return Collections.unmodifiableMap(fields); ++ } ++ ++@@ -912,54 +882,85 @@ public final class UnknownFieldSet implements MessageLite { ++ *

Use {@link Field#newBuilder()} to construct a {@code Builder}. ++ */ ++ public static final class Builder { ++- // This constructor should never be called directly (except from 'create'). ++- private Builder() {} +++ // This constructor should only be called directly from 'create' and 'clone'. +++ private Builder() { +++ result = new Field(); +++ } ++ ++ private static Builder create() { ++ Builder builder = new Builder(); ++- builder.result = new Field(); ++ return builder; ++ } ++ ++ private Field result; ++ +++ @Override +++ public Builder clone() { +++ Field copy = new Field(); +++ if (result.varint == null) { +++ copy.varint = null; +++ } else { +++ copy.varint = new ArrayList(result.varint); +++ } +++ if (result.fixed32 == null) { +++ copy.fixed32 = null; +++ } else { +++ copy.fixed32 = new ArrayList(result.fixed32); +++ } +++ if (result.fixed64 == null) { +++ copy.fixed64 = null; +++ } else { +++ copy.fixed64 = new ArrayList(result.fixed64); +++ } +++ if (result.lengthDelimited == null) { +++ copy.lengthDelimited = null; +++ } else { +++ copy.lengthDelimited = new ArrayList(result.lengthDelimited); +++ } +++ if (result.group == null) { +++ copy.group = null; +++ } else { +++ copy.group = new ArrayList(result.group); +++ } +++ +++ Builder clone = new Builder(); +++ clone.result = copy; +++ return clone; +++ } +++ ++ /** ++- * Build the field. After {@code build()} has been called, the ++- * {@code Builder} is no longer usable. Calling any other method will ++- * result in undefined behavior and can cause a ++- * {@code NullPointerException} to be thrown. +++ * Build the field. ++ */ ++ public Field build() { +++ Field built = new Field(); ++ if (result.varint == null) { ++- result.varint = Collections.emptyList(); +++ built.varint = Collections.emptyList(); ++ } else { ++- result.varint = Collections.unmodifiableList(result.varint); +++ built.varint = Collections.unmodifiableList(new ArrayList(result.varint)); ++ } ++ if (result.fixed32 == null) { ++- result.fixed32 = Collections.emptyList(); +++ built.fixed32 = Collections.emptyList(); ++ } else { ++- result.fixed32 = Collections.unmodifiableList(result.fixed32); +++ built.fixed32 = Collections.unmodifiableList(new ArrayList(result.fixed32)); ++ } ++ if (result.fixed64 == null) { ++- result.fixed64 = Collections.emptyList(); +++ built.fixed64 = Collections.emptyList(); ++ } else { ++- result.fixed64 = Collections.unmodifiableList(result.fixed64); +++ built.fixed64 = Collections.unmodifiableList(new ArrayList(result.fixed64)); ++ } ++ if (result.lengthDelimited == null) { ++- result.lengthDelimited = Collections.emptyList(); +++ built.lengthDelimited = Collections.emptyList(); ++ } else { ++- result.lengthDelimited = ++- Collections.unmodifiableList(result.lengthDelimited); +++ built.lengthDelimited = Collections.unmodifiableList( +++ new ArrayList(result.lengthDelimited)); ++ } ++ if (result.group == null) { ++- result.group = Collections.emptyList(); +++ built.group = Collections.emptyList(); ++ } else { ++- result.group = Collections.unmodifiableList(result.group); +++ built.group = Collections.unmodifiableList(new ArrayList(result.group)); ++ } ++ ++- final Field returnMe = result; ++- result = null; ++- return returnMe; +++ return built; ++ } ++ ++ /** Discard the field's contents. */ diff --cc debian/patches/CVE-2021-22570.patch index 0000000,0000000..f055c2c new file mode 100644 --- /dev/null +++ b/debian/patches/CVE-2021-22570.patch @@@ -1,0 -1,0 +1,53 @@@ ++commit a00125024e9231d76746bd394fef8876f5cc15e2 ++Merge: 5c028d6cf 468bc193e ++Author: Deanna Garcia ++Date: Fri Jan 22 00:24:30 2021 +0000 ++ ++ Sync from Piper @353127564 ++ ++ PROTOBUF_SYNC_PIPER ++ ++Backport: ++ * Reduce to the actually relevant changes introduced in the actual merge. ++ ++diff --cc src/google/protobuf/descriptor.cc ++index 7af37c57f,7af37c57f..03c4e2b51 ++--- a/src/google/protobuf/descriptor.cc +++++ b/src/google/protobuf/descriptor.cc ++@@ -4019,6 +4023,11 @@ bool DescriptorBuilder::AddSymbol(cons ++ // Use its file as the parent instead. ++ if (parent == NULL) parent = file_; ++ +++ if (full_name.find('\0') != std::string::npos) { +++ AddError(full_name, proto, DescriptorPool::ErrorCollector::NAME, +++ "\"" + full_name + "\" contains null character."); +++ return false; +++ } ++ if (tables_->AddSymbol(full_name, symbol)) { ++ if (!file_tables_->AddAliasUnderParent(parent, name, symbol)) { ++ // This is only possible if there was already an error adding something of ++@@ -4059,6 +4068,11 @@ ++ ++ void DescriptorBuilder::AddPackage( ++ const string& name, const Message& proto, const FileDescriptor* file) { +++ if (name.find('\0') != std::string::npos) { +++ AddError(name, proto, DescriptorPool::ErrorCollector::NAME, +++ "\"" + name + "\" contains null character."); +++ return; +++ } ++ if (tables_->AddSymbol(name, Symbol(file))) { ++ // Success. Also add parent package, if any. ++ string::size_type dot_pos = name.find_last_of('.'); ++@@ -4372,6 +4386,12 @@ FileDescriptor* DescriptorBuilder::Buil ++ } ++ result->pool_ = pool_; ++ +++ if (result->name().find('\0') != std::string::npos) { +++ AddError(result->name(), proto, DescriptorPool::ErrorCollector::NAME, +++ "\"" + result->name() + "\" contains null character."); +++ return nullptr; +++ } +++ ++ // Add to tables. ++ if (!tables_->AddFile(result)) { ++ AddError(proto.name(), proto, DescriptorPool::ErrorCollector::OTHER, diff --cc debian/patches/CVE-2022-1941.patch index 0000000,0000000..7b401c2 new file mode 100644 --- /dev/null +++ b/debian/patches/CVE-2022-1941.patch @@@ -1,0 -1,0 +1,319 @@@ ++From 7764c864bd5acdf60230a7b8fd29816170d0d04e Mon Sep 17 00:00:00 2001 ++From: Mike Kruskal ++Date: Mon, 12 Sep 2022 14:39:23 -0700 ++Subject: [PATCH] Sync from Piper @473817856 ++ ++PROTOBUF_SYNC_PIPER ++--- ++ CHANGES.txt | 2 + ++ src/google/protobuf/extension_set_inl.h | 27 +++-- ++ src/google/protobuf/wire_format.cc | 26 +++-- ++ src/google/protobuf/wire_format_lite.h | 27 +++-- ++ src/google/protobuf/wire_format_unittest.inc | 104 +++++++++++++++++-- ++ 5 files changed, 151 insertions(+), 35 deletions(-) ++ ++Backport: ++ * Handle rename of testcase file. ++ * Drop CHANGES.txt, was: ++ * Save code space by avoiding inlining of large-in-aggregate code-space MessageLite::~MessageLite destructor. ++ * Undefine the macro `linux` when compiling protobuf ++ * Drop payload_read removal, which doesn't exist yet ++ * Drop _t suffix from arithmetic types ++ * Adapt casing in test code ++ * Add missing #include dynamic_message.h ++ * Port ExtensionSet::ParseMessageSetItemTmpl changes to ExtensionSet::ParseMessageSetItem ++ * Port WireFormat::MessageSetParser changes to WireFormat::ParseAndMergeMessageSetItem ++ * Defer field computation to when it's needed as has been done in master ++ * Drop wire_format_lite.h changes added around version 3.7 ++ ++diff --git a/src/google/protobuf/extension_set_inl.h b/src/google/protobuf/extension_set_inl.h ++--- a/src/google/protobuf/extension_set_heavy.cc +++++ b/src/google/protobuf/extension_set_heavy.cc ++@@ -669,6 +669,8 @@ ++ // required data message = 3; ++ ++ uint32 last_type_id = 0; +++ enum class State { kNoTag, kHasType, kHasPayload, kDone }; +++ State state = State::kNoTag; ++ ++ // If we see message data before the type_id, we'll append it to this so ++ // we can parse it later. ++@@ -682,9 +684,12 @@ ++ case WireFormatLite::kMessageSetTypeIdTag: { ++ uint32 type_id; ++ if (!input->ReadVarint32(&type_id)) return false; ++- last_type_id = type_id; ++ ++- if (!message_data.empty()) { +++ if (state == State::kNoTag) { +++ last_type_id = type_id; +++ state = State::kHasType; +++ } else if (state == State::kHasPayload) { +++ last_type_id = type_id; ++ // We saw some message data before the type_id. Have to parse it ++ // now. ++ io::CodedInputStream sub_input( ++@@ -696,29 +701,34 @@ ++ return false; ++ } ++ message_data.clear(); +++ state = State::kDone; ++ } ++ ++ break; ++ } ++ ++ case WireFormatLite::kMessageSetMessageTag: { ++- if (last_type_id == 0) { +++ if (state != State::kHasType) { ++ // We haven't seen a type_id yet. Append this data to message_data. ++ string temp; ++ uint32 length; ++ if (!input->ReadVarint32(&length)) return false; ++ if (!input->ReadString(&temp, length)) return false; ++- io::StringOutputStream output_stream(&message_data); ++- io::CodedOutputStream coded_output(&output_stream); ++- coded_output.WriteVarint32(length); ++- coded_output.WriteString(temp); +++ if (state == State::kNoTag) { +++ io::StringOutputStream output_stream(&message_data); +++ io::CodedOutputStream coded_output(&output_stream); +++ coded_output.WriteVarint32(length); +++ coded_output.WriteString(temp); +++ state = State::kHasPayload; +++ } ++ } else { ++ // Already saw type_id, so we can parse this directly. ++ if (!ParseFieldMaybeLazily(WireFormatLite::WIRETYPE_LENGTH_DELIMITED, ++ last_type_id, input, ++ extension_finder, field_skipper)) { ++ return false; ++ } +++ state = State::kDone; ++ } ++ ++ break; ++diff --git a/src/google/protobuf/wire_format.cc b/src/google/protobuf/wire_format.cc ++--- a/src/google/protobuf/wire_format.cc +++++ b/src/google/protobuf/wire_format.cc ++@@ -725,11 +725,9 @@ ++ // required data message = 3; ++ ++ uint32 last_type_id = 0; +++ enum class State { kNoTag, kHasType, kHasPayload, kDone }; +++ State state = State::kNoTag; ++ ++- // Once we see a type_id, we'll look up the FieldDescriptor for the ++- // extension. ++- const FieldDescriptor* field = NULL; ++- ++ // If we see message data before the type_id, we'll append it to this so ++ // we can parse it later. ++ string message_data; ++@@ -742,12 +744,15 @@ ++ case WireFormatLite::kMessageSetTypeIdTag: { ++ uint32 type_id; ++ if (!input->ReadVarint32(&type_id)) return false; ++- last_type_id = type_id; ++- field = message_reflection->FindKnownExtensionByNumber(type_id); ++ ++- if (!message_data.empty()) { +++ if (state == State::kNoTag) { +++ last_type_id = type_id; +++ state = State::kHasType; +++ } else if (state == State::kHasPayload) { ++ // We saw some message data before the type_id. Have to parse it ++ // now. +++ last_type_id = type_id; +++ const FieldDescriptor* field = message_reflection->FindKnownExtensionByNumber(type_id); ++ io::ArrayInputStream raw_input(message_data.data(), ++ message_data.size()); ++ io::CodedInputStream sub_input(&raw_input); ++@@ -756,13 +761,14 @@ ++ return false; ++ } ++ message_data.clear(); +++ state = State::kDone; ++ } ++ ++ break; ++ } ++ ++ case WireFormatLite::kMessageSetMessageTag: { ++- if (last_type_id == 0) { +++ if (state == State::kNoTag) { ++ // We haven't seen a type_id yet. Append this data to message_data. ++ string temp; ++ uint32 length; ++@@ -772,13 +778,18 @@ ++ io::CodedOutputStream coded_output(&output_stream); ++ coded_output.WriteVarint32(length); ++ coded_output.WriteString(temp); ++- } else { +++ state = State::kHasPayload; +++ } else if (state == State::kHasType) { ++ // Already saw type_id, so we can parse this directly. +++ const FieldDescriptor* field = message_reflection->FindKnownExtensionByNumber(last_type_id); ++ if (!ParseAndMergeMessageSetField(last_type_id, field, message, ++ input)) { ++ return false; ++ } +++ state = State::kDone; +++ } else { +++ if (!SkipField(input, tag, NULL)) return false; ++ } ++ ++ break; ++ } ++diff --git a/src/google/protobuf/wire_format_unittest.inc b/src/google/protobuf/wire_format_unittest.inc ++--- a/src/google/protobuf/wire_format_unittest.cc +++++ b/src/google/protobuf/wire_format_unittest.cc ++@@ -35,6 +35,7 @@ ++ #include ++ #include ++ #include +++#include ++ #include ++ #include ++ #include ++@@ -581,28 +581,54 @@ TEST(WireFormatTest, ParseMessageSet) { ++ EXPECT_EQ(message_set.DebugString(), dynamic_message_set.DebugString()); ++ } ++ ++-TEST(WireFormatTest, ParseMessageSetWithReverseTagOrder) { +++namespace { +++std::string BuildMessageSetItemStart() { ++ string data; ++ { ++- unittest::TestMessageSetExtension1 message; ++- message.set_i(123); ++- // Build a MessageSet manually with its message content put before its ++- // type_id. ++ io::StringOutputStream output_stream(&data); ++ io::CodedOutputStream coded_output(&output_stream); ++ coded_output.WriteTag(WireFormatLite::kMessageSetItemStartTag); +++ } +++ return data; +++} +++std::string BuildMessageSetItemEnd() { +++ std::string data; +++ { +++ io::StringOutputStream output_stream(&data); +++ io::CodedOutputStream coded_output(&output_stream); +++ coded_output.WriteTag(WireFormatLite::kMessageSetItemEndTag); +++ } +++ return data; +++} +++std::string BuildMessageSetTestExtension1(int value = 123) { +++ std::string data; +++ { +++ unittest::TestMessageSetExtension1 message; +++ message.set_i(value); +++ io::StringOutputStream output_stream(&data); +++ io::CodedOutputStream coded_output(&output_stream); ++ // Write the message content first. ++ WireFormatLite::WriteTag(WireFormatLite::kMessageSetMessageNumber, ++ WireFormatLite::WIRETYPE_LENGTH_DELIMITED, ++ &coded_output); ++ coded_output.WriteVarint32(message.ByteSize()); ++ message.SerializeWithCachedSizes(&coded_output); ++- // Write the type id. ++- uint32 type_id = message.GetDescriptor()->extension(0)->number(); +++ } +++ return data; +++} +++std::string BuildMessageSetItemTypeId(int extension_number) { +++ std::string data; +++ { +++ io::StringOutputStream output_stream(&data); +++ io::CodedOutputStream coded_output(&output_stream); ++ WireFormatLite::WriteUInt32(WireFormatLite::kMessageSetTypeIdNumber, ++- type_id, &coded_output); ++- coded_output.WriteTag(WireFormatLite::kMessageSetItemEndTag); +++ extension_number, &coded_output); ++ } +++ return data; +++} +++void ValidateTestMessageSet(const std::string& test_case, +++ const std::string& data) { +++ SCOPED_TRACE(test_case); ++ { ++ proto2_wireformat_unittest::TestMessageSet message_set; ++ ASSERT_TRUE(message_set.ParseFromString(data)); ++@@ -612,6 +638,11 @@ TEST(WireFormatTest, ParseMessageSetWithReverseTagOrder) { ++ ++ EXPECT_EQ(123, message_set.GetExtension( ++ unittest::TestMessageSetExtension1::message_set_extension).i()); +++ +++ // Make sure it does not contain anything else. +++ message_set.ClearExtension( +++ unittest::TestMessageSetExtension1::message_set_extension); +++ EXPECT_EQ(message_set.SerializeAsString(), ""); ++ } ++ { ++ // Test parse the message via Reflection. ++@@ -627,6 +658,61 @@ TEST(WireFormatTest, ParseMessageSetWithReverseTagOrder) { ++ EXPECT_EQ(123, message_set.GetExtension( ++ unittest::TestMessageSetExtension1::message_set_extension).i()); ++ } +++ { +++ // Test parse the message via DynamicMessage. +++ DynamicMessageFactory factory; +++ std::unique_ptr msg( +++ factory +++ .GetPrototype( +++ proto2_wireformat_unittest::TestMessageSet::descriptor()) +++ ->New()); +++ msg->ParseFromString(data); +++ auto* reflection = msg->GetReflection(); +++ std::vector fields; +++ reflection->ListFields(*msg, &fields); +++ ASSERT_EQ(fields.size(), 1); +++ const auto& sub = reflection->GetMessage(*msg, fields[0]); +++ reflection = sub.GetReflection(); +++ EXPECT_EQ(123, reflection->GetInt32( +++ sub, sub.GetDescriptor()->FindFieldByName("i"))); +++ } +++} +++} // namespace +++ +++TEST(WireFormatTest, ParseMessageSetWithAnyTagOrder) { +++ std::string start = BuildMessageSetItemStart(); +++ std::string end = BuildMessageSetItemEnd(); +++ std::string id = BuildMessageSetItemTypeId( +++ unittest::TestMessageSetExtension1::descriptor()->extension(0)->number()); +++ std::string message = BuildMessageSetTestExtension1(); +++ +++ ValidateTestMessageSet("id + message", start + id + message + end); +++ ValidateTestMessageSet("message + id", start + message + id + end); +++} +++ +++TEST(WireFormatTest, ParseMessageSetWithDuplicateTags) { +++ std::string start = BuildMessageSetItemStart(); +++ std::string end = BuildMessageSetItemEnd(); +++ std::string id = BuildMessageSetItemTypeId( +++ unittest::TestMessageSetExtension1::descriptor()->extension(0)->number()); +++ std::string other_id = BuildMessageSetItemTypeId(123456); +++ std::string message = BuildMessageSetTestExtension1(); +++ std::string other_message = BuildMessageSetTestExtension1(321); +++ +++ // Double id +++ ValidateTestMessageSet("id + other_id + message", +++ start + id + other_id + message + end); +++ ValidateTestMessageSet("id + message + other_id", +++ start + id + message + other_id + end); +++ ValidateTestMessageSet("message + id + other_id", +++ start + message + id + other_id + end); +++ // Double message +++ ValidateTestMessageSet("id + message + other_message", +++ start + id + message + other_message + end); +++ ValidateTestMessageSet("message + id + other_message", +++ start + message + id + other_message + end); +++ ValidateTestMessageSet("message + other_message + id", +++ start + message + other_message + id + end); ++ } ++ ++ TEST(WireFormatTest, ParseBrokenMessageSet) { ++-- ++2.40.0 ++ diff --cc debian/patches/default_python_version index 0000000,0000000..c2d5988 new file mode 100644 --- /dev/null +++ b/debian/patches/default_python_version @@@ -1,0 -1,0 +1,20 @@@ ++Index: protobuf-2.1.0/python/mox.py ++=================================================================== ++--- protobuf-2.1.0.orig/python/mox.py 2009-11-17 03:37:29.000000000 +1100 +++++ protobuf-2.1.0/python/mox.py 2009-11-17 03:38:08.000000000 +1100 ++@@ -1,4 +1,4 @@ ++-#!/usr/bin/python2.4 +++#!/usr/bin/python ++ # ++ # Copyright 2008 Google Inc. ++ # ++Index: protobuf-2.1.0/python/stubout.py ++=================================================================== ++--- protobuf-2.1.0.orig/python/stubout.py 2009-11-17 03:37:29.000000000 +1100 +++++ protobuf-2.1.0/python/stubout.py 2009-11-17 03:38:17.000000000 +1100 ++@@ -1,4 +1,4 @@ ++-#!/usr/bin/python2.4 +++#!/usr/bin/python ++ # ++ # Copyright 2008 Google Inc. ++ # diff --cc debian/patches/disable_local_gmock.patch index 0000000,0000000..6c78e60 new file mode 100644 --- /dev/null +++ b/debian/patches/disable_local_gmock.patch @@@ -1,0 -1,0 +1,81 @@@ ++Description: use packaged Google Test and Google Mock libraries ++ Link tests with the already compiled libraries. ++Forwarded: not-needed ++Author: Laszlo Boszormenyi (GCS) ++Last-Update: 2018-05-29 ++ ++--- ++ ++--- a/Makefile.am +++++ b/Makefile.am ++@@ -17,9 +17,9 @@ DIST_SUBDIRS = src conformance benchmark ++ # want "make install" to recurse into gmock since we don't want to overwrite ++ # the installed version of gmock if there is one. ++ check-local: ++- @echo "Making lib/libgmock.a lib/libgmock_main.a in gmock" ++- @cd third_party/googletest/googletest && $(MAKE) $(AM_MAKEFLAGS) lib/libgtest.la lib/libgtest_main.la ++- @cd third_party/googletest/googlemock && $(MAKE) $(AM_MAKEFLAGS) lib/libgmock.la lib/libgmock_main.la +++ @echo "NOT making lib/libgmock.a lib/libgmock_main.a in gmock" +++# @cd third_party/googletest/googletest && $(MAKE) $(AM_MAKEFLAGS) lib/libgtest.la lib/libgtest_main.la +++# @cd third_party/googletest/googlemock && $(MAKE) $(AM_MAKEFLAGS) lib/libgmock.la lib/libgmock_main.la ++ ++ # We would like to clean gmock when "make clean" is invoked. But we have to ++ # be careful because clean-local is also invoked during "make distclean", but ++--- a/src/Makefile.am +++++ b/src/Makefile.am ++@@ -718,10 +718,8 @@ GOOGLEMOCK_SRC_DIR=$(srcdir)/../third_pa ++ check_PROGRAMS = protoc protobuf-test protobuf-lazy-descriptor-test \ ++ protobuf-lite-test test_plugin protobuf-lite-arena-test \ ++ no-warning-test $(GZCHECKPROGRAMS) ++-protobuf_test_LDADD = $(PTHREAD_LIBS) libprotobuf.la libprotoc.la \ ++- $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ ++- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ ++- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la +++protobuf_test_LDADD = $(PTHREAD_LIBS) libprotobuf.la libprotoc.la -lgtest \ +++ -lgmock -lgmock_main ++ protobuf_test_CPPFLAGS = -I$(GOOGLETEST_SRC_DIR)/include \ ++ -I$(GOOGLEMOCK_SRC_DIR)/include ++ # Disable optimization for tests unless the user explicitly asked for it, ++@@ -810,10 +808,7 @@ $(am_protobuf_test_OBJECTS): unittest_pr ++ ++ # Run cpp_unittest again with PROTOBUF_TEST_NO_DESCRIPTORS defined. ++ protobuf_lazy_descriptor_test_LDADD = $(PTHREAD_LIBS) libprotobuf.la \ ++- libprotoc.la \ ++- $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ ++- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ ++- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la +++ libprotoc.la -lgtest -lgmock -lgmock_main ++ protobuf_lazy_descriptor_test_CPPFLAGS = -I$(GOOGLEMOCK_SRC_DIR)/include \ ++ -I$(GOOGLETEST_SRC_DIR)/include \ ++ -DPROTOBUF_TEST_NO_DESCRIPTORS ++@@ -837,9 +832,7 @@ COMMON_LITE_TEST_SOURCES = ++ # full runtime and we want to make sure this test builds without full ++ # runtime. ++ protobuf_lite_test_LDADD = $(PTHREAD_LIBS) libprotobuf-lite.la \ ++- $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ ++- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ ++- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la +++ -lgtest -lgmock -lgmock_main ++ protobuf_lite_test_CPPFLAGS= -I$(GOOGLEMOCK_SRC_DIR)/include \ ++ -I$(GOOGLETEST_SRC_DIR)/include ++ protobuf_lite_test_CXXFLAGS = $(NO_OPT_CXXFLAGS) ++@@ -853,9 +846,7 @@ $(am_protobuf_lite_test_OBJECTS): unitte ++ # gtest when building the test internally our memory sanitizer doesn't detect ++ # memory leaks (don't know why). ++ protobuf_lite_arena_test_LDADD = $(PTHREAD_LIBS) libprotobuf-lite.la \ ++- $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la \ ++- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock.la \ ++- $(GOOGLEMOCK_BUILD_DIR)/lib/libgmock_main.la +++ -lgtest -lgmock -lgmock_main ++ protobuf_lite_arena_test_CPPFLAGS = -I$(GOOGLEMOCK_SRC_DIR)/include \ ++ -I$(GOOGLETEST_SRC_DIR)/include ++ protobuf_lite_arena_test_CXXFLAGS = $(NO_OPT_CXXFLAGS) ++@@ -867,7 +858,7 @@ $(am_protobuf_lite_arena_test_OBJECTS): ++ ++ # Test plugin binary. ++ test_plugin_LDADD = $(PTHREAD_LIBS) libprotobuf.la libprotoc.la \ ++- $(GOOGLETEST_BUILD_DIR)/lib/libgtest.la +++ -lgtest ++ test_plugin_CPPFLAGS = -I$(GOOGLETEST_SRC_DIR)/include ++ test_plugin_SOURCES = \ ++ google/protobuf/compiler/mock_code_generator.cc \ diff --cc debian/patches/fix_google_test_link.patch index 0000000,0000000..e6aaaf1 new file mode 100644 --- /dev/null +++ b/debian/patches/fix_google_test_link.patch @@@ -1,0 -1,0 +1,54 @@@ ++Description: fix linking with recent Google's C++ test framework ++ Need to link with libgtest_main.a as well. ++Author: Laszlo Boszormenyi (GCS) ++Last-Update: 2018-10-11 ++ ++--- ++ ++--- protobuf-3.6.1.orig/src/Makefile.am +++++ protobuf-3.6.1/src/Makefile.am ++@@ -700,7 +700,7 @@ check_PROGRAMS = protoc protobuf-test pr ++ protobuf-lite-test test_plugin protobuf-lite-arena-test \ ++ no-warning-test $(GZCHECKPROGRAMS) ++ protobuf_test_LDADD = $(PTHREAD_LIBS) libprotobuf.la libprotoc.la -lgtest \ ++- -lgmock -lgmock_main +++ -lgtest_main -lgmock -lgmock_main ++ protobuf_test_CPPFLAGS = -I$(GOOGLETEST_SRC_DIR)/include \ ++ -I$(GOOGLEMOCK_SRC_DIR)/include ++ # Disable optimization for tests unless the user explicitly asked for it, ++@@ -789,7 +789,7 @@ $(am_protobuf_test_OBJECTS): unittest_pr ++ ++ # Run cpp_unittest again with PROTOBUF_TEST_NO_DESCRIPTORS defined. ++ protobuf_lazy_descriptor_test_LDADD = $(PTHREAD_LIBS) libprotobuf.la \ ++- libprotoc.la -lgtest -lgmock -lgmock_main +++ libprotoc.la -lgtest -lgtest_main -lgmock -lgmock_main ++ protobuf_lazy_descriptor_test_CPPFLAGS = -I$(GOOGLEMOCK_SRC_DIR)/include \ ++ -I$(GOOGLETEST_SRC_DIR)/include \ ++ -DPROTOBUF_TEST_NO_DESCRIPTORS ++@@ -813,7 +813,7 @@ COMMON_LITE_TEST_SOURCES = ++ # full runtime and we want to make sure this test builds without full ++ # runtime. ++ protobuf_lite_test_LDADD = $(PTHREAD_LIBS) libprotobuf-lite.la \ ++- -lgtest -lgmock -lgmock_main +++ -lgtest -lgtest_main -lgmock -lgmock_main ++ protobuf_lite_test_CPPFLAGS= -I$(GOOGLEMOCK_SRC_DIR)/include \ ++ -I$(GOOGLETEST_SRC_DIR)/include ++ protobuf_lite_test_CXXFLAGS = $(NO_OPT_CXXFLAGS) ++@@ -827,7 +827,7 @@ $(am_protobuf_lite_test_OBJECTS): unitte ++ # gtest when building the test internally our memory sanitizer doesn't detect ++ # memory leaks (don't know why). ++ protobuf_lite_arena_test_LDADD = $(PTHREAD_LIBS) libprotobuf-lite.la \ ++- -lgtest -lgmock -lgmock_main +++ -lgtest -lgtest_main -lgmock -lgmock_main ++ protobuf_lite_arena_test_CPPFLAGS = -I$(GOOGLEMOCK_SRC_DIR)/include \ ++ -I$(GOOGLETEST_SRC_DIR)/include ++ protobuf_lite_arena_test_CXXFLAGS = $(NO_OPT_CXXFLAGS) ++@@ -839,7 +839,7 @@ $(am_protobuf_lite_arena_test_OBJECTS): ++ ++ # Test plugin binary. ++ test_plugin_LDADD = $(PTHREAD_LIBS) libprotobuf.la libprotoc.la \ ++- -lgtest +++ -lgtest -lgtest_main ++ test_plugin_CPPFLAGS = -I$(GOOGLETEST_SRC_DIR)/include ++ test_plugin_SOURCES = \ ++ google/protobuf/compiler/mock_code_generator.cc \ diff --cc debian/patches/hurd.patch index 0000000,0000000..846089a new file mode 100644 --- /dev/null +++ b/debian/patches/hurd.patch @@@ -1,0 -1,0 +1,18 @@@ ++Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835267 ++Bug-Upstream: https://github.com/google/protobuf/issues/2000 ++Description: Add support for GNU/Hurd which doesn't define PATH_MAX. ++Author: Bas Couwenberg ++Last-Update: 2018-05-29 ++ ++--- a/src/google/protobuf/compiler/command_line_interface.cc +++++ b/src/google/protobuf/compiler/command_line_interface.cc ++@@ -56,6 +56,9 @@ ++ #include ++ ++ #include //For PATH_MAX +++#if defined(__GNU__) +++#define PATH_MAX 4096 +++#endif ++ ++ #include ++ diff --cc debian/patches/java-test-scope.patch index 0000000,0000000..42a0493 new file mode 100644 --- /dev/null +++ b/debian/patches/java-test-scope.patch @@@ -1,0 -1,0 +1,27 @@@ ++Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835514 ++Bug-Upstream: https://github.com/google/protobuf/issues/2019 ++From: Markus Koschany ++Description: set scope of "junit" and "easymock" to "test". ++ ++--- a/java/core/pom.xml +++++ b/java/core/pom.xml ++@@ -21,16 +21,19 @@ ++ ++ ++ junit ++ junit +++ test ++ ++ ++ org.easymock ++ easymock +++ test ++ ++ ++ org.easymock ++ easymockclassextension +++ test ++ ++ ++ ++ diff --cc debian/patches/misleading-indentation.patch index 0000000,0000000..1ee4294 new file mode 100644 --- /dev/null +++ b/debian/patches/misleading-indentation.patch @@@ -1,0 -1,0 +1,43 @@@ ++Last-Update: 2016-08-24 ++Forwarded: no ++Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835266 ++Bug-Upstream: https://github.com/google/protobuf/issues/1797 ++Bug-Upstream: https://github.com/google/protobuf/issues/1698 ++Author: Bas Couwenberg ++Description: Don't treat misleading-indentation warning as error, causes FTBFS. ++ ++--- a/more_tests/Makefile +++++ b/more_tests/Makefile ++@@ -36,6 +36,6 @@ ++ ++ header_warning_test: header_warning_test.cc ++ # TODO(kenton): Consider adding -pedantic and -Weffc++. Currently these ++ # produce tons of extra warnings so we'll need to do some work first. ++- g++ -Itarget/include -Wall -Werror -Wsign-compare -O2 -c header_warning_test.cc +++ g++ -Itarget/include -Wall -Werror -Wno-error=misleading-indentation -Wsign-compare -O2 -c header_warning_test.cc ++ touch header_warning_test ++--- a/python/setup.py +++++ b/python/setup.py ++@@ -189,8 +189,9 @@ ++ extra_compile_args.append('-Wno-shorten-64-to-32') ++ ++ if warnings_as_errors in sys.argv: ++ extra_compile_args.append('-Werror') +++ extra_compile_args.append('-Wno-error=misleading-indentation') ++ sys.argv.remove(warnings_as_errors) ++ ++ # C++ implementation extension ++ ext_module_list.extend([ ++--- a/src/Makefile.am +++++ b/src/Makefile.am ++@@ -851,9 +851,9 @@ ++ ../gmock/gtest/lib/libgtest.la \ ++ ../gmock/gtest/lib/libgtest_main.la ++ no_warning_test_CPPFLAGS = -I$(srcdir)/../gmock/gtest/include ++ no_warning_test_CXXFLAGS = $(PTHREAD_CFLAGS) $(PTHREAD_DEF) $(ZLIB_DEF) \ ++- -Wall -Werror +++ -Wall -Werror -Wno-error=misleading-indentation ++ nodist_no_warning_test_SOURCES = no_warning_test.cc $(protoc_outputs) ++ ++ TESTS = protobuf-test protobuf-lazy-descriptor-test protobuf-lite-test \ ++ google/protobuf/compiler/zip_output_unittest.sh $(GZTESTS) \ diff --cc debian/patches/s390x.patch index 0000000,0000000..6f4dc3a new file mode 100644 --- /dev/null +++ b/debian/patches/s390x.patch @@@ -1,0 -1,0 +1,25 @@@ ++Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835302 ++Bug-Upstream: https://github.com/google/protobuf/issues/2002 ++Origin: https://github.com/ibmruntimes/v8z ++Author: Sebastiaan Couwenberg ++Description: Add support for s390x architecture. ++ Based on port of Google V8 JavaScript engine to z Systems ++ ++--- a/src/google/protobuf/stubs/platform_macros.h +++++ b/src/google/protobuf/stubs/platform_macros.h ++@@ -78,8 +78,15 @@ ++ #define GOOGLE_PROTOBUF_ARCH_64_BIT 1 ++ #elif defined(__PPC__) ++ #define GOOGLE_PROTOBUF_ARCH_PPC 1 ++ #define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +++#elif defined(__s390__) || defined(__s390x__) +++#define GOOGLE_PROTOBUF_ARCH_S390 1 +++#if defined(__s390x__) +++#define GOOGLE_PROTOBUF_ARCH_64_BIT 1 +++#else +++#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +++#endif ++ #elif defined(__GNUC__) ++ # if (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)) ++ // We fallback to the generic Clang/GCC >= 4.7 implementation in atomicops.h ++ # elif defined(__clang__) diff --cc debian/patches/series index 0000000,0000000..8c0051f new file mode 100644 --- /dev/null +++ b/debian/patches/series @@@ -1,0 -1,0 +1,10 @@@ ++hurd.patch ++default_python_version ++#java-test-scope.patch ++#misleading-indentation.patch ++s390x.patch ++disable_local_gmock.patch ++fix_google_test_link.patch ++CVE-2021-22569.patch ++CVE-2021-22570.patch ++CVE-2022-1941.patch diff --cc debian/protobuf-compiler.docs index 0000000,0000000..d1a27a3 new file mode 100644 --- /dev/null +++ b/debian/protobuf-compiler.docs @@@ -1,0 -1,0 +1,4 @@@ ++CONTRIBUTORS.txt ++README.md ++editors ++examples diff --cc debian/protobuf-compiler.install index 0000000,0000000..e772481 new file mode 100644 --- /dev/null +++ b/debian/protobuf-compiler.install @@@ -1,0 -1,0 +1,1 @@@ ++usr/bin diff --cc debian/protobuf-compiler.manpages index 0000000,0000000..f723754 new file mode 100644 --- /dev/null +++ b/debian/protobuf-compiler.manpages @@@ -1,0 -1,0 +1,1 @@@ ++protoc.1 diff --cc debian/protoc.xml index 0000000,0000000..b9124a6 new file mode 100644 --- /dev/null +++ b/debian/protoc.xml @@@ -1,0 -1,0 +1,223 @@@ ++ ++.

will be generated. You may view the ++manual page with: nroff -man .
| less'. A typical entry ++in a Makefile or Makefile.am is: ++ ++DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl ++XP = xsltproc -nonet -param man.charmap.use.subset "0" ++ ++manpage.1: manpage.xml ++ $(XP) $(DB2MAN) $< ++ ++The xsltproc binary is found in the xsltproc package. The XSL files are in ++docbook-xsl. A description of the parameters you can use can be found in the ++docbook-xsl-doc-* packages. Please remember that if you create the nroff ++version in one of the debian/rules file targets (such as build), you will need ++to include xsltproc and docbook-xsl in your Build-Depends control field. ++Alternatively use the xmlto command/package. That will also automatically ++pull in xsltproc and docbook-xsl. ++ ++Notes for using docbook2x: docbook2x-man does not automatically create the ++AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as ++ ... . ++ ++To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections ++read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be ++found in the docbook-xsl-doc-html package. ++ ++Validation can be done using: `xmllint -noout -valid manpage.xml` ++ ++General documentation about man-pages and man-page-formatting: ++man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/ ++ ++--> ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++]> ++ ++ ++ ++ &dhtitle; ++ &dhucpackage; ++ ++ ++ &dhfirstname; ++ &dhsurname; ++ Wrote this manpage for the Debian system. ++
++ &dhemail; ++
++
++
++ ++ 2007 ++ &dhusername; ++ ++ ++ This manual page was written for the Debian system ++ (but may be used by others). ++ Permission is granted to copy, distribute and/or modify this ++ document under the terms of the GNU General Public License, ++ Version 2 or (at your option) any later version published by ++ the Free Software Foundation. ++ On Debian systems, the complete text of the GNU General Public ++ License can be found in ++ /usr/share/common-licenses/GPL. ++ ++ 2008-10-04 ++
++ ++ &dhpackage; ++ &dhsection; ++ 2.0.2 ++ ++ ++ &dhpackage; ++ compile protocol buffer description files ++ ++ ++ ++ &dhpackage; ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ PROTO_FILE ++ ++ ++ ++ &dhpackage; ++ ++ ++ ++ ++ ++ ++ &dhpackage; ++ ++ ++ ++ ++ DESCRIPTION ++ ++ &dhpackage; is a compiler for protocol ++ buffers definitions files. It can can generate C++, Java and ++ Python source code for the classes defined in ++ PROTO_FILE. ++ ++ ++ ++ ++ OPTIONS ++ ++ ++ ++ ++ ++ ++ Specify the directory in which to search for imports. ++ May be specified multiple times; directories will be ++ searched in order. If not given, the current working ++ directory is used. ++ ++ ++ ++ ++ ++ Enable generation of C++ bindings and store them in ++ OUT_DIR. ++ ++ ++ ++ ++ ++ Enable generation of Java bindings and store them ++ in OUT_DIR. ++ ++ ++ ++ ++ ++ Enable generation of Python bindings and store them ++ in OUT_DIR. ++ ++ ++ ++ ++ ++ ++ Show summary of options. ++ ++ ++ ++ ++ ++ Show version of program. ++ ++ ++ ++ ++ Note that at least one of the , ++ and ++ options must be given (otherwise the program has nothing to ++ do). It's also possible to specify more than one. ++ ++ ++ ++ ++ BUGS ++ ++ The program currently exits with code 255 for all errors, ++ which makes it hard to differentiante from scripts the actual ++ error. ++ ++ The upstreams BTS can be found at . ++ ++ ++ ++ SEE ALSO ++ ++ More documentation about protocol buffers syntax and APIs is ++ available online at . ++ ++ ++ ++
diff --cc debian/python-protobuf.README.Debian index 0000000,0000000..61d0c1b new file mode 100644 --- /dev/null +++ b/debian/python-protobuf.README.Debian @@@ -1,0 -1,0 +1,11 @@@ ++C++ backend ++=========== ++ ++As of protobuf 2.6.0, a new C++ backend for the Python protobuf bindings is ++available, which is faster than the default pure Python implementation. It can ++be activated by setting the following environment variables: ++ ++PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp ++PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION=2 ++ ++ -- Robert Edmonds Thu, 28 Aug 2014 21:10:30 -0700 diff --cc debian/python-protobuf3.README.Debian index 0000000,0000000..61d0c1b new file mode 100644 --- /dev/null +++ b/debian/python-protobuf3.README.Debian @@@ -1,0 -1,0 +1,11 @@@ ++C++ backend ++=========== ++ ++As of protobuf 2.6.0, a new C++ backend for the Python protobuf bindings is ++available, which is faster than the default pure Python implementation. It can ++be activated by setting the following environment variables: ++ ++PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp ++PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION=2 ++ ++ -- Robert Edmonds Thu, 28 Aug 2014 21:10:30 -0700 diff --cc debian/ruby-google-protobuf.docs index 0000000,0000000..10ecf03 new file mode 100644 --- /dev/null +++ b/debian/ruby-google-protobuf.docs @@@ -1,0 -1,0 +1,1 @@@ ++ruby/README.md diff --cc debian/rules index 0000000,0000000..7325ba1 new file mode 100755 --- /dev/null +++ b/debian/rules @@@ -1,0 -1,0 +1,166 @@@ ++#!/usr/bin/make -f ++# -*- makefile -*- ++ ++include /usr/share/dpkg/architecture.mk ++ifeq ($(origin CXX),default) ++CXX := $(DEB_HOST_GNU_TYPE)-g++ ++endif ++ ++export DH_RUBY = --gem-install ++export DH_RUBY_USE_DH_AUTO_INSTALL_DESTDIR = debian/ruby-google-protobuf ++export GEM2DEB_TEST_RUNNER = --check-dependencies ++ ++ifneq (,$(findstring $(DEB_BUILD_ARCH), armel m68k mips mipsel powerpc powerpcspe sh4)) ++export DEB_LDFLAGS_MAINT_APPEND = -latomic ++endif ++ ++%: ++ dh $@ --with autoreconf,python2,python3 ++ ++ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) ++override_dh_auto_configure: ++ # build for the native (i.e. build) architecture, as we need ++ # the protoc compiler for the native arch. ++ dh_auto_configure -- --host=$(DEB_BUILD_GNU_TYPE) ++ ++PYTHON_CROSS_VARS += PROTOC=$(CURDIR)/debian/run_protoc ++PYTHON_CROSS_VARS += PYTHONPATH=/usr/lib/python$$pv/plat-$(DEB_HOST_MULTIARCH) ++PYTHON_CROSS_VARS += _PYTHON_HOST_PLATFORM=$(DEB_HOST_ARCH_OS)-$(DEB_HOST_GNU_CPU) ++PYTHON_CROSS_VARS += CC=$(CXX) ++PYTHON_CROSS_VARS += CXX=$(CXX) ++endif ++ ++override_dh_auto_build-arch: ++## Chicken<->Egg problem: protobuf requires self-generated .pb.go files to ++## be built. First we build it normally; then "generate_descriptor_proto.sh" ++## generates .pb.go files and replaces 'em if they are different as well as ++## invokes "make protoc" which re-builds "src/protoc" if required. ++ dh_auto_build --arch ++ bash -x ./generate_descriptor_proto.sh ++ ++ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) ++ # save the native compiler ++ cp -Rv src/.libs debian/native_protoc ++ # clean everything but regenerated .pb.{cc,go} files ++ $(MAKE) clean ++ # cross build ++ dh_auto_configure -- --with-protoc=$(CURDIR)/debian/run_protoc ++ dh_auto_build --arch ++endif ++ ++ # Generate the manpage. ++ xmlto man debian/protoc.xml ++ ++ # Python and Python3 build. ++ cp -rv python python3 ++ set -e; cd python && for pv in $(shell pyversions -vr); do \ ++ $(PYTHON_CROSS_VARS) python$$pv setup.py build --cpp_implementation; \ ++ done ++ set -e; cd python3 && for pv in $(shell py3versions -vr); do \ ++ $(PYTHON_CROSS_VARS) python$$pv setup.py build --cpp_implementation; \ ++ done ++ ++ # Ruby build ++ cd ruby && rake package genproto ++ ++override_dh_auto_build-indep: ++ dh_auto_build --indep ++ ++ # Java build. ++ ant -f debian/java-build.xml jar ++ ++override_dh_clean: ++ $(RM) -rv gmock ++ cd ruby && rake clobber ++ dh_clean ++ $(RM) -f config.h config.log config.status ++ $(RM) -f *.pc ++ $(RM) -f google-protobuf.gemspec ++ $(RM) -f libtool stamp-h1 ++ find $(CURDIR) -name Makefile -delete ++ ++override_dh_auto_test-arch: ++ dh_auto_test --arch ++ ++ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) ++ # Python test. ++ set -e; \ ++ export LD_LIBRARY_PATH=$(CURDIR)/src/.libs; \ ++ cd python && for PYTHON in $(shell pyversions -r); do \ ++ $$PYTHON setup.py test --cpp_implementation; \ ++ done ++ # Python3 test. ++ set -e; \ ++ export LD_LIBRARY_PATH=$(CURDIR)/src/.libs; \ ++ cd python3 && for PYTHON in $(shell py3versions -r); do \ ++ $$PYTHON setup.py test --cpp_implementation; \ ++ done ++endif ++ ++override_dh_auto_test-indep: ++ : ++ ++override_dh_auto_clean-arch: ++ dh_auto_clean --arch ++ ++ # Python clean. ++ set -e; \ ++ cd python && for python in $(shell pyversions -r); do \ ++ $$python setup.py clean --all; \ ++ done ++ rm -rf python/protobuf.egg-info ++ # Python3 clean. ++ rm -rf python3 ++ ++override_dh_auto_clean-indep: ++ dh_auto_clean --indep ++ ++ # Java clean. ++ ant -f debian/java-build.xml clean || true ++ mh_clean || true ++ ++override_dh_auto_install-arch: ++ dh_auto_install --arch ++ ++ # Python install. ++ set -e; \ ++ cd python && for pv in $(shell pyversions -vr); do \ ++ $(PYTHON_CROSS_VARS) python$$pv setup.py install --cpp_implementation \ ++ --install-layout=deb --no-compile \ ++ --root=$(CURDIR)/debian/python-protobuf; \ ++ done ++ find $(CURDIR)/debian/python-protobuf -name 'protobuf-*-nspkg.pth' -delete ++ ++ # Python3 install. ++ set -e; \ ++ cd python3 && for pv in $(shell py3versions -vr); do \ ++ $(PYTHON_CROSS_VARS) python$$pv setup.py install --cpp_implementation \ ++ --install-layout=deb --no-compile \ ++ --root=$(CURDIR)/debian/python3-protobuf; \ ++ done ++ find $(CURDIR)/debian/python3-protobuf -name 'protobuf-*-nspkg.pth' -delete ++ ++ # Ruby install ++ sed 's|ext/|ruby/ext/|' $(CURDIR)/ruby/google-protobuf.gemspec \ ++ >$(CURDIR)/google-protobuf.gemspec ++ dh_auto_install -O--buildsystem=ruby -O--package=ruby-google-protobuf --destdir=$(CURDIR)/debian/ruby-google-protobuf ++ find $(CURDIR)/debian/ruby-google-protobuf/usr/lib/ \ ++ -name well_known_types.rb -exec chmod a+x {} \; ++ ++override_dh_auto_install-indep: ++ dh_auto_install --indep ++ ++ # Java install. ++ mh_install ++ ++override_dh_install-arch: ++ dh_install --arch ++ ++ # Convert doc dir to symlink for the -dev packages. ++ rm -rf $(CURDIR)/debian/libprotobuf-dev/usr/share/doc/libprotobuf-dev ++ ln -s libprotobuf17 $(CURDIR)/debian/libprotobuf-dev/usr/share/doc/libprotobuf-dev ++ rm -rf $(CURDIR)/debian/libprotoc-dev/usr/share/doc/libprotoc-dev ++ ln -s libprotoc17 $(CURDIR)/debian/libprotoc-dev/usr/share/doc/libprotoc-dev ++ ++ # Remove compiler headers from libprotobuf-dev. ++ rm -rf $(CURDIR)/debian/libprotobuf-dev/usr/include/google/protobuf/compiler diff --cc debian/run_protoc index 0000000,0000000..c559a40 new file mode 100755 --- /dev/null +++ b/debian/run_protoc @@@ -1,0 -1,0 +1,5 @@@ ++#!/bin/sh ++# see debian/rules for how debian/native_protoc gets populated during cross builds ++location=$(dirname "$0") ++export LD_LIBRARY_PATH="$location/native_protoc${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" ++exec "$location/native_protoc/protoc" "$@" diff --cc debian/source/format index 0000000,0000000..163aaf8 new file mode 100644 --- /dev/null +++ b/debian/source/format @@@ -1,0 -1,0 +1,1 @@@ ++3.0 (quilt) diff --cc debian/tests/control index 0000000,0000000..c253274 new file mode 100644 --- /dev/null +++ b/debian/tests/control @@@ -1,0 -1,0 +1,3 @@@ ++Tests: simple ++Depends: @, make, python, pkg-config, zlib1g-dev, build-essential, default-jdk ++Restrictions: allow-stderr diff --cc debian/tests/simple index 0000000,0000000..5506ce8 new file mode 100755 --- /dev/null +++ b/debian/tests/simple @@@ -1,0 -1,0 +1,60 @@@ ++#!/bin/sh ++ ++# Script to automate running the provided example programs to test all ++# language binding (cpp, python, java) ++ ++set -e ++ ++cp -a examples $ADTTMP ++ ++cd $ADTTMP/examples ++ ++export CLASSPATH=/usr/share/java/protobuf.jar ++ ++echo "*** Building example programs" ++ ++make ++ ++echo "*** Adding via cpp" ++./add_person_cpp TEST_FILE << EOF ++1 ++Person One ++ ++ ++EOF ++ ++echo "*** Adding via python" ++ ++./add_person_python TEST_FILE << EOF ++2 ++Person Two ++two@example.net ++ ++EOF ++ ++echo "*** Adding via java" ++ ++./add_person_java TEST_FILE << EOF ++3 ++Person Three ++ ++555-1234 ++work ++ ++EOF ++ ++ ++ ++for kind in cpp python java; do ++ echo "*** Listing via $kind" ++ ./list_people_$kind TEST_FILE ++done ++ ++for kind in cpp python java; do ++ echo "*** Checking listing via $kind" ++ ./list_people_$kind TEST_FILE|grep "Name: Person One" ++ ./list_people_$kind TEST_FILE|grep "Name: Person Two" ++ ./list_people_$kind TEST_FILE|grep "E-mail address: two@example.net" ++ ./list_people_$kind TEST_FILE|grep "Name: Person Three" ++ ./list_people_$kind TEST_FILE|grep "Work phone #: 555-1234" ++done diff --cc debian/watch index 0000000,0000000..16f0698 new file mode 100644 --- /dev/null +++ b/debian/watch @@@ -1,0 -1,0 +1,4 @@@ ++version=4 ++opts=uversionmangle=s/-?(beta)-?/~$1/;s/-?(alpha)-?/~$1/;s/-?(rc)-?/~rc/ \ ++https://github.com/google/protobuf/releases \ ++.*[^n]/(?:|v|version-|version|release-|r|REL_|rel-|protobuf(?:_|-))(\d[^\s/]*)\.(?:tar\.xz|txz|tar\.bz2|tbz2|tar\.gz|tgz)