From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 21 09:41:41 2018 Received: (at 33347) by debbugs.gnu.org; 21 Nov 2018 14:41:41 +0000 Received: from localhost ([127.0.0.1]:38007 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gPTh5-0003OA-Kz for submit@debbugs.gnu.org; Wed, 21 Nov 2018 09:41:41 -0500 Received: from mail-pl1-f195.google.com ([209.85.214.195]:47011) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gPTgt-0003Nn-SZ for 33347@debbugs.gnu.org; Wed, 21 Nov 2018 09:41:28 -0500 Received: by mail-pl1-f195.google.com with SMTP id t13so5812356ply.13 for <33347@debbugs.gnu.org>; Wed, 21 Nov 2018 06:41:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=NNHME3Rwi70tbMKPh0M+Ntm1zx5UUzoW+dVDvWwvJO4=; b=PDm7oEW3PORTJCXqcHcrCiPbC2D3WudHvSPTStWXyR5/4BQlqokAU3GNSOKu4TqC72 v2FMspf0R48kWQy/8OkwZSwzf8F+VbeSe++kAWJCQPZsDaTHeOpwELAzqz74Y/MUvbkY 5qYWAwzxlTEQyfqTTYDrvtGVXqP6zs4KkpJNsYVJgdPmgD1QJhTlPWI4g3FNOfkIwrQQ Pk7ReI0XDzkaFUD+FbH9GJlshKlXSi+4e9H9HyqxA8nKjw1KhIvHR5+OUlD4jBqxpwrc 9U1W+0f/YlD/tqk3ye/XhXm+Yko8/X6mYPcpLRX1JJfEz3TE/tE+p9cpfr4hX52+382z sAUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=NNHME3Rwi70tbMKPh0M+Ntm1zx5UUzoW+dVDvWwvJO4=; b=gNuDaHYqHweVJl9jwh++l12wrPn2vuv2LxLWo66pkaaWta4RS0YHrY9xNCzb47AJCw m1WlzeeLZfC5jBVtc0MZe3PWibVMLIlc1prVtE+PbusD6eVekuWJezzR1Kv9+1LZ7xpJ 685Eq+d7Whb19p+DQ7JtSY0spdAp6QaOnoIHuF5NpUgWUuuDPbOqkgJgSjmgJdwizEMu fOXobnhTcHl1r9Ovvyrn+Ea9C/E/awBPB2x9QG/oMIOijyDxQxiu4GMEKBonb+5Qwf18 kNdmiJ3DDMfE4/qpdjbyyNrcNB785j7uo/Mn8NIA+DNVnBCAQOXFfyhJQjw2koi06sys fzEA== X-Gm-Message-State: AA+aEWaAnUHb8WJiqxfHUPtajEBMQi6/RtQFT2rUZZ8yycHfswt43vm5 LW1PwddWBkpqR5bZMDaa25g= X-Google-Smtp-Source: AJdET5eBDr7f9D2jYIzFrikelp/uqFZvUvtXpVhESRzjd1cJcwJdRjSLdpg1GhgpvaQRL8UR733l3w== X-Received: by 2002:a63:f141:: with SMTP id o1mr6322249pgk.134.1542811273824; Wed, 21 Nov 2018 06:41:13 -0800 (PST) Received: from debian (42-3-197-124.static.netvigator.com. [42.3.197.124]) by smtp.gmail.com with ESMTPSA id n65-v6sm55496084pfi.185.2018.11.21.06.41.11 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 21 Nov 2018 06:41:13 -0800 (PST) From: Alex Vong To: Leo Famulari Subject: Re: [bug#33347] [PATCH 4/4] gnu: teeworlds: Update to 0.7.0 [fixes CVE-2018-18541]. References: <871s7r3095.fsf@gmail.com> <87k1lj1le4.fsf@gmail.com> <20181113165310.GC8498@jasmine.lan> <8736s33hnq.fsf@gmail.com> <20181114173931.GB2408@jasmine.lan> <87va4z1hv9.fsf@gmail.com> Date: Wed, 21 Nov 2018 22:41:08 +0800 In-Reply-To: <87va4z1hv9.fsf@gmail.com> (Alex Vong's message of "Thu, 15 Nov 2018 05:14:50 +0800") Message-ID: <87va4q7at7.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: 33347 Cc: guix-devel@gnu.org, 33347@debbugs.gnu.org, alexvong1995@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello everyone, I think Leo may be busy since he hasn't reply yet. Should I just push given the CVE fix? Cheers, Alex Alex Vong writes: > Leo Famulari writes: > >> On Wed, Nov 14, 2018 at 09:36:25PM +0800, Alex Vong wrote: >>> Well, I though we have a policy to remove bundle dependencies in order >>> to avoid building the same library many times. Do we make exceptions for >>> shared libraries w/o a build system? (an exception I can think of is >>> gnulib) >> >> In general, yes, our policy is to unbundle things when practical. >> >> But there are some commonly used software implementations of basic >> functions (like base64, sha1 (most hash functions actually), et cetera) >> that are specifically designed to be copied and pasted into the >> application that will be using them. >> >> You can usually tell this is the case because the thing will not have >> any build system at all, like you suggest. Also because you find the >> same copy-pasted code in almost every program you look at, like with >> base64 and the hash functions. >> >>> Besides, the FIXME comment seems to suggest future readers to help >>> remove the bundled pnglite. Debian also removes the bundled pnglite in >>> teeworlds[0]. >> >> Well, at a certain point it becomes a matter of taste, and the choice >> should be made by the person doing the work =E2=80=94 you! Either way is= fine >> for Guix :) The important thing is to get this Teeworlds fix pushed >> without too much delay. > > Yes, we should get it fix fast :) I decide not to unbundle md5 because I > actually need to use a hack to make teeworlds build with libmd. But I > still have pnglite unbundle because it looks standalone enough for me > and no hacks are required to unbundle. Here are the new patches: > > From 5e7cb656306622e88352332c6ed9668d8afc60c4 Mon Sep 17 00:00:00 2001 > From: Alex Vong > Date: Mon, 12 Nov 2018 01:55:05 +0800 > Subject: [PATCH 1/4] gnu: Add pnglite. > > * gnu/packages/image.scm (pnglite): New variable. > --- > gnu/packages/image.scm | 56 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 56 insertions(+) > > diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm > index 9bf9bd7e5..6c025e02f 100644 > --- a/gnu/packages/image.scm > +++ b/gnu/packages/image.scm > @@ -21,6 +21,7 @@ > ;;; Copyright =C2=A9 2018 Pierre Neidhardt > ;;; Copyright =C2=A9 2018 Marius Bakke > ;;; Copyright =C2=A9 2018 Pierre-Antoine Rouby > +;;; Copyright =C2=A9 2018 Alex Vong > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -253,6 +254,61 @@ files. It can compress them as much as 40% lossless= ly.") > ;; This package used to be wrongfully name "pngcrunch". > (deprecated-package "pngcrunch" pngcrush)) >=20=20 > +(define-public pnglite > + (let ((commit "11695c56f7d7db806920bd9229b69f230e6ffb38") > + (revision "1")) > + (package > + (name "pnglite") > + ;; The project was moved from sourceforge to github. > + ;; The latest version in sourceforge was 0.1.17: > + ;; https://sourceforge.net/projects/pnglite/files/pnglite/ > + ;; No releases are made in github. > + (version (git-version "0.1.17" revision commit)) > + (source (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/dankar/pnglite") > + (commit commit))) > + (sha256 > + (base32 > + "1lmmkdxby5b8z9kx3zrpgpk33njpcf2xx8z9bgqag855sjsqbbby"= )) > + (file-name (git-file-name name version)))) > + (build-system gnu-build-system) > + (arguments > + `(#:tests? #f ; no tests > + #:phases > + (modify-phases %standard-phases > + (delete 'configure) > + (replace 'build > + (lambda _ > + ;; common build flags for building shared libraries > + (let ((cflags '("-O2" "-g" "-fPIC")) > + (ldflags '("-shared"))) > + (apply invoke > + `("gcc" > + "-o" "libpnglite.so" > + ,@cflags > + ,@ldflags > + "pnglite.c")) > + #t))) > + (replace 'install > + (lambda* (#:key outputs #:allow-other-keys) > + (let* ((out (assoc-ref outputs "out")) > + (lib (string-append out "/lib/")) > + (include (string-append out "/include/")) > + (doc (string-append out "/share/doc/" > + ,name "-" ,version "/"))) > + (install-file "libpnglite.so" lib) > + (install-file "pnglite.h" include) > + (install-file "README.md" doc) > + #t)))))) > + (inputs `(("zlib" ,zlib))) > + (home-page "https://github.com/dankar/pnglite") > + (synopsis "Pretty small png library") > + (description "A pretty small png library. > +Currently all documentation resides in @file{pnglite.h}.") > + (license license:zlib)))) > + > (define-public libjpeg > (package > (name "libjpeg") > --=20 > 2.19.1 > > From e786c6e470a6930af9107e9722bea95a03c5d1c9 Mon Sep 17 00:00:00 2001 > From: Alex Vong > Date: Mon, 12 Nov 2018 02:23:27 +0800 > Subject: [PATCH 2/4] gnu: Add json-parser. > > * gnu/packages/web.scm (json-parser): New variable. > --- > gnu/packages/web.scm | 32 ++++++++++++++++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm > index 03deab422..cde3d00c1 100644 > --- a/gnu/packages/web.scm > +++ b/gnu/packages/web.scm > @@ -28,6 +28,7 @@ > ;;; Copyright =C2=A9 2018 Pierre-Antoine Rouby > ;;; Copyright =C2=A9 2018 G=C3=A1bor Boskovits > ;;; Copyright =C2=A9 2018 M=C4=83d=C4=83lin Ionel Patra=C8=99cu > +;;; Copyright =C2=A9 2018 Alex Vong > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -582,6 +583,37 @@ It aims to conform to RFC 7159.") > (("-Werror") "")) > #t)))))) >=20=20 > +(define-public json-parser > + (package > + (name "json-parser") > + (version "1.1.0") > + (source (origin > + ;; do not use auto-generated tarballs > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/udp/json-parser.git") > + (commit (string-append "v" version)))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 > + "1ls7z4fx0sq633s5bc0j1gh36sv087gmrgr7rza22wjq2d4606yf"))= )) > + ;; FIXME: we should build the python bindings in a separate package > + (build-system gnu-build-system) > + ;; the tests are written for the python bindings which are not built= here > + (arguments '(#:tests? #f)) > + (home-page "https://github.com/udp/json-parser") > + (synopsis "JSON parser written in ANSI C") > + (description "This package provides a very low footprint JSON parser > +written in portable ANSI C. > + > +@itemize > +@item BSD licensed with no dependencies (i.e. just drop the C file into = your > +project) > +@item Never recurses or allocates more memory than it needs > +@item Very simple API with operator sugar for C++ > +@end itemize") > + (license l:bsd-2))) > + > (define-public qjson > (package > (name "qjson") > --=20 > 2.19.1 > > From b1cdc9568f8d82ed7096328d0b3845fc32b4efe8 Mon Sep 17 00:00:00 2001 > From: Alex Vong > Date: Thu, 8 Nov 2018 10:53:43 +0800 > Subject: [PATCH 3/4] gnu: bam: Update to 0.5.1. > > * gnu/packages/build-tools.scm (bam): Update to 0.5.1. > [source]: Switch to git-fetch. > [arguments]: Use newly provided Makefile. > [inputs]: Add lua. > --- > gnu/packages/build-tools.scm | 37 ++++++++++++++++++------------------ > 1 file changed, 18 insertions(+), 19 deletions(-) > > diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm > index 42de56f8c..a52ee480a 100644 > --- a/gnu/packages/build-tools.scm > +++ b/gnu/packages/build-tools.scm > @@ -5,6 +5,7 @@ > ;;; Copyright =C2=A9 2018 Fis Trivial > ;;; Copyright =C2=A9 2018 Tom=C3=A1=C5=A1 =C4=8Cech > ;;; Copyright =C2=A9 2018 Marius Bakke > +;;; Copyright =C2=A9 2018 Alex Vong > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -30,6 +31,7 @@ > #:use-module (guix build-system cmake) > #:use-module (gnu packages) > #:use-module (gnu packages compression) > + #:use-module (gnu packages lua) > #:use-module (gnu packages python) > #:use-module (gnu packages python-crypto) > #:use-module (gnu packages python-web) > @@ -40,33 +42,30 @@ > (define-public bam > (package > (name "bam") > - (version "0.4.0") > + (version "0.5.1") > (source (origin > - (method url-fetch) > - (uri (string-append "http://github.com/downloads/matricks/" > - "bam/bam-" version ".tar.bz2")) > + ;; do not use auto-generated tarballs > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/matricks/bam.git") > + (commit (string-append "v" version)))) > + (file-name (git-file-name name version)) > (sha256 > (base32 > - "0z90wvyd4nfl7mybdrv9dsd4caaikc6fxw801b72gqi1m9q0c0sn"))= )) > + "13br735ig7lygvzyfd15fc2rdygrqm503j6xj5xkrl1r7w2wipq6"))= )) > (build-system gnu-build-system) > (arguments > - `(#:phases > + `(#:make-flags `("CC=3Dgcc" > + ,(string-append "INSTALL_PREFIX=3D" > + (assoc-ref %outputs "out"))) > + #:test-target "test" > + #:phases > (modify-phases %standard-phases > - (delete 'configure) > - (replace 'build > - (lambda _ > - (zero? (system* "bash" "make_unix.sh")))) > - (replace 'check > - (lambda _ > - (zero? (system* "python" "scripts/test.py")))) > - (replace 'install > - (lambda* (#:key outputs #:allow-other-keys) > - (let ((bin (string-append (assoc-ref outputs "out") "/bin")= )) > - (mkdir-p bin) > - (install-file "bam" bin) > - #t)))))) > + (delete 'configure)))) > (native-inputs > `(("python" ,python-2))) > + (inputs > + `(("lua" ,lua))) > (home-page "https://matricks.github.io/bam/") > (synopsis "Fast and flexible build system") > (description "Bam is a fast and flexible build system. Bam uses Lua= to > --=20 > 2.19.1 > > From 3aa13808d20fcf2eea585c85b96e8f6b1f5fe292 Mon Sep 17 00:00:00 2001 > From: Alex Vong > Date: Mon, 12 Nov 2018 02:42:25 +0800 > Subject: [PATCH 4/4] gnu: teeworlds: Update to 0.7.0 [fixes CVE-2018-1854= 1]. > > * gnu/packages/games.scm (teeworlds): Update to 0.7.0. > [source]: Switch to git-fetch. Remove all bundled libraries except md5. > [arguments]: Adjust accordingly. > [inputs]: Use sdl2 instead of sdl and python-wrapper instead of python-2. > Add json-parser and pnglite. > * gnu/packages/patches/teeworlds-use-latest-wavpack.patch: Update it. > --- > gnu/packages/games.scm | 116 ++++++++++++------ > .../teeworlds-use-latest-wavpack.patch | 72 ++++++++--- > 2 files changed, 136 insertions(+), 52 deletions(-) > > diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm > index 3679aa09c..a1a571c51 100644 > --- a/gnu/packages/games.scm > +++ b/gnu/packages/games.scm > @@ -35,6 +35,7 @@ > ;;; Copyright =C2=A9 2018 Tim Gesthuizen > ;;; Copyright =C2=A9 2018 Madalin Ionel-Patrascu > ;;; Copyright =C2=A9 2018 Benjamin Slade > +;;; Copyright =C2=A9 2018 Alex Vong > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -4139,31 +4140,54 @@ small robot living in the nano world, repair its = maker.") > (define-public teeworlds > (package > (name "teeworlds") > - (version "0.6.4") > + (version "0.7.0") > (source (origin > - (method url-fetch) > - (uri (string-append "https://github.com/teeworlds/teeworld= s/" > - "archive/" version "-release.tar.gz")) > - (file-name (string-append name "-" version ".tar.gz")) > + ;; do not use auto-generated tarballs > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/teeworlds/teeworlds.git") > + (commit version))) > + (file-name (git-file-name name version)) > (sha256 > (base32 > - "1mqhp6xjl75l49050cid36wxyjn1qr0vjx1c709dfg1lkvmgs6l3")) > - (modules '((guix build utils))) > - (snippet > - '(begin > - (for-each delete-file-recursively > - '("src/engine/external/wavpack/" > - "src/engine/external/zlib/")) > + "0jigg2yikihbivzs7hpljr0mghx1l9v4f1cdr8fbmqv2wb51ah8q")) > + (modules '((guix build utils) > + (ice-9 ftw) > + (ice-9 regex) > + (srfi srfi-1) > + (srfi srfi-26))) > + (snippet ; remove bundled libraries except md5 > + '(let ((base-dir "src/engine/external/")) > + (for-each (compose (cut delete-file-recursively <>) > + (cut string-append base-dir <>)) > + (remove (cut string-match "(^.)|(^md5$)" <>) > + (scandir base-dir))) > #t)) > (patches > (search-patches "teeworlds-use-latest-wavpack.patch")))) > (build-system gnu-build-system) > (arguments > `(#:tests? #f ; no tests included > + #:modules ((guix build gnu-build-system) > + (guix build utils) > + (srfi srfi-26)) > #:phases > (modify-phases %standard-phases > (replace 'configure > (lambda* (#:key outputs #:allow-other-keys) > + ;; The bundled json-parser uses an old API. > + ;; To use the latest non-bundled version, we need to pass t= he > + ;; length of the data in all 'json_parse_ex' calls. > + (define (use-latest-json-parser file) > + (substitute* file > + (("engine/external/json-parser/json\\.h") > + "json-parser/json.h") > + (("json_parse_ex\\(&JsonSettings, pFileData, aError\\);= ") > + "json_parse_ex(&JsonSettings, > + pFileData, > + strlen(pFileData), > + aError);"))) > + > ;; Embed path to assets. > (substitute* "src/engine/shared/storage.cpp" > (("#define DATA_DIR.*") > @@ -4173,50 +4197,68 @@ small robot living in the nano world, repair its = maker.") > "\""))) >=20=20 > ;; Bam expects all files to have a recent time stamp. > - (for-each (lambda (file) > - (utime file 1 1)) > + (for-each (cut utime <> 1 1) > (find-files ".")) >=20=20 > ;; Do not use bundled libraries. > (substitute* "bam.lua" > - (("if config.zlib.value =3D=3D 1 then") > - "if true then") > - (("wavpack =3D .*") > - "wavpack =3D {} > -settings.link.libs:Add(\"wavpack\")\n")) > + (("local json =3D Compile.+$") > + "local json =3D nil > +settings.link.libs:Add(\"jsonparser\")") > + (("local png =3D Compile.+$") > + "local png =3D nil > +settings.link.libs:Add(\"pnglite\")") > + (("local wavpack =3D Compile.+$") > + "local wavpack =3D nil > +settings.link.libs:Add(\"wavpack\")") > + (("if config\\.zlib\\.value =3D=3D 1") > + "if config.zlib.value")) > + (substitute* "src/engine/client/graphics_threaded.cpp" > + (("engine/external/pnglite/pnglite\\.h") > + "pnglite.h")) > (substitute* "src/engine/client/sound.cpp" > - (("#include ") > - "#include ")) > + (("engine/external/wavpack/wavpack\\.h") > + "wavpack/wavpack.h")) > + (for-each use-latest-json-parser > + '("src/game/client/components/countryflags.cpp" > + "src/game/client/components/menus_settings.cpp" > + "src/game/client/components/skins.cpp" > + "src/game/client/localization.cpp" > + "src/game/editor/auto_map.h" > + "src/game/editor/editor.cpp")) > #t)) > (replace 'build > (lambda _ > - (zero? (system* "bam" "-a" "-v" "release")))) > + (invoke "bam" "-a" "-v" "conf=3Drelease"))) > (replace 'install > (lambda* (#:key outputs #:allow-other-keys) > - (let* ((out (assoc-ref outputs "out")) > - (bin (string-append out "/bin")) > - (data (string-append out "/share/teeworlds/data"))) > - (mkdir-p bin) > - (mkdir-p data) > - (for-each (lambda (file) > - (install-file file bin)) > - '("teeworlds" "teeworlds_srv")) > - (copy-recursively "data" data) > + (let* ((arch ,(system->linux-architecture > + (or (%current-target-system) > + (%current-system)))) > + (build (string-append "build/" arch "/release/")) > + (data-built (string-append build "data/")) > + (out (assoc-ref outputs "out")) > + (bin (string-append out "/bin/")) > + (data (string-append out "/share/teeworlds/data/"))) > + (for-each (cut install-file <> bin) > + (map (cut string-append build <>) > + '("teeworlds" "teeworlds_srv"))) > + (copy-recursively data-built data) > #t)))))) > - ;; FIXME: teeworlds bundles the sources of "pnglite", a two-file PNG > - ;; library without a build system. > (inputs > `(("freetype" ,freetype) > ("glu" ,glu) > + ("json-parser" ,json-parser) > ("mesa" ,mesa) > - ("sdl-union" ,(sdl-union (list sdl > - sdl-mixer > - sdl-image))) > + ("pnglite" ,pnglite) > + ("sdl2" ,sdl2) > + ("sdl2-image" ,sdl2-image) > + ("sdl2-mixer" ,sdl2-mixer) > ("wavpack" ,wavpack) > ("zlib" ,zlib))) > (native-inputs > `(("bam" ,bam) > - ("python" ,python-2) > + ("python" ,python-wrapper) > ("pkg-config" ,pkg-config))) > (home-page "https://www.teeworlds.com") > (synopsis "2D retro multiplayer shooter game") > diff --git a/gnu/packages/patches/teeworlds-use-latest-wavpack.patch b/gn= u/packages/patches/teeworlds-use-latest-wavpack.patch > index e9fd99108..3ad1340d2 100644 > --- a/gnu/packages/patches/teeworlds-use-latest-wavpack.patch > +++ b/gnu/packages/patches/teeworlds-use-latest-wavpack.patch > @@ -1,10 +1,20 @@ > -Downloaded from https://anonscm.debian.org/cgit/pkg-games/teeworlds.git/= plain/debian/patches/new-wavpack.patch. > +Downloaded from https://salsa.debian.org/games-team/teeworlds/raw/master= /debian/patches/new-wavpack.patch. >=20=20 > -This patch lets us build teeworlds with wavpack 5.1.0. > +From: Markus Koschany > +Date: Thu, 25 Oct 2018 20:52:27 +0200 > +Subject: new-wavpack >=20=20 > +Make wavpack compatible with Debian's version. > +--- > + src/engine/client/sound.cpp | 33 +++++++++++++++------------------ > + src/engine/client/sound.h | 4 ---- > + 2 files changed, 15 insertions(+), 22 deletions(-) > + > +diff --git a/src/engine/client/sound.cpp b/src/engine/client/sound.cpp > +index 048ec24..80de3c5 100644 > --- a/src/engine/client/sound.cpp > +++ b/src/engine/client/sound.cpp > -@@ -328,17 +328,14 @@ void CSound::RateConvert(int SampleID) > +@@ -325,10 +325,6 @@ void CSound::RateConvert(int SampleID) > pSample->m_NumFrames =3D NumFrames; > } >=20=20=20 > @@ -12,10 +22,10 @@ This patch lets us build teeworlds with wavpack 5.1.0. > -{ > - return io_read(ms_File, pBuffer, Size); > -} > -- > - int CSound::LoadWV(const char *pFilename) > +=20 > + ISound::CSampleHandle CSound::LoadWV(const char *pFilename) > { > - CSample *pSample; > +@@ -336,6 +332,8 @@ ISound::CSampleHandle CSound::LoadWV(const char *pFi= lename) > int SampleID =3D -1; > char aError[100]; > WavpackContext *pContext; > @@ -24,17 +34,18 @@ This patch lets us build teeworlds with wavpack 5.1.0. >=20=20=20 > // don't waste memory on sound when we are stress testing > if(g_Config.m_DbgStress) > -@@ -351,19 +348,23 @@ int CSound::LoadWV(const char *pFilename > - if(!m_pStorage) > - return -1; > +@@ -349,25 +347,29 @@ ISound::CSampleHandle CSound::LoadWV(const char *p= Filename) > + return CSampleHandle(); >=20=20=20 > + lock_wait(m_SoundLock); > - ms_File =3D m_pStorage->OpenFile(pFilename, IOFLAG_READ, IStorage::TYP= E_ALL); > - if(!ms_File) > + File =3D m_pStorage->OpenFile(pFilename, IOFLAG_READ, IStorage::TYPE_A= LL, aWholePath, sizeof(aWholePath)); > + if(!File) > { > dbg_msg("sound/wv", "failed to open file. filename=3D'%s'", pFilename= ); > - return -1; > + lock_unlock(m_SoundLock); > + return CSampleHandle(); > } > + else > + { > @@ -43,7 +54,14 @@ This patch lets us build teeworlds with wavpack 5.1.0. >=20=20=20 > SampleID =3D AllocID(); > if(SampleID < 0) > - return -1; > + { > +- io_close(ms_File); > +- ms_File =3D 0; > ++ io_close(File); > ++ File =3D 0; > + lock_unlock(m_SoundLock); > + return CSampleHandle(); > + } > pSample =3D &m_aSamples[SampleID]; >=20=20=20 > - pContext =3D WavpackOpenFileInput(ReadData, aError); > @@ -51,7 +69,29 @@ This patch lets us build teeworlds with wavpack 5.1.0. > if (pContext) > { > int m_aSamples =3D WavpackGetNumSamples(pContext); > -@@ -419,9 +420,6 @@ int CSound::LoadWV(const char *pFilename > +@@ -385,8 +387,8 @@ ISound::CSampleHandle CSound::LoadWV(const char *pFi= lename) > + if(pSample->m_Channels > 2) > + { > + dbg_msg("sound/wv", "file is not mono or stereo. filename=3D'%s'", p= Filename); > +- io_close(ms_File); > +- ms_File =3D 0; > ++ io_close(File); > ++ File =3D 0; > + lock_unlock(m_SoundLock); > + return CSampleHandle(); > + } > +@@ -401,8 +403,8 @@ ISound::CSampleHandle CSound::LoadWV(const char *pFi= lename) > + if(BitsPerSample !=3D 16) > + { > + dbg_msg("sound/wv", "bps is %d, not 16, filname=3D'%s'", BitsPerSamp= le, pFilename); > +- io_close(ms_File); > +- ms_File =3D 0; > ++ io_close(File); > ++ File =3D 0; > + lock_unlock(m_SoundLock); > + return CSampleHandle(); > + } > +@@ -429,9 +431,6 @@ ISound::CSampleHandle CSound::LoadWV(const char *pFi= lename) > dbg_msg("sound/wv", "failed to open %s: %s", pFilename, aError); > } >=20=20=20 > @@ -61,14 +101,16 @@ This patch lets us build teeworlds with wavpack 5.1.= 0. > if(g_Config.m_Debug) > dbg_msg("sound/wv", "loaded %s", pFilename); >=20=20=20 > -@@ -527,7 +525,5 @@ void CSound::StopAll() > - lock_unlock(m_SoundLock); > +@@ -560,7 +559,5 @@ bool CSound::IsPlaying(CSampleHandle SampleID) > + return Ret; > } >=20=20=20 > -IOHANDLE CSound::ms_File =3D 0; > - > IEngineSound *CreateEngineSound() { return new CSound; } >=20=20=20 > +diff --git a/src/engine/client/sound.h b/src/engine/client/sound.h > +index ff357c0..cec2cde 100644 > --- a/src/engine/client/sound.h > +++ b/src/engine/client/sound.h > @@ -21,10 +21,6 @@ public: > @@ -81,4 +123,4 @@ This patch lets us build teeworlds with wavpack 5.1.0. > - > virtual bool IsSoundEnabled() { return m_SoundEnabled !=3D 0; } >=20=20=20 > - virtual int LoadWV(const char *pFilename); > + virtual CSampleHandle LoadWV(const char *pFilename); --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEARYIAB0WIQQwb8uPLAHCXSnTBVZh71Au9gJS8gUCW/VuhAAKCRBh71Au9gJS 8i8EAQDF5p9V/DxO5YEJE5L14IEyyFNgDJGfCLPyCXeWR884YwEAlgf7NIM8OxTz R4a3lMGFNjmkQ5ok0uE6GJHQhPvsyA8= =qMoM -----END PGP SIGNATURE----- --=-=-=--