GNU logs - #35350, boring messages


Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Mark H Weaver <mhw@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Sun, 21 Apr 2019 00:01:01 +0000
Resent-Message-ID: <handler.35350.B.15558048142789 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: 35350 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-guix@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.15558048142789
          (code B ref -1); Sun, 21 Apr 2019 00:01:01 +0000
Received: (at submit) by debbugs.gnu.org; 21 Apr 2019 00:00:14 +0000
Received: from localhost ([127.0.0.1]:47091 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hHztz-0000iq-3m
	for submit <at> debbugs.gnu.org; Sat, 20 Apr 2019 20:00:14 -0400
Received: from eggs.gnu.org ([209.51.188.92]:51272)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mhw@HIDDEN>) id 1hHztv-0000hM-0T
 for submit <at> debbugs.gnu.org; Sat, 20 Apr 2019 20:00:10 -0400
Received: from lists.gnu.org ([209.51.188.17]:51629)
 by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
 (Exim 4.71) (envelope-from <mhw@HIDDEN>) id 1hHztp-00010y-M2
 for submit <at> debbugs.gnu.org; Sat, 20 Apr 2019 20:00:01 -0400
Received: from eggs.gnu.org ([209.51.188.92]:37411)
 by lists.gnu.org with esmtp (Exim 4.71)
 (envelope-from <mhw@HIDDEN>) id 1hHzti-0004gf-Q1
 for bug-guix@HIDDEN; Sat, 20 Apr 2019 20:00:01 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,URIBL_BLOCKED
 autolearn=disabled version=3.3.2
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <mhw@HIDDEN>) id 1hHzpD-0006s3-5J
 for bug-guix@HIDDEN; Sat, 20 Apr 2019 19:55:21 -0400
Received: from world.peace.net ([64.112.178.59]:37882)
 by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
 (Exim 4.71) (envelope-from <mhw@HIDDEN>) id 1hHzpC-0006rG-Us
 for bug-guix@HIDDEN; Sat, 20 Apr 2019 19:55:15 -0400
Received: from mhw by world.peace.net with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <mhw@HIDDEN>)
 id 1hHzp6-0001TJ-Tm; Sat, 20 Apr 2019 19:55:10 -0400
From: Mark H Weaver <mhw@HIDDEN>
Date: Sat, 20 Apr 2019 19:53:29 -0400
Message-ID: <87mukkfd2j.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 64.112.178.59
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-Spam-Score: -1.3 (-)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.3 (--)

Sometimes when compiling a package with --verbosity=3D1, some parts of the
compile output leak through.  For example, see the transcript below.

       Mark


--8<---------------cut here---------------start------------->8---
mhw@jojen ~$ guix system build /etc/config.scm --verbosity=3D1 --keep-faile=
d --keep-going; guix package -m mhw-manifest.scm --keep-failed --keep-going
building /gnu/store/3c9f2rv92fb5id7xy0h62jl4vvglvpvh-linux-libre-5.0.8-gnu.=
tar.xz.drv...
downloading from https://linux-libre.fsfla.org/pub/linux-libre/releases/5.0=
.8-gnu/linux-libre-5.0.8-gnu.tar.xz...
building /gnu/store/cxlivh8bq6adnhdzc6i75z5i2qplq8zr-linux-libre-5.0.8-gnu.=
tar.xz.drv...
building /gnu/store/9xlx7zj4w9cl69xi3d21gl40l3gx4jri-linux-libre-5.0.8.drv.=
..
building /gnu/store/la179xxpm8m4jmajjr3xfrchzfwpc06y-console-setup-1.191-ch=
eckout.drv...
building /gnu/store/v7a1y4v0nwrq64ddr7kdm4855gzjrzrc-console-setup-1.191.dr=
v...
building /gnu/store/04wdi408fbl9bmnzdy4dwxd135cy9jss-gpgme-1.13.0.tar.bz2.d=
rv...
downloading from https://gnupg.org/ftp/gcrypt/gpgme/gpgme-1.13.0.tar.bz2...
building /gnu/store/yaavzrys958mhmki2axpdnbrlyzd911f-gpgme-1.13.0.drv...
- 'check' phaselt.
building /gnu/store/0rdfdqsahs0axzhpn6k3g4zmskmgkvcg-samba-4.10.2.drv...
building /gnu/store/75z0i5hb2cwn0y76gnaqlj18z1715yy1-volume-key-0.3.12.drv.=
..
building /gnu/store/0fjcqx6s7bm7wsa4iwf2knpki9r8g71h-libblockdev-2.21.drv...
building /gnu/store/dk1867ygsaimm5yzxp6rrx3379fsx878-udisks-2.7.7.drv...
building /gnu/store/a2cwdflfbklmj4cflrzkd4n4m3q3ain5-gvfs-1.32.1.drv...
building /gnu/store/j8a8k76qaslj3bvbbbzpp6wwh80cv27b-libmbim-1.18.2.tar.xz.=
drv...
downloading from https://www.freedesktop.org/software/libmbim/libmbim-1.18.=
2.tar.xz...
building /gnu/store/070338avjl034y1vqd40hb62aw3i7yg0-libqmi-1.22.4.tar.xz.d=
rv...
downloading from https://www.freedesktop.org/software/libqmi/libqmi-1.22.4.=
tar.xz...
building /gnu/store/vgli6q8lyfp92mxr9v5783kd2cgyb3mr-libmbim-1.18.2.drv...
building /gnu/store/7jq010r8fvdgdr9sb6g2znrkqkjgpbjk-libqmi-1.22.4.drv...
building /gnu/store/rn5mbq2h2fmxpd95q6cfx31bgbw5q89a-modem-manager-1.4.14.d=
rv...
\ 'build' phase=EF=BF=BD@ build-log 30033 4096
=EF=BF=BD is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_error (ctx->result,
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:122:21: note: declared here
 void                g_simple_async_result_set_error        (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6136:5: warning: =E2=80=98g_simple_async_result_set_op=
_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem.c: In function =E2=80=98sms_pdu_part_list_ready=E2=80=99:
mm-broadband-modem.c:6172:9: warning: =E2=80=98g_simple_async_result_take_e=
rror=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (ctx->result, error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6179:9: warning: =E2=80=98g_simple_async_result_take_e=
rror=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (ctx->result, error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6205:5: warning: =E2=80=98g_simple_async_result_set_op=
_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem.c: In function =E2=80=98list_parts_lock_storages_ready=
=E2=80=99:
mm-broadband-modem.c:6219:9: warning: =E2=80=98g_simple_async_result_take_e=
rror=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (ctx->result, error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
   @ build-log 30033 4096
              from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c: In function =E2=80=98modem_messaging_load_initial_sms=
_parts=E2=80=99:
mm-broadband-modem.c:6249:15: warning: assignment from incompatible pointer=
 type [-Wincompatible-pointer-types]
     ctx->self =3D g_object_ref (self);
               ^
mm-broadband-modem.c:6250:5: warning: =E2=80=98g_simple_async_result_new=E2=
=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
     ctx->result =3D g_simple_async_result_new (G_OBJECT (self),
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem.c: In function =E2=80=98hdr_state_context_complete_and_f=
ree=E2=80=99:
mm-broadband-modem.c:6365:5: warning: =E2=80=98g_simple_async_result_comple=
te=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete (ctx->result);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:104:21: note: declared here
 void                g_simple_async_result_complete         (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem.c: In function =E2=80=98modem_cdma_get_hdr_state_finish=
=E2=80=99:
mm-broadband-modem.c:6382:5: warning: =E2=80=98g_simple_async_result_propag=
ate_error=E2=80=99 is deprecated [-Wdeprecated-declarations]
     if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res)=
, error))
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:119:21: note: declared here
 gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6385:5: warning: =E2=80=98g_simple_async_result_get_op=
_res_gpointer=E2=80=99 is deprecated [-Wdeprecated-declarations]
     results =3D g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_=
RESULT (res));
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:79:21: note: declared here
 gpointer            g_simple_async_result_get_op_res_gpointer (GSimpleAsyn=
cResult      *simple);
                     ^
mm-broadband-modem.c: In function =E2=80=98hdr_subsys_state_info_ready=E2=
=80=99:
mm-broadband-modem.c:6405:9: warning: =E2=80=98g_simple_async_result_set_fr=
om_error=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_from_error (ctx->result, error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-g@ build-log 30033 4096
lib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:113:21: note: declared here
 void                g_simple_async_result_set_from_error   (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6415:9: warning: =E2=80=98g_simple_async_result_set_er=
ror=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_error (ctx->result,
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:122:21: note: declared here
 void                g_simple_async_result_set_error        (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6433:5: warning: =E2=80=98g_simple_async_result_set_op=
_res_gpointer=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gpointer (ctx->result, results, (GDes=
troyNotify)g_free);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:75:21: note: declared here
 void                g_simple_async_result_set_op_res_gpointer (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem.c: In function =E2=80=98modem_cdma_get_hdr_state=E2=80=
=99:
mm-broadband-modem.c:6448:9: warning: =E2=80=98g_simple_async_report_error_=
in_idle=E2=80=99 is deprecated: Use 'g_task_report_error' instead [-Wdeprec=
ated-declarations]
         g_simple_async_report_error_in_idle (G_OBJECT (self),
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:140:6: note: declared here
 void g_simple_async_report_error_in_idle  (GObject            *object,
      ^
mm-broadband-modem.c:6459:15: warning: assignment from incompatible pointer=
 type [-Wincompatible-pointer-types]
     ctx->self =3D g_object_ref (self);
               ^
mm-broadband-modem.c:6460:5: warning: =E2=80=98g_simple_async_result_new=E2=
=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
     ctx->result =3D g_simple_async_result_new (G_OBJECT (self),
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem.c: In function =E2=80=98call_manager_state_context_compl=
ete_and_free=E2=80=99:
mm-broadband-modem.c:6497:5: warning: =E2=80=98g_simple_async_result_comple=
te=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete (ctx->result);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncre@ build-log 30033 4096
sult.h:104:21: note: declared here
 void                g_simple_async_result_complete         (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem.c: In function =E2=80=98modem_cdma_get_call_manager_stat=
e_finish=E2=80=99:
mm-broadband-modem.c:6513:5: warning: =E2=80=98g_simple_async_result_propag=
ate_error=E2=80=99 is deprecated [-Wdeprecated-declarations]
     if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res)=
, error))
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:119:21: note: declared here
 gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6516:5: warning: =E2=80=98g_simple_async_result_get_op=
_res_gpointer=E2=80=99 is deprecated [-Wdeprecated-declarations]
     results =3D g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_=
RESULT (res));
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:79:21: note: declared here
 gpointer            g_simple_async_result_get_op_res_gpointer (GSimpleAsyn=
cResult      *simple);
                     ^
mm-broadband-modem.c: In function =E2=80=98cm_subsys_state_info_ready=E2=80=
=99:
mm-broadband-modem.c:6535:9: warning: =E2=80=98g_simple_async_result_take_e=
rror=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (ctx->result, error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6546:9: warning: =E2=80=98g_simple_async_result_set_er=
ror=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_error (ctx->result,
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:122:21: note: declared here
 void                g_simple_async_result_set_error        (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6561:5: warning: =E2=80=98g_simple_async_result_set_op=
_res_gpointer=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gpointer (ctx->result, results, (GDes=
troyNotify)g_free);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:75:21: note: declared here
 void                g_simple_async_result_set_op_res_gpointer (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem.c: In function =E2=80=98modem_cdma_get_call_manager_stat=
e=E2=80=99:
mm-broadband-modem.c:6576:9: warning: =E2=80=98g_sim@ build-log 30033 4096
ple_async_report_error_in_idle=E2=80=99 is deprecated: Use 'g_task_report_e=
rror' instead [-Wdeprecated-declarations]
         g_simple_async_report_error_in_idle (G_OBJECT (self),
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:140:6: note: declared here
 void g_simple_async_report_error_in_idle  (GObject            *object,
      ^
mm-broadband-modem.c:6587:15: warning: assignment from incompatible pointer=
 type [-Wincompatible-pointer-types]
     ctx->self =3D g_object_ref (self);
               ^
mm-broadband-modem.c:6588:5: warning: =E2=80=98g_simple_async_result_new=E2=
=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
     ctx->result =3D g_simple_async_result_new (G_OBJECT (self),
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem.c: In function =E2=80=98cdma1x_serving_system_context_co=
mplete_and_free=E2=80=99:
mm-broadband-modem.c:6627:5: warning: =E2=80=98g_simple_async_result_comple=
te=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete (ctx->result);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:104:21: note: declared here
 void                g_simple_async_result_complete         (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem.c: In function =E2=80=98modem_cdma_get_cdma1x_serving_sy=
stem_finish=E2=80=99:
mm-broadband-modem.c:6656:5: warning: =E2=80=98g_simple_async_result_propag=
ate_error=E2=80=99 is deprecated [-Wdeprecated-declarations]
     if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res)=
, error))
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:119:21: note: declared here
 gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6659:5: warning: =E2=80=98g_simple_async_result_get_op=
_res_gpointer=E2=80=99 is deprecated [-Wdeprecated-declarations]
     results =3D (Cdma1xServingSystemResults *)g_simple_async_result_get_op=
_res_gpointer (G_SIMPLE_ASYNC_RESULT (res));
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:79:21: note: declared here
 gpointer            g_simple_async_result_get_op_res_gpointer (GSimpleAsyn=
cResult      *simple);
                     ^
mm-broadband-modem.c: In function =E2=80=98css_query_ready=E2=80=99:
mm-broadband-modem.c:6685:9: warning: =E2=80=98g_simple_async_result_take_e=
@ build-log 30033 4096
rror=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (ctx->result, error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6708:13: warning: =E2=80=98g_simple_async_result_set_e=
rror=E2=80=99 is deprecated [-Wdeprecated-declarations]
             g_simple_async_result_set_error (
             ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:122:21: note: declared here
 void                g_simple_async_result_set_error        (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6748:9: warning: =E2=80=98g_simple_async_result_set_er=
ror=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_error (
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:122:21: note: declared here
 void                g_simple_async_result_set_error        (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6777:9: warning: =E2=80=98g_simple_async_result_take_e=
rror=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (ctx->result,
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6790:5: warning: =E2=80=98g_simple_async_result_set_op=
_res_gpointer=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gpointer (ctx->result, results, (GDes=
troyNotify)g_free);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:75:21: note: declared here
 void                g_simple_async_result_set_op_res_gpointer (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem.c: In function =E2=80=98qcdm_cdma_status_ready=E2=80=99:
mm-broadband-modem.c:6854:5: warning: =E2=80=98g_simple_async_result_set_op=
_res_gpointer=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gpointer (ctx->result, results, (GDes=
troyNotify)g_free);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/@ build-log 30033 4096
store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gio/gsi=
mpleasyncresult.h:75:21: note: declared here
 void                g_simple_async_result_set_op_res_gpointer (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem.c: In function =E2=80=98modem_cdma_get_cdma1x_serving_sy=
stem=E2=80=99:
mm-broadband-modem.c:6867:15: warning: assignment from incompatible pointer=
 type [-Wincompatible-pointer-types]
     ctx->self =3D g_object_ref (self);
               ^
mm-broadband-modem.c:6868:5: warning: =E2=80=98g_simple_async_result_new=E2=
=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
     ctx->result =3D g_simple_async_result_new (G_OBJECT (self),
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem.c: In function =E2=80=98modem_cdma_get_service_status_fi=
nish=E2=80=99:
mm-broadband-modem.c:6909:5: warning: =E2=80=98g_simple_async_result_propag=
ate_error=E2=80=99 is deprecated [-Wdeprecated-declarations]
     if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res)=
, error))
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:119:21: note: declared here
 gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6912:5: warning: =E2=80=98g_simple_async_result_get_op=
_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
     *has_cdma_service =3D g_simple_async_result_get_op_res_gboolean (G_SIM=
PLE_ASYNC_RESULT (res));
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:91:21: note: declared here
 gboolean            g_simple_async_result_get_op_res_gboolean (GSimpleAsyn=
cResult      *simple);
                     ^
mm-broadband-modem.c: In function =E2=80=98cad_query_ready=E2=80=99:
mm-broadband-modem.c:6926:9: warning: =E2=80=98g_simple_async_result_take_e=
rror=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (simple, error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6933:13: warning: =E2=80=98g_simple_async_result_set_e=
rror=E2=80=99 is deprecated [-Wdeprecated-declarations]
             g_simple_async_result_set_error (simple,
             ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/@ build-log 30033 4=
096
include/glib-2.0/gio/gsimpleasyncresult.h:122:21: note: declared here
 void                g_simple_async_result_set_error        (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6940:13: warning: =E2=80=98g_simple_async_result_set_o=
p_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
             g_simple_async_result_set_op_res_gboolean (simple, (cad =3D=3D=
 1));
             ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem.c:6943:5: warning: =E2=80=98g_simple_async_result_comple=
te=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete (simple);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:104:21: note: declared here
 void                g_simple_async_result_complete         (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem.c: In function =E2=80=98modem_cdma_get_service_status=E2=
=80=99:
mm-broadband-modem.c:6954:5: warning: =E2=80=98g_simple_async_result_new=E2=
=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
     result =3D g_simple_async_result_new (G_OBJECT (self),
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem.c: In function =E2=80=98detailed_registration_state_cont=
ext_complete_and_free=E2=80=99:
mm-broadband-modem.c:6988:9: warning: =E2=80=98g_simple_async_result_take_e=
rror=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (ctx->result, ctx->error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem.c:6995:9: warning: =E2=80=98g_simple_async_result_set_op=
_res_gpointer=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_op_res_gpointer (ctx->result, results, g=
_free);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:75:21: note: declared here
 void                g_simple_async_result_set_op_res_gpointer (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem.c:6998:5: warning: =E2=80=98g_simple_async_result_comple=
te=E2=80=99 is deprecated [-Wdepre@ build-log 30033 1434
cated-declarations]
     g_simple_async_result_complete (ctx->result);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:104:21: note: declared here
 void                g_simple_async_result_complete         (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem.c: In function =E2=80=98modem_cdma_get_detailed_registra=
tion_state_finish=E2=80=99:
mm-broadband-modem.c:7014:5: warning: =E2=80=98g_simple_async_result_propag=
ate_error=E2=80=99 is deprecated [-Wdeprecated-declarations]
     if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res)=
, error))
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:119:21: note: declared here
 gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncRe=
sult      *simple,
                     ^
| 'build' phase=EF=BF=BD=EF=BF=BD@ build-log 30033 4096
=EF=BF=BD=EF=BF=BDg_simple_async_result_propagate_error=E2=80=99 is depreca=
ted [-Wdeprecated-declarations]
     if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res)=
, error))
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:119:21: note: declared here
 gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-sim-mbim.c:283:5: warning: =E2=80=98g_simple_async_result_get_op_res_gpo=
inter=E2=80=99 is deprecated [-Wdeprecated-declarations]
     provider =3D (MbimProvider *)g_simple_async_result_get_op_res_gpointer=
 (G_SIMPLE_ASYNC_RESULT (res));
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:79:21: note: declared here
 gpointer            g_simple_async_result_get_op_res_gpointer (GSimpleAsyn=
cResult      *simple);
                     ^
mm-broadband-modem-qmi.c:7964:5: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
     ^
mm-sim-mbim.c: In function =E2=80=98load_operator_name_ready=E2=80=99:
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-sim-mbim.c:303:9: warning: =E2=80=98g_simple_async_result_set_op_res_gpo=
inter=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_op_res_gpointer (simple, provider, (GDes=
troyNotify)mbim_provider_free);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:75:21: note: declared here
 void                g_simple_async_result_set_op_res_gpointer (GSimpleAsyn=
cResult      *simple,
                     ^
mm-sim-mbim.c:305:9: warning: =E2=80=98g_simple_async_result_take_error=E2=
=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (simple, error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-sim-mbim.c:309:5: warning: =E2=80=98g_simple_async_result_complete=E2=80=
=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete (simple);
     ^
mm-broadband-modem-qmi.c: In function =E2=80=98disable_location_gathering=
=E2=80=99:
In file included from /gn@ build-log 30033 4096
u/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gio/g=
io.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:104:21: note: declared here
 void                g_simple_async_result_complete         (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem-qmi.c:7979:5: warning: =E2=80=98g_simple_async_result_ne=
w=E2=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declaratio=
ns]
     result =3D g_simple_async_result_new (G_OBJECT (self),
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-sim-mbim.c: In function =E2=80=98load_operator_name=E2=80=99:
mm-sim-mbim.c:325:5: warning: =E2=80=98g_simple_async_result_new=E2=80=99 i=
s deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
     result =3D g_simple_async_result_new (G_OBJECT (self), callback, user_=
data, load_operator_name);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem-qmi.c:7987:9: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_op_res_gboolean (result, TRUE);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c:7988:9: warning: =E2=80=98g_simple_async_result_co=
mplete_in_idle=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_complete_in_idle (result);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:106:21: note: declared here
 void                g_simple_async_result_complete_in_idle (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-sim-mbim.c: In function =E2=80=98send_pin_finish=E2=80=99:
mm-sim-mbim.c:345:5: warning: =E2=80=98g_simple_async_result_propagate_erro=
r=E2=80=99 is deprecated [-Wdeprecated-declaratio@ build-log 30033 4096
ns]
     return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (=
res), error);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:119:21: note: declared here
 gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem-qmi.c:8001:15: warning: assignment from incompatible poi=
nter type [-Wincompatible-pointer-types]
     ctx->self =3D g_object_ref (self);
               ^
mm-broadband-modem-qmi.c:8002:17: warning: assignment from incompatible poi=
nter type [-Wincompatible-pointer-types]
     ctx->client =3D g_object_ref (client);
                 ^
mm-sim-mbim.c: In function =E2=80=98pin_set_enter_ready=E2=80=99:
mm-sim-mbim.c:380:9: warning: =E2=80=98g_simple_async_result_take_error=E2=
=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (simple, error);
         ^
mm-broadband-modem-qmi.c:8032:5: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-sim-mbim.c:382:9: warning: =E2=80=98g_simple_async_result_set_op_res_gbo=
olean=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_op_res_gboolean (simple, TRUE);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-sim-mbim.c:383:5: warning: =E2=80=98g_simple_async_result_complete=E2=80=
=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete (simple);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:104:21: note: declared here
 void                g_simple_async_result_complete         (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-sim-mbim.c: In function =E2=80=98send_pin=E2=80=99:
mm-sim-mbim.c:403:5: warning: =E2=80=98g_simple_async_result_new=E2=80=99 @=
 build-log 30033 4096
is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
     result =3D g_simple_async_result_new (G_OBJECT (self), callback, user_=
data, send_pin);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98enable_location_gathering_co=
ntext_complete_and_free=E2=80=99:
mm-broadband-modem-qmi.c:8074:5: warning: =E2=80=98g_simple_async_result_co=
mplete=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete (ctx->result);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:104:21: note: declared here
 void                g_simple_async_result_complete         (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-sim-mbim.c:413:9: warning: =E2=80=98g_simple_async_result_take_error=E2=
=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (result, error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-sim-mbim.c:414:9: warning: =E2=80=98g_simple_async_result_complete_in_id=
le=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_complete_in_idle (result);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:106:21: note: declared here
 void                g_simple_async_result_complete_in_idle (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98enable_location_gathering_fi=
nish=E2=80=99:
mm-broadband-modem-qmi.c:8087:5: warning: =E2=80=98g_simple_async_result_pr=
opagate_error=E2=80=99 is deprecated [-Wdeprecated-declarations]
     return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (=
res), error);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:119:21: note: declared here
 gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98ser_location_ready=E2=80=99:
mm-broadband-modem-qmi.c:81@ build-log 30033 1705
01:9: warning: =E2=80=98g_simple_async_result_take_error=E2=80=99 is deprec=
ated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (ctx->result, error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem-qmi.c:8108:9: warning: =E2=80=98g_simple_async_result_ta=
ke_error=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_take_error (ctx->result, error);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:116:21: note: declared here
 void                g_simple_async_result_take_error       (GSimpleAsyncRe=
sult      *simple,
                     ^
| 'build' phase=EF=BF=BD=EF=BF=BD@ build-log 30033 4096
=EF=BF=BD=EF=BF=BDg_simple_async_result_complete=E2=80=99 is deprecated [-W=
deprecated-declarations]
     g_simple_async_result_complete (simple);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:104:21: note: declared here
 void                g_simple_async_result_complete         (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98oma_cancel_session=E2=80=99:
mm-broadband-modem-qmi.c:8696:9: warning: =E2=80=98g_simple_async_result_ne=
w=E2=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declaratio=
ns]
         g_simple_async_result_new (G_OBJECT (self),
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98common_oma_setup_cleanup_uns=
olicited_events_finish=E2=80=99:
mm-broadband-modem-qmi.c:8757:5: warning: =E2=80=98g_simple_async_result_pr=
opagate_error=E2=80=99 is deprecated [-Wdeprecated-declarations]
     return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (=
res), error);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:119:21: note: declared here
 gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98common_setup_cleanup_oma_uns=
olicited_events=E2=80=99:
mm-broadband-modem-qmi.c:8774:5: warning: =E2=80=98g_simple_async_result_ne=
w=E2=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declaratio=
ns]
     result =3D g_simple_async_result_new (G_OBJECT (self),
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem-qmi.c:8782:9: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_op_res_gboolean (result, TRUE);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
   @ build-log 30033 4096
              from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c:8783:9: warning: =E2=80=98g_simple_async_result_co=
mplete_in_idle=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_complete_in_idle (result);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:106:21: note: declared here
 void                g_simple_async_result_complete_in_idle (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem-qmi.c:8805:5: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gboolean (result, TRUE);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c:8806:5: warning: =E2=80=98g_simple_async_result_co=
mplete_in_idle=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete_in_idle (result);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:106:21: note: declared here
 void                g_simple_async_result_complete_in_idle (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98enable_oma_unsolicited_event=
s_context_complete_and_free=E2=80=99:
mm-broadband-modem-qmi.c:8845:5: warning: =E2=80=98g_simple_async_result_co=
mplete=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete (ctx->result);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:104:21: note: declared here
 void                g_simple_async_result_complete         (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98common_oma_enable_disa@ buil=
d-log 30033 4096
ble_unsolicited_events_finish=E2=80=99:
mm-broadband-modem-qmi.c:8857:5: warning: =E2=80=98g_simple_async_result_pr=
opagate_error=E2=80=99 is deprecated [-Wdeprecated-declarations]
     return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (=
res), error);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:119:21: note: declared here
 gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncRe=
sult      *simple,
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98ser_oma_indicator_ready=E2=
=80=99:
mm-broadband-modem-qmi.c:8882:5: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98common_enable_disable_oma_un=
solicited_events=E2=80=99:
mm-broadband-modem-qmi.c:8902:5: warning: =E2=80=98g_simple_async_result_ne=
w=E2=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declaratio=
ns]
     result =3D g_simple_async_result_new (G_OBJECT (self),
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem-qmi.c:8910:9: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_op_res_gboolean (result, TRUE);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c:8911:9: warning: =E2=80=98g_simple_async_result_co=
mplete_in_idle=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_complete_in_idle (result);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.@ build-log =
30033 4096
h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:106:21: note: declared here
 void                g_simple_async_result_complete_in_idle (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem-qmi.c:8918:17: warning: assignment from incompatible poi=
nter type [-Wincompatible-pointer-types]
     ctx->client =3D g_object_ref (client);
                 ^
mm-broadband-modem-qmi.c: In function =E2=80=98firmware_check_support_conte=
xt_complete_and_free=E2=80=99:
mm-broadband-modem-qmi.c:8993:5: warning: =E2=80=98g_simple_async_result_co=
mplete=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete (ctx->result);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:104:21: note: declared here
 void                g_simple_async_result_complete         (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98firmware_check_support_finis=
h=E2=80=99:
mm-broadband-modem-qmi.c:9007:5: warning: =E2=80=98g_simple_async_result_ge=
t_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
     return g_simple_async_result_get_op_res_gboolean (G_SIMPLE_ASYNC_RESUL=
T (res));
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:91:21: note: declared here
 gboolean            g_simple_async_result_get_op_res_gboolean (GSimpleAsyn=
cResult      *simple);
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98get_next_image_info=E2=80=99:
mm-broadband-modem-qmi.c:9121:13: warning: =E2=80=98g_simple_async_result_s=
et_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
             g_simple_async_result_set_op_res_gboolean (ctx->result, FALSE);
             ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c:9123:13: warning: =E2=80=98g_simple_async_result_s=
et_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
             g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
             ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
      @ build-log 30033 4096
           from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98list_stored_images_ready=E2=
=80=99:
mm-broadband-modem-qmi.c:9163:9: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_op_res_gboolean (ctx->result, FALSE);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c:9208:9: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_op_res_gboolean (ctx->result, FALSE);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c:9256:9: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gboolean=E2=80=99 is deprecated [-Wdeprecated-declarations]
         g_simple_async_result_set_op_res_gboolean (ctx->result, FALSE);
         ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:88:21: note: declared here
 void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98firmware_check_support=E2=80=
=99:
mm-broadband-modem-qmi.c:9283:15: warning: assignment from incompatible poi=
nter type [-Wincompatible-pointer-types]
     ctx->self =3D g_object_ref (self);
               ^
mm-broadband-modem-qmi.c:9284:17: warning: assignment from incompatible poi=
nter type [-Wincompatible-pointer-types]
     ctx->client =3D g_object_ref (client);
                 ^
mm-broadband-modem-qmi.c:9285:5: warning: =E2=80=98g_simple_async_result_ne=
w=E2=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declaratio=
ns]
     ctx->result =3D g_simple_async_result_new (G_OBJECT (self),
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-@ build-log 30033 4096
broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98firmware_load_list_finish=E2=
=80=99:
mm-broadband-modem-qmi.c:9307:5: warning: =E2=80=98g_simple_async_result_ge=
t_op_res_gpointer=E2=80=99 is deprecated [-Wdeprecated-declarations]
     return (GList *)g_simple_async_result_get_op_res_gpointer (G_SIMPLE_AS=
YNC_RESULT (res));
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:79:21: note: declared here
 gpointer            g_simple_async_result_get_op_res_gpointer (GSimpleAsyn=
cResult      *simple);
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98firmware_load_list=E2=80=99:
mm-broadband-modem-qmi.c:9319:5: warning: =E2=80=98g_simple_async_result_ne=
w=E2=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declaratio=
ns]
     result =3D g_simple_async_result_new (G_OBJECT (self),
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem-qmi.c:9328:5: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gpointer=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gpointer (result, dup, NULL);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:75:21: note: declared here
 void                g_simple_async_result_set_op_res_gpointer (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c:9329:5: warning: =E2=80=98g_simple_async_result_co=
mplete_in_idle=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete_in_idle (result);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:106:21: note: declared here
 void                g_simple_async_result_complete_in_idle (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98firmware_load_current_finish=
=E2=80=99:
mm-broadband-modem-qmi.c:9341:5: warning: =E2=80=98g_simple_async_result_ge=
t_op_res_gpointer=E2=80=99 i@ build-log 30033 4096
s deprecated [-Wdeprecated-declarations]
     return (MMFirmwareProperties *)g_simple_async_result_get_op_res_gpoint=
er (G_SIMPLE_ASYNC_RESULT (res));
     ^
  CC       ModemManager-mm-bearer-mbim.o
mm-bearer-mbim.c: In function =E2=80=98peek_ports=E2=80=99:
mm-bearer-mbim.c:73:13: warning: =E2=80=98g_simple_async_report_error_in_id=
le=E2=80=99 is deprecated: Use 'g_task_report_error' instead [-Wdeprecated-=
declarations]
             g_simple_async_report_error_in_idle (G_OBJECT (self),
             ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:79:21: note: declared here
 gpointer            g_simple_async_result_get_op_res_gpointer (GSimpleAsyn=
cResult      *simple);
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98firmware_load_current=E2=80=
=99:
mm-broadband-modem-qmi.c:9352:5: warning: =E2=80=98g_simple_async_result_ne=
w=E2=80=99 is deprecated: Use 'g_task_new' instead [-Wdeprecated-declaratio=
ns]
     result =3D g_simple_async_result_new (G_OBJECT (self),
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:51:21: note: declared here
 GSimpleAsyncResult *g_simple_async_result_new              (GObject       =
          *source_object,
                     ^
mm-broadband-modem-qmi.c:9358:5: warning: =E2=80=98g_simple_async_result_se=
t_op_res_gpointer=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_set_op_res_gpointer (
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:75:21: note: declared here
 void                g_simple_async_result_set_op_res_gpointer (GSimpleAsyn=
cResult      *simple,
                     ^
mm-broadband-modem-qmi.c:9362:5: warning: =E2=80=98g_simple_async_result_co=
mplete_in_idle=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete_in_idle (result);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:106:21: note: declared here
 void                g_simple_async_result_complete_in_idle (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98firmware_change_current_cont=
ext_complete_and_free=E2=80=99:
mm-broadband-modem-qmi.c:9379:5: warning: =E2=80=98g_simple_async_result_co=
mplete_in_idle=E2=80=99 is deprecated [-Wdeprecated-declarations]
     g_simple_async_result_complete_in_idle (ctx->result@ build-log 30033 2=
129
);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:106:21: note: declared here
 void                g_simple_async_result_complete_in_idle (GSimpleAsyncRe=
sult      *simple);
                     ^
mm-broadband-modem-qmi.c: In function =E2=80=98firmware_change_current_fini=
sh=E2=80=99:
mm-broadband-modem-qmi.c:9393:5: warning: =E2=80=98g_simple_async_result_pr=
opagate_error=E2=80=99 is deprecated [-Wdeprecated-declarations]
     return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (=
res), error);
     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-base-modem.h:27,
                 from mm-broadband-modem.h:27,
                 from mm-broadband-modem-qmi.h:19,
                 from mm-broadband-modem-qmi.c:24:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:119:21: note: declared here
 gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncRe=
sult      *simple,
                     ^
In file included from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56=
.3/include/glib-2.0/gio/gio.h:117:0,
                 from ../libmm-glib/generated/mm-gdbus-manager.h:11,
                 from ../libmm-glib/libmm-glib.h:77,
                 from mm-bearer-mbim.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gi=
o/gsimpleasyncresult.h:140:6: note: declared here
 void g_simple_async_report_error_in_idle  (GObject            *object,
      ^
building /gnu/store/chimxmk6w5i4slhlzfb7iqdfc0qng37g-network-manager-1.8.4.=
drv...
building /gnu/store/sr67b6i666xyl9ch6r812m1kps6pd0mj-network-manager-applet=
-1.8.4.drv...
building /gnu/store/pmcv8mr5a2c69ab0g6sfh9aq4w4c0w55-nano-4.1.tar.xz.drv...
downloading from https://ftpmirror.gnu.org/gnu/nano/nano-4.1.tar.xz...
building /gnu/store/d3d7djjvmis2gj9s3w4ikzapw94fr8hd-nano-4.1.drv...
building /gnu/store/79n246z4ijwmnsgn4w075irbhc1pgl92-guix-0.16.0-13.b8b1e4d=
-checkout.drv...
building /gnu/store/dg7jimn8nfwhg8hlpgmpmhzdv32yyk8g-http-parser-2.9.2-chec=
kout.drv...
building /gnu/store/d1pgfdvh6l6znqmfkp8sy104gczh62b8-libgit2-0.28.1-checkou=
t.drv...
building /gnu/store/2q2l0kvwfqnq9ggak495ihbzcyh1jfv8-http-parser-2.9.2.drv.=
..
building /gnu/store/79kqyg6njag5gbycj72i5bfa3irpiafr-libgit2-0.28.tar.xz.dr=
v...
/
--8<---------------cut here---------------end--------------->8---




Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.505 (Entity 5.505)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: Mark H Weaver <mhw@HIDDEN>
Subject: bug#35350: Acknowledgement (Some compile output still leaks
 through with --verbosity=1)
Message-ID: <handler.35350.B.15558048142789.ack <at> debbugs.gnu.org>
References: <87mukkfd2j.fsf@HIDDEN>
X-Gnu-PR-Message: ack 35350
X-Gnu-PR-Package: guix
Reply-To: 35350 <at> debbugs.gnu.org
Date: Sun, 21 Apr 2019 00:01:02 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 bug-guix@HIDDEN

If you wish to submit further information on this problem, please
send it to 35350 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
35350: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D35350
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems


Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Sun, 21 Apr 2019 20:16:01 +0000
Resent-Message-ID: <handler.35350.B35350.155587773823258 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Mark H Weaver <mhw@HIDDEN>
Cc: 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.155587773823258
          (code B ref 35350); Sun, 21 Apr 2019 20:16:01 +0000
Received: (at 35350) by debbugs.gnu.org; 21 Apr 2019 20:15:38 +0000
Received: from localhost ([127.0.0.1]:49138 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hIIsE-000634-8m
	for submit <at> debbugs.gnu.org; Sun, 21 Apr 2019 16:15:38 -0400
Received: from eggs.gnu.org ([209.51.188.92]:45838)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1hIIsC-00062s-Ri
 for 35350 <at> debbugs.gnu.org; Sun, 21 Apr 2019 16:15:37 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:56075)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1hIIs7-0004Xu-OC; Sun, 21 Apr 2019 16:15:31 -0400
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=38654 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1hIIs7-0004oz-4M; Sun, 21 Apr 2019 16:15:31 -0400
From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 2 =?UTF-8?Q?Flor=C3=A9al?= an 227 de la =?UTF-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Sun, 21 Apr 2019 22:15:29 +0200
In-Reply-To: <87mukkfd2j.fsf@HIDDEN> (Mark H. Weaver's message of "Sat, 20
 Apr 2019 19:53:29 -0400")
Message-ID: <87r29v2jz2.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi Mark,

Mark H Weaver <mhw@HIDDEN> skribis:

> Sometimes when compiling a package with --verbosity=3D1, some parts of the
> compile output leak through.  For example, see the transcript below.

Weird.  What=E2=80=99s the value of --max-jobs?  Is offloading enabled?

Presumably both the client and daemon are recent, right?

Thanks,
Ludo=E2=80=99.




Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Mark H Weaver <mhw@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Mon, 22 Apr 2019 23:55:01 +0000
Resent-Message-ID: <handler.35350.B35350.155597725723599 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Cc: 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.155597725723599
          (code B ref 35350); Mon, 22 Apr 2019 23:55:01 +0000
Received: (at 35350) by debbugs.gnu.org; 22 Apr 2019 23:54:17 +0000
Received: from localhost ([127.0.0.1]:51922 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hIilN-00068Y-CL
	for submit <at> debbugs.gnu.org; Mon, 22 Apr 2019 19:54:17 -0400
Received: from world.peace.net ([64.112.178.59]:34648)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mhw@HIDDEN>) id 1hIilK-00068K-PQ
 for 35350 <at> debbugs.gnu.org; Mon, 22 Apr 2019 19:54:15 -0400
Received: from mhw by world.peace.net with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <mhw@HIDDEN>)
 id 1hIilE-0003AK-Rr; Mon, 22 Apr 2019 19:54:08 -0400
From: Mark H Weaver <mhw@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN> <87r29v2jz2.fsf@HIDDEN>
Date: Mon, 22 Apr 2019 19:52:28 -0400
In-Reply-To: <87r29v2jz2.fsf@HIDDEN> ("Ludovic
 \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\=
 \=\?utf-8\?Q\?s\?\= message of "Sun, 21 Apr 2019 22:15:29 +0200")
Message-ID: <87ftq9silk.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Ludovic,

Ludovic Court=C3=A8s <ludo@HIDDEN> writes:

> Mark H Weaver <mhw@HIDDEN> skribis:
>
>> Sometimes when compiling a package with --verbosity=3D1, some parts of t=
he
>> compile output leak through.  For example, see the transcript below.
>
> Weird.

FWIW, a few observations, possibly relevant:

(1) Each chunk of leaked output begins with 1 or 2 Unicode Replacement
    characters (U+FFFD).  In the transcript I provided, the first leak
    began with 1 replacement char, and all later leaks began with 2.

(2) The replacement characters are immediately followed by
    "@ build-log 30033 4096\n", and that string is also sprinkled
    throughout the leaked output, with approximately ~4060-4070
    characters of leaked output between each occurrence of
    "@ build-log 30033 4096\n".

> What=E2=80=99s the value of --max-jobs?

I'm not sure, how do I find out?  I don't specify it in my OS
configuration, and it's not on the command line of 'guix-daemon'.
Here's the relevant portion of my OS config:

       (modify-services %base-services
         (guix-service-type config =3D>
                            (guix-configuration
                              (inherit config)
                              (use-substitutes? #f)
                              (authorized-keys '())
                              (substitute-urls '())
                              (extra-options '("--gc-keep-derivations=3Dyes"
                                               "--gc-keep-outputs=3Dyes")))=
))

I guess it's probably 2, because that's how many cores are in this
machine (Thinkpad X200), and 2 is also the number of GCC processes that
I typically see when building packages on this machine.

> Is offloading enabled?

No.  In addition to the above configuration, my /etc/guix/acl also
contains simply "(acl)".

> Presumably both the client and daemon are recent, right?

Yes, this machine is rarely more than a week out-of-date w.r.t. our
'master' branch.

      Thanks,
        Mark




Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Mark H Weaver <mhw@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Tue, 23 Apr 2019 08:47:05 +0000
Resent-Message-ID: <handler.35350.B35350.155600922318072 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Cc: 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.155600922318072
          (code B ref 35350); Tue, 23 Apr 2019 08:47:05 +0000
Received: (at 35350) by debbugs.gnu.org; 23 Apr 2019 08:47:03 +0000
Received: from localhost ([127.0.0.1]:52307 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hIr4w-0004hK-Ou
	for submit <at> debbugs.gnu.org; Tue, 23 Apr 2019 04:47:03 -0400
Received: from world.peace.net ([64.112.178.59]:35364)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mhw@HIDDEN>) id 1hIr4t-0004gp-9M
 for 35350 <at> debbugs.gnu.org; Tue, 23 Apr 2019 04:47:01 -0400
Received: from mhw by world.peace.net with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <mhw@HIDDEN>)
 id 1hIr4n-00077G-LI; Tue, 23 Apr 2019 04:46:53 -0400
From: Mark H Weaver <mhw@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN> <87r29v2jz2.fsf@HIDDEN>
 <87ftq9silk.fsf@HIDDEN>
Date: Tue, 23 Apr 2019 04:45:13 -0400
In-Reply-To: <87ftq9silk.fsf@HIDDEN> (Mark H. Weaver's message of "Mon, 22
 Apr 2019 19:52:28 -0400")
Message-ID: <877eblw1mz.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

> What=E2=80=99s the value of --max-jobs?

max-jobs is 1.  Please disregard my previous response.

     Thanks,
       Mark




Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Tue, 23 Apr 2019 10:13:02 +0000
Resent-Message-ID: <handler.35350.B35350.15560143691313 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Mark H Weaver <mhw@HIDDEN>
Cc: 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.15560143691313
          (code B ref 35350); Tue, 23 Apr 2019 10:13:02 +0000
Received: (at 35350) by debbugs.gnu.org; 23 Apr 2019 10:12:49 +0000
Received: from localhost ([127.0.0.1]:52470 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hIsPx-0000L7-53
	for submit <at> debbugs.gnu.org; Tue, 23 Apr 2019 06:12:49 -0400
Received: from eggs.gnu.org ([209.51.188.92]:56649)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1hIsPu-0000Ks-Mf
 for 35350 <at> debbugs.gnu.org; Tue, 23 Apr 2019 06:12:48 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:58403)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1hIsPp-00006A-8v; Tue, 23 Apr 2019 06:12:41 -0400
Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=50668 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1hIsPm-0001Ed-6m; Tue, 23 Apr 2019 06:12:39 -0400
From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN> <87r29v2jz2.fsf@HIDDEN>
 <87ftq9silk.fsf@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 4 =?UTF-8?Q?Flor=C3=A9al?= an 227 de la =?UTF-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Tue, 23 Apr 2019 12:12:34 +0200
In-Reply-To: <87ftq9silk.fsf@HIDDEN> (Mark H. Weaver's message of "Mon, 22
 Apr 2019 19:52:28 -0400")
Message-ID: <87imv5jai5.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hi Mark,

Mark H Weaver <mhw@HIDDEN> skribis:

> Ludovic Court=C3=A8s <ludo@HIDDEN> writes:
>
>> Mark H Weaver <mhw@HIDDEN> skribis:
>>
>>> Sometimes when compiling a package with --verbosity=3D1, some parts of =
the
>>> compile output leak through.  For example, see the transcript below.
>>
>> Weird.
>
> FWIW, a few observations, possibly relevant:
>
> (1) Each chunk of leaked output begins with 1 or 2 Unicode Replacement
>     characters (U+FFFD).  In the transcript I provided, the first leak
>     began with 1 replacement char, and all later leaks began with 2.
>
> (2) The replacement characters are immediately followed by
>     "@ build-log 30033 4096\n", and that string is also sprinkled
>     throughout the leaked output, with approximately ~4060-4070
>     characters of leaked output between each occurrence of
>     "@ build-log 30033 4096\n".

Indeed.  I managed to reproduce it while building modem-manager.  I
strace=E2=80=99d =E2=80=98guix build=E2=80=99 with an additional =E2=80=98p=
k=E2=80=99=C2=B9 to see what happens, and
here=E2=80=99s what leads to the wrong =E2=80=9Cwrite(2, "=EF=BF=BD@ build-=
log=E2=80=A6")=E2=80=9D call:

--8<---------------cut here---------------start------------->8---
read(13, "gmlo\0\0\0\0", 8)             =3D 8
read(13, "\27\20\0\0\0\0\0\0", 8)       =3D 8
read(13, "@ build-log 22090 4096\n [=E2=80=A6] warning: \342\200", 4119) =
=3D 4119
read(13, "\0", 1)                       =3D 1
write(1, "\n", 1)                       =3D 1
write(1, ";;; (write 1008 <> #f 0)\n", 25) =3D 25
write(1, "\n", 1)                       =3D 1
write(1, ";;; (write 985 <> 22090 4096)\n", 30) =3D 30
write(1, "\n", 1)                       =3D 1
write(1, ";;; (write 1008 <> 22090 3111)\n", 31) =3D 31
write(1, "\n", 1)                       =3D 1
write(1, ";;; (write 1008 <> 22090 2103)\n", 31) =3D 31
write(1, "\n", 1)                       =3D 1
write(1, ";;; (write 1008 <> 22090 1095)\n", 31) =3D 31
write(1, "\n", 1)                       =3D 1
write(1, ";;; (write 88 <> 22090 87)\n", 27) =3D 27
write(2, "\r\33[K\\ 'build' phase", 19) =3D 19
[=E2=80=A6]
write(2, "\r\33[K\\ 'build' phase", 19) =3D 19
write(1, "\n", 1)                       =3D 1
write(1, ";;; (write 1 <> #f 0)\n", 22) =3D 22
read(13, "gmlo\0\0\0\0", 8)             =3D 8
read(13, "\27\20\0\0\0\0\0\0", 8)       =3D 8
read(13, "@ build-log 22090 4096\n\230g_simple_async_result_take_error\342\=
200\231 is deprecated[=E2=80=A6]", 4119) =3D 4119
read(13, "\0", 1)                       =3D 1
write(1, "\n", 1)                       =3D 1
write(1, ";;; (write 1008 <> #f 0)\n", 25) =3D 25
write(2, "\357\277\275@ build-log 22090 4096\n", 26) =3D 26
--8<---------------cut here---------------end--------------->8---

The third read(2) call here ends on a partial UTF-8 sequence for LEFT
SINGLE QUOTATION MARK (we get the first two bytes of a three byte
sequence.)

What happens is that =E2=80=98process-stderr=E2=80=99 in (guix store) gets =
that byte
string from the daemon, passes it through =E2=80=98read-maybe-utf8-string=
=E2=80=99,
which replaces the last two bytes with REPLACEMENT CHARACTER, which is
itself a 3-byte sequence.

Thus, we have this extra byte that=E2=80=99s being inserted.  That confuses=
 the
whole machinery since the build log was announced as being 4096-byte
long, and it=E2=80=99s now 4097-byte long.

Internally, =E2=80=98build-event-output-port=E2=80=99 keeps the last byte o=
f the
REPLACEMENT CHARACTER sequence in the =E2=80=98%fragments=E2=80=99 buffer.
Consequently, the =E2=80=9C@ build-log=E2=80=9D string that comes next does=
n=E2=80=99t start on
a newline, and thus it is considered build output.  Since the first byte
does not constitute a valid UTF-8 sequence, another REPLACEMENT
CHARACTER is inserted there when it gets printed.


So =E2=80=98build-event-output-port=E2=80=99 is working as expected.  The p=
roblem is the
first layer of UTF-8 decoding that happens in =E2=80=98process-stderr=E2=80=
=99, in the
=E2=80=98%stderr-next=E2=80=99 case.  We would need to disable it, but only=
 if the build
output port is =E2=80=98build-event-output-port=E2=80=99 (i.e., it=E2=80=99=
s capable of
interpreting =E2=80=9Cmultiplexed build output=E2=80=9D correctly.)

Thanks,
Ludo=E2=80=99.

=C2=B9 pk:


--=-=-=
Content-Type: text/x-patch
Content-Disposition: inline

diff --git a/guix/status.scm b/guix/status.scm
index cbea4151f2..4dcbcb0c1f 100644
--- a/guix/status.scm
+++ b/guix/status.scm
@@ -717,6 +717,7 @@ The second return value is a thunk to retrieve the current state."
       (pointer->bytevector ptr count)))
 
   (define (write! bv offset count)
+    (pk 'write count '<> %build-output-pid %build-output-left)
     (if %build-output-pid
         (let ((keep (min count %build-output-left)))
           (set! %build-output

--=-=-=--




Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Mark H Weaver <mhw@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Fri, 26 Apr 2019 19:12:02 +0000
Resent-Message-ID: <handler.35350.B35350.155630587425146 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Cc: 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.155630587425146
          (code B ref 35350); Fri, 26 Apr 2019 19:12:02 +0000
Received: (at 35350) by debbugs.gnu.org; 26 Apr 2019 19:11:14 +0000
Received: from localhost ([127.0.0.1]:33586 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hK6Fd-0006XV-CV
	for submit <at> debbugs.gnu.org; Fri, 26 Apr 2019 15:11:13 -0400
Received: from world.peace.net ([64.112.178.59]:48374)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mhw@HIDDEN>) id 1hK6Fb-0006XB-BS
 for 35350 <at> debbugs.gnu.org; Fri, 26 Apr 2019 15:11:12 -0400
Received: from mhw by world.peace.net with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <mhw@HIDDEN>)
 id 1hK6FU-0000cq-W1; Fri, 26 Apr 2019 15:11:05 -0400
From: Mark H Weaver <mhw@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN> <87r29v2jz2.fsf@HIDDEN>
 <87ftq9silk.fsf@HIDDEN> <87imv5jai5.fsf@HIDDEN>
Date: Fri, 26 Apr 2019 15:09:24 -0400
In-Reply-To: <87imv5jai5.fsf@HIDDEN> ("Ludovic
 \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\=
 \=\?utf-8\?Q\?s\?\= message of "Tue, 23 Apr 2019 12:12:34 +0200")
Message-ID: <87k1fgh9c0.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hi Ludovic,

Thanks for investigating this.

Ludovic Court=C3=A8s <ludo@HIDDEN> writes:

> The third read(2) call here ends on a partial UTF-8 sequence for LEFT
> SINGLE QUOTATION MARK (we get the first two bytes of a three byte
> sequence.)
>
> What happens is that =E2=80=98process-stderr=E2=80=99 in (guix store) get=
s that byte
> string from the daemon, passes it through =E2=80=98read-maybe-utf8-string=
=E2=80=99,
> which replaces the last two bytes with REPLACEMENT CHARACTER, which is
> itself a 3-byte sequence.

It seems to me that what's needed here is to save the UTF-8 decoder
state between calls to 'process-stderr'.  Coincidentally, I also needed
something like this a week ago, when I tried implementing R6RS custom
textual input/output ports on top of R6RS custom binary input/output
ports.

To meet these needs, I've implemented a fairly efficient, purely
functional UTF-8 decoder in Scheme that accepts a decoder state and an
arbitrary range from a bytevector, and returns a new decoder state.
There's a macro that allows arbitrary actions to be performed when a
code point (or maximal subpart in the case of errors) is found.

This macro is then used to implement a decoder (utf8->string!) that
writes into an arbitrary range of an existing string.  Of course, it's
not purely functional, but it avoids heap allocation when compiled with
Guile.  On my Thinkpad X200, it can process around 10 megabytes per
second.

The state is represented as an exact integer between 0 and #xF48FBF
inclusive, which are simply the bytes that have been seen so far in the
current code sequence, in big-endian order, or 0 for the start state.
For example, #xF48FBF represents the state where the bytes (F4 8F BF)
have been read.  The state is always either 0 or a proper prefix of a
valid UTF-8 byte sequence.

I also plan to implement an optimized C version of 'utf8->string!' and
add it to Guile, in order to implement fast custom textual ports.  The
precise name and API is not yet finalized.  At present, 'utf8->string!'
always replaces maximal subparts with the substitution character in case
of errors, but I intend to eventually support other error modes as well.

What would you think about using this code to replace the uses of
'read-maybe-utf8-string', and storing the UTF-8 decoder state in the
<store-connection> object?  Would we need to store multiple states in
case of (max-jobs > 1)?

      Regards
        Mark


--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline; filename=utf8-decoder.scm
Content-Transfer-Encoding: quoted-printable
Content-Description: UTF-8 decoder implementation

;;; Copyright =C2=A9 2019 Mark H Weaver <mhw@HIDDEN>
;;;
;;; 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, either version 3 of the License, or
;;; (at your option) any later version.
;;;
;;; 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.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

(use-modules (rnrs bytevectors)
             ;; the following modules are only needed for the test.
             ;;(srfi srfi-1)
             ;;(ice-9 iconv)
             )

;; Well-formed UTF-8 sequences
;; =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
;; 00..7F
;; C2..DF   80..BF
;; E0      *A0..BF   80..BF
;; E1..EC   80..BF   80..BF
;; ED       80..9F*  80..BF
;; EE..EF   80..BF   80..BF
;; F0      *90..BF   80..BF   80..BF
;; F1..F3   80..BF   80..BF   80..BF
;; F4       80..8F*  80..BF   80..BF

;; UTF-8 Decoder states
;; =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
;;  0                 start state
;;  C2     .. DF      got 1/2 bytes
;;  E0     .. EF      got 1/3 bytes
;;  F0     .. F4      got 1/4 bytes
;;  E0A0   .. ED9F    got 2/3 bytes (range 1)
;;  EE80   .. EFBF    got 2/3 bytes (range 2)
;;  F090   .. F48F    got 2/4 bytes
;;  F09080 .. F48FBF  got 3/4 bytes

(define-syntax-rule (utf8-decode ((j init-expr) ...)
                                 (i continue)
                                 (output (code-point) e1 e1* ...)
                                 (error (maximal-subpart) e2 e2* ...)
                                 state-expr bv-expr start-expr end-expr)
  ;; The start state is 0.

  ;; When 'error' is called with arguments (state i j ...), 'state'
  ;; contains the bytes of the "maximal subpart of an ill-formed
  ;; subsequence" as defined in The Unicode Standard section 3.9,
  ;; i.e. the bytes which are being represented by this error report
  ;; and which are not being converted.  'i' is the bytevector index
  ;; immediately following this maximal subpart, i.e. the index where
  ;; decoding should resume.  'j ...' are the user-provided seeds.

  ;; the decoder returns the values: (new-state bv-pos j ...)
  (let ((bv   bv-expr)
        (end  end-expr))
    (define (output code-point i j ...)
      e1 e1* ...)

    (define (error maximal-subpart i j ...)
      e2 e2* ...)
=20=20=20=20
    (define (continue i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (cond ((<=3D byte #x7F)       (output byte (+ i 1) j ...))
                  ((<=3D #xC2 byte #xF4)  (got-1 byte (+ i 1) j ...))
                  (else                 (error byte (+ i 1) j ...))))
          (values 0 i j ...)))

    (define (got-1 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (cond ((not (<=3D #x80 byte #xBF))
                   (error state i j ...))
                  ((<=3D state #xDF)
                   (output (logior (ash (logand state #x1F) 6)
                                   (logand byte #x3F))
                           (+ i 1) j ...))
                  (else
                   (let ((state^ (logior (ash state 8) byte)))
                     (cond ((or (<=3D #xE0A0 state^ #xED9F)
                                (<=3D #xEE80 state^ #xEFBF))
                            (got-2/3 state^ (+ i 1) j ...))
                           ((<=3D #xF090 state^ #xF48F)
                            (got-2/4 state^ (+ i 1) j ...))
                           (else
                            (error state i j ...)))))))
          (values state i j ...)))

    (define (got-2/3 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (if (<=3D #x80 byte #xBF)
                (output (logior (ash (logand state #xF00) 4)
                                (ash (logand state #x3F) 6)
                                (logand byte #x3F))
                        (+ i 1) j ...)
                (error state i j ...)))
          (values state i j ...)))

    (define (got-2/4 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (if (<=3D #x80 byte #xBF)
                (got-3/4 (logior (ash state 8) byte) (+ i 1) j ...)
                (error state i j ...)))
          (values state i j ...)))

    (define (got-3/4 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (if (<=3D #x80 byte #xBF)
                (output (logior (ash (logand state #x70000) 2)
                                (ash (logand state #x3F00) 4)
                                (ash (logand state #x3F) 6)
                                (logand byte #x3F))
                        (+ i 1) j ...)
                (error state i j ...)))
          (values state i j ...)))

    (define (enter state i j ...)
      (cond ((zero? state)      (continue i j ...))
            ((<=3D state #xF4)    (got-1 state i j ...))
            ((<=3D state #xEFBF)  (got-2/3 state i j ...))
            ((<=3D state #xF48F)  (got-2/4 state i j ...))
            (else               (got-3/4 state i j ...))))

    (enter state-expr start-expr init-expr ...)))

;; Returns three values: (new-state source-pos target-pos)
(define (utf8->string! state source source-start source-end
                       target target-start target-end)
  (utf8-decode ((j target-start))
               (i continue)
               (output (code-point)
                       (string-set! target j (integer->char code-point))
                       (if (< (+ j 1) target-end)
                           (continue i (+ j 1))
                           (values 0 i (+ j 1))))
               (error (maximal-subpart)
                      (output #xFFFD i j)) ;TODO: support other error handl=
ers
               state source source-start source-end))

;; Another experimental primitive, slower than the ones above.
(define* (utf8-fold* out err seed state bv
                     #:optional (start 0) (end (bytevector-length bv)))
  (utf8-decode ((j seed))
               (i continue)
               (output (code-point)
                       (out code-point i j continue))
               (error (maximal-subpart)
                      (err maximal-subpart i j continue))
               state bv start end))

;; Another experimental primitive, slower than the ones above.
(define* (utf8-fold out err seed state bv
                    #:optional (start 0) (end (bytevector-length bv)))
  (utf8-fold* (lambda (code-point i j continue)
                (continue i (out code-point i j)))
              (lambda (maximal-subpart i j continue)
                (call-with-values (lambda () (err maximal-subpart i j))
                  (lambda (continue? j^)
                    (if continue?
                        (continue i j^)
                        (values 0 i j^)))))
              seed state bv start end))

;; A not-so-quick test of all valid characters.
;; TODO: Tests of strictness and error handling.
#;
(let ()
  (define ss (string-tabulate (lambda (i)
                                (if (< i #xD800)
                                    (integer->char i)
                                    (integer->char (+ i #x800))))
                              (- #x110000 #x800)))
  (define bv (string->utf8 ss))
  (define bv-len (bytevector-length bv))
  (define slen (* 2 (string-length ss)))
  (define s (make-string slen))
  (every (lambda (incr)
           (string-fill! s #\a)
           (call-with-values
               (lambda ()
                 (let loop ((state 0) (i 0) (j 0))
                   (if (< i bv-len)
                       (call-with-values
                           (lambda ()
                             (utf8->string! state bv i (min bv-len
                                                            (+ i incr))
                                            s j slen))
                         loop)
                       (values state i j))))
             (lambda (state i j)
               (and (=3D i bv-len)
                    (=3D j (string-length ss))
                    (string=3D? ss (substring s 0 j))))))
         (iota 5 1)))

--=-=-=--




Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Mark H Weaver <mhw@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Sat, 27 Apr 2019 00:48:01 +0000
Resent-Message-ID: <handler.35350.B35350.155632603419429 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Cc: 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.155632603419429
          (code B ref 35350); Sat, 27 Apr 2019 00:48:01 +0000
Received: (at 35350) by debbugs.gnu.org; 27 Apr 2019 00:47:14 +0000
Received: from localhost ([127.0.0.1]:33943 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hKBUo-00053I-0L
	for submit <at> debbugs.gnu.org; Fri, 26 Apr 2019 20:47:14 -0400
Received: from world.peace.net ([64.112.178.59]:48904)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mhw@HIDDEN>) id 1hKBUl-000535-9J
 for 35350 <at> debbugs.gnu.org; Fri, 26 Apr 2019 20:47:12 -0400
Received: from mhw by world.peace.net with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <mhw@HIDDEN>)
 id 1hKBUe-0003Bw-D1; Fri, 26 Apr 2019 20:47:04 -0400
From: Mark H Weaver <mhw@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN> <87r29v2jz2.fsf@HIDDEN>
 <87ftq9silk.fsf@HIDDEN> <87imv5jai5.fsf@HIDDEN>
 <87k1fgh9c0.fsf@HIDDEN>
Date: Fri, 26 Apr 2019 20:45:24 -0400
In-Reply-To: <87k1fgh9c0.fsf@HIDDEN> (Mark H. Weaver's message of "Fri, 26
 Apr 2019 15:09:24 -0400")
Message-ID: <87bm0sgts0.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

Here's an improved version of the code with doc strings.  It also
properly handles the case of (target-source >= target-end) in
'utf8->string!'.

       Mark



--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline; filename=utf8-decoder.scm
Content-Transfer-Encoding: quoted-printable
Content-Description: UTF-8 decoder, v2

;;; Copyright =C2=A9 2019 Mark H Weaver <mhw@HIDDEN>
;;;
;;; 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, either version 3 of the License, or
;;; (at your option) any later version.
;;;
;;; 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.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

(use-modules (rnrs bytevectors)
             ;; the following modules are only needed for the test.
             ;;(srfi srfi-1)
             ;;(ice-9 iconv)
             )

;; Well-formed UTF-8 sequences
;; =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
;; 00..7F
;; C2..DF   80..BF
;; E0      *A0..BF   80..BF
;; E1..EC   80..BF   80..BF
;; ED       80..9F*  80..BF
;; EE..EF   80..BF   80..BF
;; F0      *90..BF   80..BF   80..BF
;; F1..F3   80..BF   80..BF   80..BF
;; F4       80..8F*  80..BF   80..BF

;; UTF-8 Decoder states
;; =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
;;  0                 start state
;;  C2     .. DF      got 1/2 bytes
;;  E0     .. EF      got 1/3 bytes
;;  F0     .. F4      got 1/4 bytes
;;  E0A0   .. ED9F    got 2/3 bytes (range 1)
;;  EE80   .. EFBF    got 2/3 bytes (range 2)
;;  F090   .. F48F    got 2/4 bytes
;;  F09080 .. F48FBF  got 3/4 bytes

(define-syntax-rule (utf8-decode ((j init-expr) ...)
                                 (i continue)
                                 (output (code-point) e1 e1* ...)
                                 (error (maximal-subpart) e2 e2* ...)
                                 state-expr bv-expr start-expr end-expr)
  "Decode part of a UTF-8 byte stream in the bytevector BV-EXPR with
  indices in the interval from START-EXPR (inclusive) to END-EXPR
  (exclusive).  STATE-EXPR is the initial decoder state, which must
  be an incomplete prefix of a valid UTF-8 byte sequence.  The
  start state is 0.
=20=20
  When a valid UTF-8 byte sequence is found, the output expressions
  (E1 E1* ...) are evaluated, with the following bindings
  available in the lexical environment:
=20=20
    CODE-POINT  the decoded code point, as an exact integer.
    I        bytevector index immediately after the decoded sequence.
    J ...    the user-provided seeds.
    CONTINUE procedure with arguments (i j ...) to continue decoding.
    OUTPUT   procedure with arguments (code-point i j ...), whose
             body consists of (E1 E1* ...), provided by the user.
    ERROR    procedure with arguments (maximal-subpart i j ...), whose
             body consists of (E2 E2* ...), provided by the user.
=20=20
  If you wish for decoding to continue, (E1 E1* ...) should end by
  tail-calling (CONTINUE I J^ ...), where (J^ ...) are the new
  seeds.  Alternatively, if you wish to terminate decoding early,
  simply return one or more values, which will be returned to the
  caller of 'utf8-decode'.  Normally, (values 0 I J^ ...) should be
  returned.
=20=20
  In case of a decoding error, the expressions (E2 E2* ...) will be
  called with the same bindings listed above, except CODE-POINT is
  omitted, and MAXIMAL-SUBPART is bound to the 'maximal subpart of
  an ill-formed subsequence' as defined in section 3.9 of The
  Unicode Standard 12.0, i.e. the longest code unit subsequence
  starting at an inconvertible offset that is either (a) the
  initial subsequence of a well-formed code unit sequence, or (b) a
  subsequence of length one.  MAXIMAL-SUBPART is represented as an
  exact integer containing the bytes in big-endian order,
  e.g. #xF48FBF represents the bytes (F4 8F BF).
=20=20
  The bindings OUTPUT and ERROR are provided for convenience, in
  case the error expressions (E2 E2* ...) wish to call the
  user-provided output procedure (e.g. to output a substitution
  character), or the output expressions (E1 E1* ...) wish to call
  the user-provided error procedure.
=20=20
  If the provided bytes in BV-EXPR end with a non-empty but
  incomplete prefix of a well-formed UTF-8 byte sequence, then the
  following values are returned: (NEW-STATE BV-POS J ...).
=20=20
  When decoding finishes, every byte in the input (including in the
  initial STATE-EXPR) will have been reported in exactly one of the
  following ways:
=20=20
  (1) as part of a well-formed UTF-8 byte sequence, via the output
      expressions (E1 E1* ...), or
=20=20
  (2) as part of a 'maximal subpart of an ill-formed subsequence',
      via the error expressions (E2 E2* ...), or
=20=20
  (3) as part of the new state.
=20=20
  (4) in the unexamined indices of BV-EXPR starting with BV-POS."
  (let ((bv   bv-expr)
        (end  end-expr))
    (define (output code-point i j ...)
      e1 e1* ...)

    (define (error maximal-subpart i j ...)
      e2 e2* ...)
=20=20=20=20
    (define (continue i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (cond ((<=3D byte #x7F)       (output byte (+ i 1) j ...))
                  ((<=3D #xC2 byte #xF4)  (got-1 byte (+ i 1) j ...))
                  (else                 (error byte (+ i 1) j ...))))
          (values 0 i j ...)))

    (define (got-1 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (cond ((not (<=3D #x80 byte #xBF))
                   (error state i j ...))
                  ((<=3D state #xDF)
                   (output (logior (ash (logand state #x1F) 6)
                                   (logand byte #x3F))
                           (+ i 1) j ...))
                  (else
                   (let ((state^ (logior (ash state 8) byte)))
                     (cond ((or (<=3D #xE0A0 state^ #xED9F)
                                (<=3D #xEE80 state^ #xEFBF))
                            (got-2/3 state^ (+ i 1) j ...))
                           ((<=3D #xF090 state^ #xF48F)
                            (got-2/4 state^ (+ i 1) j ...))
                           (else
                            (error state i j ...)))))))
          (values state i j ...)))

    (define (got-2/3 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (if (<=3D #x80 byte #xBF)
                (output (logior (ash (logand state #xF00) 4)
                                (ash (logand state #x3F) 6)
                                (logand byte #x3F))
                        (+ i 1) j ...)
                (error state i j ...)))
          (values state i j ...)))

    (define (got-2/4 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (if (<=3D #x80 byte #xBF)
                (got-3/4 (logior (ash state 8) byte) (+ i 1) j ...)
                (error state i j ...)))
          (values state i j ...)))

    (define (got-3/4 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (if (<=3D #x80 byte #xBF)
                (output (logior (ash (logand state #x70000) 2)
                                (ash (logand state #x3F00) 4)
                                (ash (logand state #x3F) 6)
                                (logand byte #x3F))
                        (+ i 1) j ...)
                (error state i j ...)))
          (values state i j ...)))

    (define (enter state i j ...)
      (cond ((zero? state)      (continue i j ...))
            ((<=3D state #xF4)    (got-1 state i j ...))
            ((<=3D state #xEFBF)  (got-2/3 state i j ...))
            ((<=3D state #xF48F)  (got-2/4 state i j ...))
            (else               (got-3/4 state i j ...))))

    (enter state-expr start-expr init-expr ...)))

(define (utf8->string! state source source-start source-end
                       target target-start target-end)
  "Decode part of a UTF-8 byte stream from the bytevector SOURCE
starting at index SOURCE-START and up to (but not including) index
SOURCE-END, and writing into the string TARGET starting at index
TARGET-START and up to (but not including) index TARGET-END.  Returns
three values: NEW-STATE, SOURCE-POS, and TARGET-POS.  STATE is either
0 (the start state) or the value of NEW-STATE returned by the previous
call.  In case of errors, each 'maximal subpart of an ill-formed
subsequence', as defined in section 3.9 of The Unicode Standard 12.0,
is replaced with a Unicode replacement character (U+FFFD)."
  (if (< target-start target-end)
      (utf8-decode ((j target-start))
                   (i continue)
                   (output (code-point)
                           (string-set! target j (integer->char code-point))
                           (if (< (+ j 1) target-end)
                               (continue i (+ j 1))
                               (values 0 i (+ j 1))))
                   (error (maximal-subpart)
                          (output #xFFFD i j)) ;TODO: support other error h=
andlers
                   state source source-start source-end)
      (values state source-start target-start)))

;; Another experimental primitive, slower than the ones above.
(define* (utf8-fold* out err seed state bv
                     #:optional (start 0) (end (bytevector-length bv)))
  "Decode part of a UTF-8 byte stream from the bytevector SOURCE
starting at index SOURCE-START and up to (but not including) index
SOURCE-END.  Returns three values: NEW-STATE, SOURCE-POS, and
FINAL-SEED.  STATE is either 0 (the start state) or the value of
NEW-STATE returned by the previous call.  For each valid code point,
call (OUT CODE-POINT SOURCE-POS SEED K), which should either call (K
SOURCE-POS NEW-SEED) to continue decoding, or return three values (0
SOURCE-POS NEW-SEED) which will terminate decoding and immediately
exit.  In case of errors, call (ERR MAXIMAL-SUBPART SOURCE-POS SEED K)
where MAXIMAL-SUBPART is a 'maximal subpart of an ill-formed
subsequence', as defined in section 3.9 of The Unicode Standard 12.0.
Similarly, ERR should either call (K SOURCE-POS NEW-SEED) to continue
decoding, or return to exit immediately."
  (utf8-decode ((j seed))
               (i continue)
               (output (code-point)
                       (out code-point i j continue))
               (error (maximal-subpart)
                      (err maximal-subpart i j continue))
               state bv start end))

;; Another experimental primitive, slower than the ones above.
(define* (utf8-fold out err seed state bv
                    #:optional (start 0) (end (bytevector-length bv)))
  "Decode part of a UTF-8 byte stream from the bytevector SOURCE
starting at index SOURCE-START and up to (but not including) index
SOURCE-END.  Returns three values: NEW-STATE, SOURCE-POS, and
FINAL-SEED.  STATE is either 0 (the start state) or the value of
NEW-STATE returned by the previous call.  For each valid code point,
call (OUT CODE-POINT SOURCE-POS SEED), which should return a new SEED.
In case of errors, call (ERR MAXIMAL-SUBPART SOURCE-POS SEED) where
MAXIMAL-SUBPART is a 'maximal subpart of an ill-formed subsequence',
as defined in section 3.9 of The Unicode Standard 12.0.  ERR should
return two values: a boolean specifying whether to continue decoding,
and a new seed."
  (utf8-fold* (lambda (code-point i j continue)
                (continue i (out code-point i j)))
              (lambda (maximal-subpart i j continue)
                (call-with-values (lambda () (err maximal-subpart i j))
                  (lambda (continue? j^)
                    (if continue?
                        (continue i j^)
                        (values 0 i j^)))))
              seed state bv start end))

;; A not-so-quick test of all valid characters.
;; TODO: Tests of strictness and error handling.
#;
(let ()
  (define ss (string-tabulate (lambda (i)
                                (if (< i #xD800)
                                    (integer->char i)
                                    (integer->char (+ i #x800))))
                              (- #x110000 #x800)))
  (define bv (string->utf8 ss))
  (define bv-len (bytevector-length bv))
  (define slen (* 2 (string-length ss)))
  (define s (make-string slen))
  (every (lambda (incr)
           (string-fill! s #\a)
           (call-with-values
               (lambda ()
                 (let loop ((state 0) (i 0) (j 0))
                   (if (< i bv-len)
                       (call-with-values
                           (lambda ()
                             (utf8->string! state bv i (min bv-len
                                                            (+ i incr))
                                            s j slen))
                         loop)
                       (values state i j))))
             (lambda (state i j)
               (and (zero? state)
                    (=3D i bv-len)
                    (=3D j (string-length ss))
                    (string=3D? ss (substring s 0 j))))))
         (iota 5 1)))

--=-=-=--




Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Mark H Weaver <mhw@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Sat, 27 Apr 2019 07:59:02 +0000
Resent-Message-ID: <handler.35350.B35350.155635191827272 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Cc: 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.155635191827272
          (code B ref 35350); Sat, 27 Apr 2019 07:59:02 +0000
Received: (at 35350) by debbugs.gnu.org; 27 Apr 2019 07:58:38 +0000
Received: from localhost ([127.0.0.1]:34232 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hKIEH-00075n-Qu
	for submit <at> debbugs.gnu.org; Sat, 27 Apr 2019 03:58:38 -0400
Received: from world.peace.net ([64.112.178.59]:49416)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mhw@HIDDEN>) id 1hKIEF-00075Y-Gi
 for 35350 <at> debbugs.gnu.org; Sat, 27 Apr 2019 03:58:36 -0400
Received: from mhw by world.peace.net with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <mhw@HIDDEN>)
 id 1hKIE8-0005sn-FI; Sat, 27 Apr 2019 03:58:29 -0400
From: Mark H Weaver <mhw@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN> <87r29v2jz2.fsf@HIDDEN>
 <87ftq9silk.fsf@HIDDEN> <87imv5jai5.fsf@HIDDEN>
 <87k1fgh9c0.fsf@HIDDEN> <87bm0sgts0.fsf@HIDDEN>
Date: Sat, 27 Apr 2019 03:56:47 -0400
In-Reply-To: <87bm0sgts0.fsf@HIDDEN> (Mark H. Weaver's message of "Fri, 26
 Apr 2019 20:45:24 -0400")
Message-ID: <877ebfhodh.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

Here's version 3 with much more precise specifications in the
docstrings.  If I recall correctly, the code itself is identical to
version 2.

       Mark



--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline; filename=utf8-decoder.scm
Content-Transfer-Encoding: quoted-printable
Content-Description: UTF-8 decoder v3

;;; Copyright =C2=A9 2019 Mark H Weaver <mhw@HIDDEN>
;;;
;;; 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, either version 3 of the License, or
;;; (at your option) any later version.
;;;
;;; 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.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

(use-modules (rnrs bytevectors)
             ;; the following modules are needed only for the test.
             ;;(srfi srfi-1)
             ;;(ice-9 iconv)
             )

;; Well-formed UTF-8 sequences
;; =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
;; 00..7F
;; C2..DF   80..BF
;; E0      *A0..BF   80..BF
;; E1..EC   80..BF   80..BF
;; ED       80..9F*  80..BF
;; EE..EF   80..BF   80..BF
;; F0      *90..BF   80..BF   80..BF
;; F1..F3   80..BF   80..BF   80..BF
;; F4       80..8F*  80..BF   80..BF

;; UTF-8 Decoder states
;; =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
;;  0                 start state
;;  C2     .. DF      got 1/2 bytes
;;  E0     .. EF      got 1/3 bytes
;;  F0     .. F4      got 1/4 bytes
;;  E0A0   .. ED9F    got 2/3 bytes (range 1)
;;  EE80   .. EFBF    got 2/3 bytes (range 2)
;;  F090   .. F48F    got 2/4 bytes
;;  F09080 .. F48FBF  got 3/4 bytes

(define-syntax-rule (utf8-decode ((j init-expr) ...)
                                 (i continue)
                                 (output (code-point) e1 e1* ...)
                                 (error (maximal-subpart) e2 e2* ...)
                                 state-expr bv-expr start-expr end-expr)
  "Let BYTE-STR denote the concatenation of the following two byte
strings: (1) the bytes encoded in STATE-EXPR, and (2) the bytevector
BV-EXPR beginning with index START-EXPR (inclusive) and ending with
index END-EXPR (exclusive).

STATE-EXPR must evaluate to an exact integer between 0 and #xF48FBF
that encodes a proper prefix of a well-formed UTF-8 sequence.  The
bytes are in big-endian order, e.g. #xF48FBF encodes (F4 8F BF) and
0 encodes the empty string.

Let TAIL be the longest suffix of BYTE-STR that is a proper prefix of
a well-formed UTF-8 byte sequence.

Let ITEMS be a list of strings whose concatenation equals BYTE-STR
with TAIL removed, such that each element in ITEMS is either (1) a
well-formed UTF-8 byte sequence, or (2) a maximal subpart of an
ill-formed subsequence, as defined in section 3.9 of The Unicode
Standard 12.0, i.e. the longest code unit subsequence starting at an
inconvertible offset that is either (a) the initial subsequence of a
well-formed code unit sequence, or (b) a subsequence of length one.

UTF8-DECODE iterates over ITEMS from left to right, evaluating the
'output' expressions (E1 E1* ...) for each well-formed UTF-8 byte
sequence, and the 'error' expressions (E2 E2* ...) for each maximal
subpart of an ill-formed subsequence.

As with a 'fold' operation, zero or more seeds are included in the
iterator state, bound to variables (J ...) with initial values
(INIT-EXPR ...).  Each of the user-provided expression sequences
(E1 E1* ...) and (E2 E2* ...) have access to the current seed values
(J ...), and produce new seed values each time they are called.

The user-provided expression sequences have access to the following
variables, whose identifiers are specified by operands to UTF8-DECODE:

(1) I, the bytevector index immediately following the current item,
    i.e. where decoding should resume after processing this item.

(2) (J ...) the user-provided seed values.

(3) CODE-POINT [only bound in (E1 E1* ...)], an exact integer
    Unicode scalar value.

(4) MAXIMAL-SUBPART [only bound in (E2 E2* ...)], the maximal subpart
    of the ill-formed subsequence, represented as an exact integer
    from #xC2 to #xF48FBF containing the bytes in big-endian order.
    For example, #xF48FBF represents the byte string (F4 8F BF).

(5) CONTINUE, a procedure which may be applied to arguments (I J^ ...)
    by the user-provided expression sequences to continue decoding
    with the new seed values (J^ ...).

(6) OUTPUT, a procedure which may be applied to arguments
    (CODE-POINT I J^ ...) to evaluate the user-provided expression
    sequence (E1 E1* ...).

(7) ERROR, a procedure which may be applied to arguments
    (MAXIMAL-SUBPART I J^ ...) to evaluate the user-provided expression
    sequence (E2 E2* ...).

Each user-provided expression sequence may choose either to continue
the loop by calling (CONTINUE I J^ ...), or to terminate the loop by
returning (values 0 I J^ ...), where (J^ ...) are the new seed values.

OUTPUT and ERROR are included for convenience, to allow the output and
error expression sequences to call each other.  For example, it may be
convenient for the error expression sequence to end with:

  (output #xFFFD i j ...)

If the end of BYTE-STR is reached, UTF8-DECODE returns the values
(NEW-STATE END J^ ...), where NEW-STATE encodes the bytes in TAIL,
END equals END-EXPR, and (J^ ...) are the final seed values.

In any case, if the user-provided expressions behave as specified
above, then when UTF8-DECODE returns values (NEW-STATE NEW-POS J^ ...),
every byte in BYTE-STR will have been reported in exactly one of the
following ways:

(1) as part of a well-formed UTF-8 byte sequence, reported to the
    user-provided output expressions (E1 E1* ...), or
(2) as part of a maximal subpart of an ill-formed subsequence,
    reported to the user-provided error expressions (E2 E2* ...), or
(3) as part of NEW-STATE, or
(4) as part of the bytevector starting at index NEW-POS."

  (let ((bv   bv-expr)
        (end  end-expr))

    (define (output code-point i j ...)
      e1 e1* ...)

    (define (error maximal-subpart i j ...)
      e2 e2* ...)
=20=20=20=20
    (define (continue i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (cond ((<=3D byte #x7F)       (output byte (+ i 1) j ...))
                  ((<=3D #xC2 byte #xF4)  (got-1 byte (+ i 1) j ...))
                  (else                 (error byte (+ i 1) j ...))))
          (values 0 i j ...)))

    (define (got-1 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (cond ((not (<=3D #x80 byte #xBF))
                   (error state i j ...))
                  ((<=3D state #xDF)
                   (output (logior (ash (logand state #x1F) 6)
                                   (logand byte #x3F))
                           (+ i 1) j ...))
                  (else
                   (let ((state^ (logior (ash state 8) byte)))
                     (cond ((or (<=3D #xE0A0 state^ #xED9F)
                                (<=3D #xEE80 state^ #xEFBF))
                            (got-2/3 state^ (+ i 1) j ...))
                           ((<=3D #xF090 state^ #xF48F)
                            (got-2/4 state^ (+ i 1) j ...))
                           (else
                            (error state i j ...)))))))
          (values state i j ...)))

    (define (got-2/3 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (if (<=3D #x80 byte #xBF)
                (output (logior (ash (logand state #xF00) 4)
                                (ash (logand state #x3F) 6)
                                (logand byte #x3F))
                        (+ i 1) j ...)
                (error state i j ...)))
          (values state i j ...)))

    (define (got-2/4 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (if (<=3D #x80 byte #xBF)
                (got-3/4 (logior (ash state 8) byte) (+ i 1) j ...)
                (error state i j ...)))
          (values state i j ...)))

    (define (got-3/4 state i j ...)
      (if (< i end)
          (let ((byte (bytevector-u8-ref bv i)))
            (if (<=3D #x80 byte #xBF)
                (output (logior (ash (logand state #x70000) 2)
                                (ash (logand state #x3F00) 4)
                                (ash (logand state #x3F) 6)
                                (logand byte #x3F))
                        (+ i 1) j ...)
                (error state i j ...)))
          (values state i j ...)))

    (define (enter state i j ...)
      (cond ((zero? state)      (continue i j ...))
            ((<=3D state #xF4)    (got-1 state i j ...))
            ((<=3D state #xEFBF)  (got-2/3 state i j ...))
            ((<=3D state #xF48F)  (got-2/4 state i j ...))
            (else               (got-3/4 state i j ...))))

    (enter state-expr start-expr init-expr ...)))

(define (utf8->string! state source source-start source-end
                       target target-start target-end)
  "Let BYTE-STR denote the concatenation of the following two byte
strings: (1) the bytes encoded in STATE, and (2) the bytevector
SOURCE beginning with index SOURCE-START (inclusive) and ending with
index SOURCE-END (exclusive).

STATE must be an exact integer between 0 and #xF48FBF that encodes
a proper prefix of a well-formed UTF-8 sequence.  The bytes are in
big-endian order, e.g. #xF48FBF encodes (F4 8F BF), and 0 encodes the
empty string.

Let TAIL be the longest suffix of BYTE-STR that is a proper prefix of
a well-formed UTF-8 byte sequence, and let BYTE-STR-SANS-TAIL be
BYTE-STR with TAIL removed.

UTF8->STRING! permissively decodes the Unicode 8-bit string
BYTE-STR-SANS-TAIL and writes the resulting characters to the string
TARGET beginning with index TARGET-START (inclusive) and ending with
index TARGET-END (exclusive).

In case of decoding errors, each 'maximal subpart of an ill-formed
subsequence', as defined in section 3.9 of The Unicode Standard 12.0,
is replaced with a Unicode replacement character (U+FFFD).

UTF8->STRING! returns three values (NEW-STATE SOURCE-POS TARGET-POS).

If the target string is able to hold all of the decoded characters and
replacement characters, then NEW-STATE encodes the bytes in TAIL,
SOURCE-POS equals SOURCE-END, and TARGET-POS equals TARGET-START plus
the number of characters written.

If there's not enough space in the target string, then NEW-STATE is 0,
SOURCE-POS is the index of the first byte that is not represented by
the characters written, and TARGET-POS equals TARGET-END."
  (if (< target-start target-end)
      (utf8-decode ((j target-start))
                   (i continue)
                   (output (code-point)
                           (string-set! target j (integer->char code-point))
                           (if (< (+ j 1) target-end)
                               (continue i (+ j 1))
                               (values 0 i (+ j 1))))
                   (error (maximal-subpart)
                          (output #xFFFD i j)) ;TODO: support other error h=
andlers
                   state source source-start source-end)
      (values state source-start target-start)))

;; Another experimental primitive, slower than the ones above.
(define* (utf8-fold* out err seed state bv
                     #:optional (start 0) (end (bytevector-length bv)))
  "Let BYTE-STR denote the concatenation of the following two byte
strings: (1) the bytes encoded in STATE, and (2) the bytevector BV
beginning with index START (inclusive) and ending with index END
(exclusive).

STATE must be an exact integer between 0 and #xF48FBF that encodes
a proper prefix of a well-formed UTF-8 sequence.  The bytes are in
big-endian order, e.g. #xF48FBF encodes (F4 8F BF), and 0 encodes
the empty string.

Let TAIL be the longest suffix of BYTE-STR that is a proper prefix of
a well-formed UTF-8 byte sequence.

Let ITEMS be a list of strings whose concatenation equals BYTE-STR
with TAIL removed, such that each element in ITEMS is either (1) a
well-formed UTF-8 byte sequence, or (2) a maximal subpart of an
ill-formed subsequence, as defined in section 3.9 of The Unicode
Standard 12.0, i.e. the longest code unit subsequence starting at an
inconvertible offset that is either (a) the initial subsequence of a
well-formed code unit sequence, or (b) a subsequence of length one.

UTF8-FOLD* iterates over ITEMS from left to right, calling OUT for
each well-formed UTF-8 byte sequence, and ERR for each maximal subpart
of an ill-formed subsequence.

For each well-formed UTF-8 byte sequence, (OUT CODE-POINT INDEX SEED K)
is called, where CODE-POINT is the Unicode scalar value as an exact
integer, INDEX is the bytevector index immediately following the
decoded code point, SEED is the current seed value, and K is the
continuation.  OUT may choose to either continue decoding or to
exit the loop.  To continue decoding, call (K INDEX NEW-SEED).
To exit, return (values 0 INDEX FINAL-SEED).

For each maximal subpart of an ill-formed UTF-8 byte sequence,
(ERR MAXIMAL-SUBPART INDEX SEED K) is called, where MAXIMAL-SUBPART
is an exact integer between #xC2 and #xF48FBF containing the bytes
in big-endian order, and INDEX is the bytevector index immediately
following those bytes.  For example, #xF48FBF represents the byte
string (F4 8F BF).  Like OUT, ERR may either call (K INDEX NEW-SEED)
to continue, or return (values 0 INDEX FINAL-SEED) to exit the loop.

If the end of BYTE-STR is reached, UTF8-FOLD* returns the values
(NEW-STATE END FINAL-SEED), where NEW-STATE encodes the bytes in
TAIL.

In any case, if the user-provided procedures behave as specified above,
then when UTF8-FOLD* returns values (NEW-STATE NEW-POS FINAL-SEED),
every byte in BYTE-STR will have been reported in exactly one of the
following ways:

(1) as part of a well-formed UTF-8 byte sequence, reported to OUT,
(2) as part of a maximal subpart of an ill-formed subsequence,
    reported to ERR,
(3) as part of NEW-STATE, or
(4) as part of the bytevector starting at index NEW-POS."
  (utf8-decode ((j seed))
               (i continue)
               (output (code-point)
                       (out code-point i j continue))
               (error (maximal-subpart)
                      (err maximal-subpart i j continue))
               state bv start end))

;; Another experimental primitive, slower than the ones above.
(define* (utf8-fold out err seed state bv
                    #:optional (start 0) (end (bytevector-length bv)))
  "Let BYTE-STR denote the concatenation of the following two byte
strings: (1) the bytes encoded in STATE, and (2) the bytevector BV
beginning with index START (inclusive) and ending with index END
(exclusive).

STATE must be an exact integer between 0 and #xF48FBF that encodes
a proper prefix of a well-formed UTF-8 sequence.  The bytes are in
big-endian order, e.g. #xF48FBF encodes (F4 8F BF), and 0 encodes
the empty string.

Let TAIL be the longest suffix of BYTE-STR that is a proper prefix of
a well-formed UTF-8 byte sequence.

Let ITEMS be a list of strings whose concatenation equals BYTE-STR
with TAIL removed, such that each element in ITEMS is either (1) a
well-formed UTF-8 byte sequence, or (2) a maximal subpart of an
ill-formed subsequence, as defined in section 3.9 of The Unicode
Standard 12.0, i.e. the longest code unit subsequence starting at an
inconvertible offset that is either (a) the initial subsequence of a
well-formed code unit sequence, or (b) a subsequence of length one.

UTF8-FOLD iterates over ITEMS from left to right, calling OUT for
each well-formed UTF-8 byte sequence, and ERR for each maximal subpart
of an ill-formed subsequence.

For each well-formed UTF-8 byte sequence, (OUT CODE-POINT INDEX SEED)
is called, where CODE-POINT is the Unicode scalar value as an exact
integer, INDEX is the bytevector index immediately following the
decoded code point, and SEED is the current seed value.  OUT should
return the new seed value.

For each maximal subpart of an ill-formed UTF-8 byte sequence,
(ERR MAXIMAL-SUBPART INDEX SEED) is called, where MAXIMAL-SUBPART
is an exact integer between #xC2 and #xF48FBF containing the bytes
in big-endian order, and INDEX is the bytevector index immediately
following those bytes.  For example, #xF48FBF represents the byte
string (F4 8F BF).  ERR should return two values: (CONTINUE? NEW-SEED),
where CONTINUE? is a boolean specifying whether to continue the loop.

If the end of BYTE-STR is reached, UTF8-FOLD returns the values
(NEW-STATE END FINAL-SEED), where NEW-STATE encodes the bytes in
TAIL.

In any case, if the user-provided procedures behave as specified above,
then when UTF8-FOLD returns values (NEW-STATE NEW-POS FINAL-SEED),
every byte in BYTE-STR will have been reported in exactly one of the
following ways:

(1) as part of a well-formed UTF-8 byte sequence, reported to OUT,
(2) as part of a maximal subpart of an ill-formed subsequence,
    reported to ERR,
(3) as part of NEW-STATE, or
(4) as part of the bytevector starting at index NEW-POS."
  (utf8-fold* (lambda (code-point i j continue)
                (continue i (out code-point i j)))
              (lambda (maximal-subpart i j continue)
                (call-with-values (lambda () (err maximal-subpart i j))
                  (lambda (continue? j^)
                    (if continue?
                        (continue i j^)
                        (values 0 i j^)))))
              seed state bv start end))

;; A not-so-quick test of all valid characters.
;; TODO: Tests of strictness and error handling.
#;
(let ()
  (define ss (string-tabulate (lambda (i)
                                (if (< i #xD800)
                                    (integer->char i)
                                    (integer->char (+ i #x800))))
                              (- #x110000 #x800)))
  (define bv (string->utf8 ss))
  (define bv-len (bytevector-length bv))
  (define slen (* 2 (string-length ss)))
  (define s (make-string slen))
  (every (lambda (incr)
           (string-fill! s #\a)
           (call-with-values
               (lambda ()
                 (let loop ((state 0) (i 0) (j 0))
                   (if (< i bv-len)
                       (call-with-values
                           (lambda ()
                             (utf8->string! state bv i (min bv-len
                                                            (+ i incr))
                                            s j slen))
                         loop)
                       (values state i j))))
             (lambda (state i j)
               (and (zero? state)
                    (=3D i bv-len)
                    (=3D j (string-length ss))
                    (string=3D? ss (substring s 0 j))))))
         (iota 5 1)))

--=-=-=--




Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Sat, 27 Apr 2019 16:37:02 +0000
Resent-Message-ID: <handler.35350.B35350.155638301129713 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Mark H Weaver <mhw@HIDDEN>
Cc: 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.155638301129713
          (code B ref 35350); Sat, 27 Apr 2019 16:37:02 +0000
Received: (at 35350) by debbugs.gnu.org; 27 Apr 2019 16:36:51 +0000
Received: from localhost ([127.0.0.1]:35863 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hKQJj-0007j5-Rl
	for submit <at> debbugs.gnu.org; Sat, 27 Apr 2019 12:36:48 -0400
Received: from eggs.gnu.org ([209.51.188.92]:47496)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1hKQJf-0007im-1J
 for 35350 <at> debbugs.gnu.org; Sat, 27 Apr 2019 12:36:46 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:48657)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1hKQJZ-0004y2-Ag; Sat, 27 Apr 2019 12:36:37 -0400
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=37674 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1hKQJX-00064m-Vz; Sat, 27 Apr 2019 12:36:37 -0400
From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN> <87r29v2jz2.fsf@HIDDEN>
 <87ftq9silk.fsf@HIDDEN> <87imv5jai5.fsf@HIDDEN>
 <87k1fgh9c0.fsf@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 8 =?UTF-8?Q?Flor=C3=A9al?= an 227 de la =?UTF-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Sat, 27 Apr 2019 18:36:34 +0200
In-Reply-To: <87k1fgh9c0.fsf@HIDDEN> (Mark H. Weaver's message of "Fri, 26
 Apr 2019 15:09:24 -0400")
Message-ID: <874l6jh0bx.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi Mark,

Mark H Weaver <mhw@HIDDEN> skribis:

> Ludovic Court=C3=A8s <ludo@HIDDEN> writes:
>
>> The third read(2) call here ends on a partial UTF-8 sequence for LEFT
>> SINGLE QUOTATION MARK (we get the first two bytes of a three byte
>> sequence.)
>>
>> What happens is that =E2=80=98process-stderr=E2=80=99 in (guix store) ge=
ts that byte
>> string from the daemon, passes it through =E2=80=98read-maybe-utf8-strin=
g=E2=80=99,
>> which replaces the last two bytes with REPLACEMENT CHARACTER, which is
>> itself a 3-byte sequence.
>
> It seems to me that what's needed here is to save the UTF-8 decoder
> state between calls to 'process-stderr'.

So there are two things.  To fix the issue you reported (build output
that goes through), I think we must simply turn off UTF-8 decoding from
=E2=80=98process-stderr=E2=80=99 and leave that entirely to =E2=80=98build-=
event-output-port=E2=80=99.

However, =E2=80=98build-event-output-port=E2=80=99 would still fail to prop=
erly decode
split UTF-8 sequences, and for that we=E2=80=99d need to preserve decoder s=
tate
as you describe.

> Coincidentally, I also needed something like this a week ago, when I
> tried implementing R6RS custom textual input/output ports on top of
> R6RS custom binary input/output ports.
>
> To meet these needs, I've implemented a fairly efficient, purely
> functional UTF-8 decoder in Scheme that accepts a decoder state and an
> arbitrary range from a bytevector, and returns a new decoder state.
> There's a macro that allows arbitrary actions to be performed when a
> code point (or maximal subpart in the case of errors) is found.
>
> This macro is then used to implement a decoder (utf8->string!) that
> writes into an arbitrary range of an existing string.  Of course, it's
> not purely functional, but it avoids heap allocation when compiled with
> Guile.  On my Thinkpad X200, it can process around 10 megabytes per
> second.
>
> The state is represented as an exact integer between 0 and #xF48FBF
> inclusive, which are simply the bytes that have been seen so far in the
> current code sequence, in big-endian order, or 0 for the start state.
> For example, #xF48FBF represents the state where the bytes (F4 8F BF)
> have been read.  The state is always either 0 or a proper prefix of a
> valid UTF-8 byte sequence.

Awesome!  I think that=E2=80=99s something we should definitely add to Guile
proper.  We can use it in Guix before or after it=E2=80=99s included in Gui=
le.

Thank you!

Ludo=E2=80=99.




Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Mark H Weaver <mhw@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Tue, 30 Apr 2019 20:29:02 +0000
Resent-Message-ID: <handler.35350.B35350.155665610412610 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Cc: 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.155665610412610
          (code B ref 35350); Tue, 30 Apr 2019 20:29:02 +0000
Received: (at 35350) by debbugs.gnu.org; 30 Apr 2019 20:28:24 +0000
Received: from localhost ([127.0.0.1]:42483 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hLZMV-0003HK-Tm
	for submit <at> debbugs.gnu.org; Tue, 30 Apr 2019 16:28:24 -0400
Received: from world.peace.net ([64.112.178.59]:41146)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mhw@HIDDEN>) id 1hLZMU-0003H7-0Y
 for 35350 <at> debbugs.gnu.org; Tue, 30 Apr 2019 16:28:22 -0400
Received: from mhw by world.peace.net with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <mhw@HIDDEN>)
 id 1hLZMO-0007ai-1J; Tue, 30 Apr 2019 16:28:16 -0400
From: Mark H Weaver <mhw@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN> <87r29v2jz2.fsf@HIDDEN>
 <87ftq9silk.fsf@HIDDEN> <87imv5jai5.fsf@HIDDEN>
 <87k1fgh9c0.fsf@HIDDEN> <874l6jh0bx.fsf@HIDDEN>
Date: Tue, 30 Apr 2019 16:26:32 -0400
In-Reply-To: <874l6jh0bx.fsf@HIDDEN> ("Ludovic
 \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\=
 \=\?utf-8\?Q\?s\?\= message of "Sat, 27 Apr 2019 18:36:34 +0200")
Message-ID: <87imuvme7g.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Ludovic,

Ludovic Court=C3=A8s <ludo@HIDDEN> writes:

> Mark H Weaver <mhw@HIDDEN> skribis:
>
>> Ludovic Court=C3=A8s <ludo@HIDDEN> writes:
>>
>>> The third read(2) call here ends on a partial UTF-8 sequence for LEFT
>>> SINGLE QUOTATION MARK (we get the first two bytes of a three byte
>>> sequence.)
>>>
>>> What happens is that =E2=80=98process-stderr=E2=80=99 in (guix store) g=
ets that byte
>>> string from the daemon, passes it through =E2=80=98read-maybe-utf8-stri=
ng=E2=80=99,
>>> which replaces the last two bytes with REPLACEMENT CHARACTER, which is
>>> itself a 3-byte sequence.
>>
>> It seems to me that what's needed here is to save the UTF-8 decoder
>> state between calls to 'process-stderr'.
>
> So there are two things.  To fix the issue you reported (build output
> that goes through), I think we must simply turn off UTF-8 decoding from
> =E2=80=98process-stderr=E2=80=99 and leave that entirely to =E2=80=98buil=
d-event-output-port=E2=80=99.

Can we assume that UTF-8 is the appropriate encoding for
(current-build-output-port)?  My interpretation of the Guix manual entry
for 'current-build-output-port' suggests that the answer should be "no".

Also, in your previous message you wrote:

  The problem is the first layer of UTF-8 decoding that happens in
  =E2=80=98process-stderr=E2=80=99, in the =E2=80=98%stderr-next=E2=80=99 c=
ase.  We would need to
  disable it, but only if the build output port is
  =E2=80=98build-event-output-port=E2=80=99 (i.e., it=E2=80=99s capable of =
interpreting
  =E2=80=9Cmultiplexed build output=E2=80=9D correctly.)

It sounds like you're suggesting that 'process-stderr' should look to
see if (current-build-output-port) is a 'build-event-output-port', and
in that case it should use binary I/O primitives to write raw binary
data to it, otherwise it should use text I/O primitives and write
characters to it.  Do I understand correctly?

IMO, it would be cleaner to treat 'build-event-output-port' uniformly,
and specifically as a textual port of unknown encoding.

What do you think?

> However, =E2=80=98build-event-output-port=E2=80=99 would still fail to pr=
operly decode
> split UTF-8 sequences, and for that we=E2=80=99d need to preserve decoder
> state as you describe.

I would suggest changing 'build-event-output-port' to create an R6RS
custom *textual* output port, so that it wouldn't have to worry about
encodings at all, and it would only be given whole characters.
Internally, it would be doing exactly what you suggest above, but those
details would be encapsulated within the custom textual port.

However, I don't think we can use Guile's current implementation of R6RS
custom textual output ports, which are currently built on Guile's legacy
soft ports, which I suspect have a similar bug with multibyte characters
sometimes being split (see 'soft_port_write' in vports.c).

Having said all of this, my suggestions would ultimately entail having
two separate places along the stderr pipeline where 'utf8->string!'
would be used, and maybe that's too much until we have a more optimized
C implementation of it.

Thoughts?

      Mark




Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Sat, 04 May 2019 09:35:02 +0000
Resent-Message-ID: <handler.35350.B35350.15569624426801 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Mark H Weaver <mhw@HIDDEN>
Cc: 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.15569624426801
          (code B ref 35350); Sat, 04 May 2019 09:35:02 +0000
Received: (at 35350) by debbugs.gnu.org; 4 May 2019 09:34:02 +0000
Received: from localhost ([127.0.0.1]:50389 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hMr3R-0001lW-Li
	for submit <at> debbugs.gnu.org; Sat, 04 May 2019 05:34:01 -0400
Received: from eggs.gnu.org ([209.51.188.92]:38307)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1hMr3Q-0001lJ-0z
 for 35350 <at> debbugs.gnu.org; Sat, 04 May 2019 05:34:00 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:47851)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1hMr3K-0006PP-PA; Sat, 04 May 2019 05:33:54 -0400
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=35222 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1hMr3J-0007KB-Tl; Sat, 04 May 2019 05:33:54 -0400
From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN> <87r29v2jz2.fsf@HIDDEN>
 <87ftq9silk.fsf@HIDDEN> <87imv5jai5.fsf@HIDDEN>
 <87k1fgh9c0.fsf@HIDDEN> <874l6jh0bx.fsf@HIDDEN>
 <87imuvme7g.fsf@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 15 =?UTF-8?Q?Flor=C3=A9al?= an 227 de la =?UTF-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Sat, 04 May 2019 11:33:51 +0200
In-Reply-To: <87imuvme7g.fsf@HIDDEN> (Mark H. Weaver's message of "Tue, 30
 Apr 2019 16:26:32 -0400")
Message-ID: <87r29e5zsw.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi Mark,

Mark H Weaver <mhw@HIDDEN> skribis:

> Ludovic Court=C3=A8s <ludo@HIDDEN> writes:

[...]

>> So there are two things.  To fix the issue you reported (build output
>> that goes through), I think we must simply turn off UTF-8 decoding from
>> =E2=80=98process-stderr=E2=80=99 and leave that entirely to =E2=80=98bui=
ld-event-output-port=E2=80=99.
>
> Can we assume that UTF-8 is the appropriate encoding for
> (current-build-output-port)?  My interpretation of the Guix manual entry
> for 'current-build-output-port' suggests that the answer should be "no".

What goes to =E2=80=98current-build-output-port=E2=80=99 comes from builds =
processes.
It=E2=80=99s usually UTF-8 but it can be anything, including binary garbage,
which should be gracefully handled.

That=E2=80=99s why =E2=80=98process-stderr=E2=80=99 currently uses =E2=80=
=98read-maybe-utf8-string=E2=80=99.

> Also, in your previous message you wrote:
>
>   The problem is the first layer of UTF-8 decoding that happens in
>   =E2=80=98process-stderr=E2=80=99, in the =E2=80=98%stderr-next=E2=80=99=
 case.  We would need to
>   disable it, but only if the build output port is
>   =E2=80=98build-event-output-port=E2=80=99 (i.e., it=E2=80=99s capable o=
f interpreting
>   =E2=80=9Cmultiplexed build output=E2=80=9D correctly.)
>
> It sounds like you're suggesting that 'process-stderr' should look to
> see if (current-build-output-port) is a 'build-event-output-port', and
> in that case it should use binary I/O primitives to write raw binary
> data to it, otherwise it should use text I/O primitives and write
> characters to it.  Do I understand correctly?

Yes.  (Actually, rather than guessing if (current-build-output-port) is
a =E2=80=98build-event-output-port=E2=80=99, there could be a fluid to ask =
for the use
of raw binary primitives.)

> IMO, it would be cleaner to treat 'build-event-output-port' uniformly,
> and specifically as a textual port of unknown encoding.

(You mean =E2=80=98current-build-output-port=E2=80=99, right?)

I think you=E2=80=99re right.  I=E2=80=99m not yet entirely sure what the i=
mplications
are.  There=E2=80=99s a couple of tests in tests/store.scm for UTF-8
interpretation that describe behavior that I think we should preserve.

> I would suggest changing 'build-event-output-port' to create an R6RS
> custom *textual* output port, so that it wouldn't have to worry about
> encodings at all, and it would only be given whole characters.
> Internally, it would be doing exactly what you suggest above, but those
> details would be encapsulated within the custom textual port.
>
> However, I don't think we can use Guile's current implementation of R6RS
> custom textual output ports, which are currently built on Guile's legacy
> soft ports, which I suspect have a similar bug with multibyte characters
> sometimes being split (see 'soft_port_write' in vports.c).
>
> Having said all of this, my suggestions would ultimately entail having
> two separate places along the stderr pipeline where 'utf8->string!'
> would be used, and maybe that's too much until we have a more optimized
> C implementation of it.

Yeah it looks like we don=E2=80=99t yet have custom textual output ports th=
at we
could rely on, do we?

I support your work to add that in Guile proper!

Thanks,
Ludo=E2=80=99.




Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Mark H Weaver <mhw@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Sat, 04 May 2019 18:56:01 +0000
Resent-Message-ID: <handler.35350.B35350.155699614730269 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Cc: 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.155699614730269
          (code B ref 35350); Sat, 04 May 2019 18:56:01 +0000
Received: (at 35350) by debbugs.gnu.org; 4 May 2019 18:55:47 +0000
Received: from localhost ([127.0.0.1]:52287 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1hMzp4-0007s9-VD
	for submit <at> debbugs.gnu.org; Sat, 04 May 2019 14:55:47 -0400
Received: from world.peace.net ([64.112.178.59]:56056)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mhw@HIDDEN>) id 1hMzp2-0007rw-Vm
 for 35350 <at> debbugs.gnu.org; Sat, 04 May 2019 14:55:45 -0400
Received: from mhw by world.peace.net with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <mhw@HIDDEN>)
 id 1hMzow-0000Xn-G9; Sat, 04 May 2019 14:55:38 -0400
From: Mark H Weaver <mhw@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN> <87r29v2jz2.fsf@HIDDEN>
 <87ftq9silk.fsf@HIDDEN> <87imv5jai5.fsf@HIDDEN>
 <87k1fgh9c0.fsf@HIDDEN> <874l6jh0bx.fsf@HIDDEN>
 <87imuvme7g.fsf@HIDDEN> <87r29e5zsw.fsf@HIDDEN>
Date: Sat, 04 May 2019 14:53:50 -0400
In-Reply-To: <87r29e5zsw.fsf@HIDDEN> ("Ludovic
 \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\=
 \=\?utf-8\?Q\?s\?\= message of "Sat, 04 May 2019 11:33:51 +0200")
Message-ID: <87tveauk2u.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hi Ludovic,

Ludovic Court=C3=A8s <ludo@HIDDEN> writes:

> Mark H Weaver <mhw@HIDDEN> skribis:
>
>> Ludovic Court=C3=A8s <ludo@HIDDEN> writes:
>
> [...]
>
>>> So there are two things.  To fix the issue you reported (build output
>>> that goes through), I think we must simply turn off UTF-8 decoding from
>>> =E2=80=98process-stderr=E2=80=99 and leave that entirely to =E2=80=98bu=
ild-event-output-port=E2=80=99.
>>
>> Can we assume that UTF-8 is the appropriate encoding for
>> (current-build-output-port)?  My interpretation of the Guix manual entry
>> for 'current-build-output-port' suggests that the answer should be "no".
>
> What goes to =E2=80=98current-build-output-port=E2=80=99 comes from build=
s processes.
> It=E2=80=99s usually UTF-8 but it can be anything, including binary garba=
ge,
> which should be gracefully handled.
>
> That=E2=80=99s why =E2=80=98process-stderr=E2=80=99 currently uses =E2=80=
=98read-maybe-utf8-string=E2=80=99.

I agree that we should (permissively) interpret the build process output
as UTF-8, regardless of locale settings.  However, the encoding of
'current-build-output-port' is orthogonal, and I see no reason to assume
that it's UTF-8.

As 'process-stderr' is currently implemented, it makes no assumptions
about the encoding of 'current-build-output-port'.  That's because it
uses only textual I/O on it.  The end result is that the UTF-8 build
output is effectively converted into the port encoding of
'current-build-output-port', whatever it might be.  I think that's how
it should be, no?

>> Also, in your previous message you wrote:
>>
>>   The problem is the first layer of UTF-8 decoding that happens in
>>   =E2=80=98process-stderr=E2=80=99, in the =E2=80=98%stderr-next=E2=80=
=99 case.  We would need to
>>   disable it, but only if the build output port is
>>   =E2=80=98build-event-output-port=E2=80=99 (i.e., it=E2=80=99s capable =
of interpreting
>>   =E2=80=9Cmultiplexed build output=E2=80=9D correctly.)
>>
>> It sounds like you're suggesting that 'process-stderr' should look to
>> see if (current-build-output-port) is a 'build-event-output-port', and
>> in that case it should use binary I/O primitives to write raw binary
>> data to it, otherwise it should use text I/O primitives and write
>> characters to it.  Do I understand correctly?
>
> Yes.  (Actually, rather than guessing if (current-build-output-port) is
> a =E2=80=98build-event-output-port=E2=80=99, there could be a fluid to as=
k for the use
> of raw binary primitives.)
>
>> IMO, it would be cleaner to treat 'build-event-output-port' uniformly,
>> and specifically as a textual port of unknown encoding.
>
> (You mean =E2=80=98current-build-output-port=E2=80=99, right?)

Yes, indeed.

> I think you=E2=80=99re right.  I=E2=80=99m not yet entirely sure what the=
 implications
> are.  There=E2=80=99s a couple of tests in tests/store.scm for UTF-8
> interpretation that describe behavior that I think we should preserve.

I certainly agree that we should preserve those tests.  I would go
further and add two more tests that bind 'current-build-output-port' to
a port with a non-UTF-8 encoding (e.g. UTF-16) and verify that the =CE=BB
gets converted correctly.  The test build process would output the =CE=BB as
UTF-8, but it should be written to 'current-build-output-port' as
e.g. UTF-16.

What do you think?

>> I would suggest changing 'build-event-output-port' to create an R6RS
>> custom *textual* output port, so that it wouldn't have to worry about
>> encodings at all, and it would only be given whole characters.
>> Internally, it would be doing exactly what you suggest above, but those
>> details would be encapsulated within the custom textual port.
>>
>> However, I don't think we can use Guile's current implementation of R6RS
>> custom textual output ports, which are currently built on Guile's legacy
>> soft ports, which I suspect have a similar bug with multibyte characters
>> sometimes being split (see 'soft_port_write' in vports.c).
>>
>> Having said all of this, my suggestions would ultimately entail having
>> two separate places along the stderr pipeline where 'utf8->string!'
>> would be used, and maybe that's too much until we have a more optimized
>> C implementation of it.
>
> Yeah it looks like we don=E2=80=99t yet have custom textual output ports =
that we
> could rely on, do we?
>
> I support your work to add that in Guile proper!

For now, I can offer a new implementation of custom textual output ports
built upon custom binary ports and the 'utf8->string!' that I previously
sent.  See attached.

     Thanks,
       Mark


--8<---------------cut here---------------start------------->8---
GNU Guile 2.2.4
Copyright (C) 1995-2017 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guile-user)> (load "utf8-decoder.scm")
scheme@(guile-user)> (load "guile-new-custom-textual-ports.scm")
scheme@(guile-user)> (define (my-write! str start count)
                       (pk 'my-write! (substring str start (+ start count)))
                       count)
scheme@(guile-user)> (define port (make-custom-textual-output-port "test1" =
my-write! #f #f #f))
scheme@(guile-user)> (display "Hello =CE=BB world!" port)
scheme@(guile-user)> (force-output port)

;;; (my-write! "Hello =CE=BB world!")
scheme@(guile-user)> (string->utf8 "=CE=BB")
$2 =3D #vu8(206 187)
scheme@(guile-user)> (string->utf8 "Hello =CE=BB world!")
$3 =3D #vu8(72 101 108 108 111 32 206 187 32 119 111 114 108 100 33)
scheme@(guile-user)> (put-bytevector port #vu8(72 101 108 108 111 32 206))
scheme@(guile-user)> (force-output port)

;;; (my-write! "Hello ")
scheme@(guile-user)> (put-bytevector port #vu8(187 32 119 111 114 108 100 3=
3))
scheme@(guile-user)> (force-output port)

;;; (my-write! "=CE=BB world!")
scheme@(guile-user)>
--8<---------------cut here---------------end--------------->8---


--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline; filename=guile-new-custom-textual-ports.scm
Content-Transfer-Encoding: quoted-printable
Content-Description: New implementation of custom textual output ports for
 Guile

;;; Copyright =C2=A9 2019 Mark H Weaver <mhw@HIDDEN>
;;;
;;; 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, either version 3 of the License, or
;;; (at your option) any later version.
;;;
;;; 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.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

(use-modules (rnrs io ports))

(define (make-custom-textual-output-port id
                                         write!
                                         get-position
                                         set-position!
                                         close)
  (let (;; Allocate a per-port string buffer which will be used as a
        ;; temporary buffer for decoding, to avoid heap allocation
        ;; during normal operation.
        (buffer (make-string 4096))
        ;; 'state' is the UTF-8 decoder state, which represents a
        ;; proper prefix of a well-formed UTF-8 byte sequence.  These
        ;; are bytes that 'binary-write!' has accepted and reported as
        ;; having been written, although we are not able to decode
        ;; them into a character to pass to (textual) 'write!' until
        ;; more bytes arrive.
        (state 0))
    (define (binary-write! bv start count)
      (call-with-values (lambda ()
                          ;; XXX FIXME: Consider performing this
                          ;; decoding strictly.
                          (utf8->string! state bv start (+ start count)
                                         buffer 0 (string-length buffer)))
        (lambda (new-state bv-pos char-count)
          (let* (;; Avoid calling write! with (char-count =3D 0) unless
                 ;; (count =3D 0) was passed to us, because calling
                 ;; 'write!' with count=3D0 has a special meaning: it
                 ;; means to pass an EOF object to the byte/character
                 ;; sink.
                 (chars-accepted (if (and (zero? char-count)
                                          (not (zero? count)))
                                     0
                                     (write! buffer 0 char-count)))
                 ;; Compute 'bytes-accepted' in such a way that the
                 ;; bytes from STATE are not included, because they
                 ;; were passed to us in previous calls, and are not
                 ;; part of the bytevector range that we are now being
                 ;; asked to write.  However, it's important to note
                 ;; that if 'write!' did not accept the bytes from
                 ;; STATE, 'bytes-accepted' will be negative.  We must
                 ;; handle that case specially below.
                 (bytes-accepted (- count (string-utf8-length
                                           (substring buffer
                                                      chars-accepted
                                                      char-count)))))
            ;; If 'bytes-accepted' is negative, that means the bytes
            ;; from STATE were not written.  This can only happen if
            ;; 'chars-accepted' is 0, because 'write!' can only accept
            ;; whole code points, and the bytes from STATE are part of
            ;; at most a single code point.  In this case, we must
            ;; leave STATE unchanged and return 0.
            (if (negative? bytes-accepted)
                0
                (begin
                  (set! state new-state)
                  bytes-accepted))))))
    (define (binary-close)
      (set! buffer #f)
      (when close (close)))
    (define port
      (make-custom-binary-output-port id
                                      binary-write!
                                      get-position
                                      set-position!
                                      binary-close))
    ;; Always use UTF-8 as the encoding for custom textual ports, as
    ;; an internal implementation detail, to ensure that all Unicode
    ;; characters will pass through regardless of the current locale.
    (set-port-encoding! port "UTF-8")
    port))

--=-=-=--




Message received at control <at> debbugs.gnu.org:


Received: (at control) by debbugs.gnu.org; 9 Nov 2019 17:18:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 09 12:18:10 2019
Received: from localhost ([127.0.0.1]:50218 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1iTUNG-0006qd-BK
	for submit <at> debbugs.gnu.org; Sat, 09 Nov 2019 12:18:10 -0500
Received: from eggs.gnu.org ([209.51.188.92]:48300)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1iTUN8-0006pu-9x
 for control <at> debbugs.gnu.org; Sat, 09 Nov 2019 12:18:02 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e]:41781)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1iTUN3-0004iH-77
 for control <at> debbugs.gnu.org; Sat, 09 Nov 2019 12:17:57 -0500
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=37602 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>) id 1iTUN2-0002dE-Mu
 for control <at> debbugs.gnu.org; Sat, 09 Nov 2019 12:17:57 -0500
Date: Sat, 09 Nov 2019 18:17:54 +0100
Message-Id: <874kzdarzx.fsf@HIDDEN>
To: control <at> debbugs.gnu.org
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
Subject: control message for bug #35350
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: control
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

severity 35350 important
quit





Message sent to bug-guix@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#35350: Some compile output still leaks through with --verbosity=1
Resent-From: Sarah Morgensen <iskarian@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guix@HIDDEN
Resent-Date: Mon, 20 Sep 2021 05:46:02 +0000
Resent-Message-ID: <handler.35350.B35350.163211670231817 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 35350
X-GNU-PR-Package: guix
X-GNU-PR-Keywords: 
To: Mark H Weaver <mhw@HIDDEN>
Cc: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>, 35350 <at> debbugs.gnu.org
Received: via spool by 35350-submit <at> debbugs.gnu.org id=B35350.163211670231817
          (code B ref 35350); Mon, 20 Sep 2021 05:46:02 +0000
Received: (at 35350) by debbugs.gnu.org; 20 Sep 2021 05:45:02 +0000
Received: from localhost ([127.0.0.1]:40647 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mSC6v-0008GR-8C
	for submit <at> debbugs.gnu.org; Mon, 20 Sep 2021 01:45:02 -0400
Received: from out1.migadu.com ([91.121.223.63]:26885)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <iskarian@HIDDEN>) id 1mSC6s-0008G5-OR
 for 35350 <at> debbugs.gnu.org; Mon, 20 Sep 2021 01:44:59 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mgsn.dev; s=key1;
 t=1632116697;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references;
 bh=L6/enyah5Tsg0qnWyv8Qz91KfXjfuXs/4WSEvbhhHJk=;
 b=c2VJQldKX1ipXo3hodoAvCa4ab7lVccTccApz4r8Nau5nNL0tbjSM5Ctje66amjmYdpM7h
 JcUjiA22O4/WBPXZVwsm9iB+qUc2Jvm2rZOnAkZtL355+5EBA0MrxcFeC/oAiDL9y1AMQI
 s26nGCpXkq7KZJJtRrty0e7Kr61dkX4=
From: Sarah Morgensen <iskarian@HIDDEN>
References: <87mukkfd2j.fsf@HIDDEN> <87r29v2jz2.fsf@HIDDEN>
 <87ftq9silk.fsf@HIDDEN> <87imv5jai5.fsf@HIDDEN>
 <87k1fgh9c0.fsf@HIDDEN> <874l6jh0bx.fsf@HIDDEN>
 <87imuvme7g.fsf@HIDDEN> <87r29e5zsw.fsf@HIDDEN>
 <87tveauk2u.fsf@HIDDEN>
Date: Sun, 19 Sep 2021 22:44:55 -0700
In-Reply-To: <87tveauk2u.fsf@HIDDEN> (Mark H. Weaver's message of "Sat, 04
 May 2019 14:53:50 -0400 (2 years, 19 weeks, 5 days ago)")
Message-ID: <864kafhkbs.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Migadu-Flow: FLOW_OUT
X-Migadu-Auth-User: iskarian@HIDDEN
X-Spam-Score: -0.7 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hello,

I encountered this issue today.  This looks like a pretty complete
solution ready to go.  Did this ever make it into Guile/Guix?

(Ironically I was also reaching for a "make-custom-textual-output-port"
the other day!)

--
Sarah

Mark H Weaver <mhw@HIDDEN> writes:

> Hi Ludovic,
>
> Ludovic Court=C3=A8s <ludo@HIDDEN> writes:
>
>> Mark H Weaver <mhw@HIDDEN> skribis:
>>
>>> Ludovic Court=C3=A8s <ludo@HIDDEN> writes:
>>
>> [...]
>>
>>>> So there are two things.  To fix the issue you reported (build output
>>>> that goes through), I think we must simply turn off UTF-8 decoding from
>>>> =E2=80=98process-stderr=E2=80=99 and leave that entirely to =E2=80=98b=
uild-event-output-port=E2=80=99.
>>>
>>> Can we assume that UTF-8 is the appropriate encoding for
>>> (current-build-output-port)?  My interpretation of the Guix manual entry
>>> for 'current-build-output-port' suggests that the answer should be "no".
>>
>> What goes to =E2=80=98current-build-output-port=E2=80=99 comes from buil=
ds processes.
>> It=E2=80=99s usually UTF-8 but it can be anything, including binary garb=
age,
>> which should be gracefully handled.
>>
>> That=E2=80=99s why =E2=80=98process-stderr=E2=80=99 currently uses =E2=
=80=98read-maybe-utf8-string=E2=80=99.
>
> I agree that we should (permissively) interpret the build process output
> as UTF-8, regardless of locale settings.  However, the encoding of
> 'current-build-output-port' is orthogonal, and I see no reason to assume
> that it's UTF-8.
>
> As 'process-stderr' is currently implemented, it makes no assumptions
> about the encoding of 'current-build-output-port'.  That's because it
> uses only textual I/O on it.  The end result is that the UTF-8 build
> output is effectively converted into the port encoding of
> 'current-build-output-port', whatever it might be.  I think that's how
> it should be, no?
>
>>> Also, in your previous message you wrote:
>>>
>>>   The problem is the first layer of UTF-8 decoding that happens in
>>>   =E2=80=98process-stderr=E2=80=99, in the =E2=80=98%stderr-next=E2=80=
=99 case.  We would need to
>>>   disable it, but only if the build output port is
>>>   =E2=80=98build-event-output-port=E2=80=99 (i.e., it=E2=80=99s capable=
 of interpreting
>>>   =E2=80=9Cmultiplexed build output=E2=80=9D correctly.)
>>>
>>> It sounds like you're suggesting that 'process-stderr' should look to
>>> see if (current-build-output-port) is a 'build-event-output-port', and
>>> in that case it should use binary I/O primitives to write raw binary
>>> data to it, otherwise it should use text I/O primitives and write
>>> characters to it.  Do I understand correctly?
>>
>> Yes.  (Actually, rather than guessing if (current-build-output-port) is
>> a =E2=80=98build-event-output-port=E2=80=99, there could be a fluid to a=
sk for the use
>> of raw binary primitives.)
>>
>>> IMO, it would be cleaner to treat 'build-event-output-port' uniformly,
>>> and specifically as a textual port of unknown encoding.
>>
>> (You mean =E2=80=98current-build-output-port=E2=80=99, right?)
>
> Yes, indeed.
>
>> I think you=E2=80=99re right.  I=E2=80=99m not yet entirely sure what th=
e implications
>> are.  There=E2=80=99s a couple of tests in tests/store.scm for UTF-8
>> interpretation that describe behavior that I think we should preserve.
>
> I certainly agree that we should preserve those tests.  I would go
> further and add two more tests that bind 'current-build-output-port' to
> a port with a non-UTF-8 encoding (e.g. UTF-16) and verify that the =CE=BB
> gets converted correctly.  The test build process would output the =CE=BB=
 as
> UTF-8, but it should be written to 'current-build-output-port' as
> e.g. UTF-16.
>
> What do you think?
>
>>> I would suggest changing 'build-event-output-port' to create an R6RS
>>> custom *textual* output port, so that it wouldn't have to worry about
>>> encodings at all, and it would only be given whole characters.
>>> Internally, it would be doing exactly what you suggest above, but those
>>> details would be encapsulated within the custom textual port.
>>>
>>> However, I don't think we can use Guile's current implementation of R6RS
>>> custom textual output ports, which are currently built on Guile's legacy
>>> soft ports, which I suspect have a similar bug with multibyte characters
>>> sometimes being split (see 'soft_port_write' in vports.c).
>>>
>>> Having said all of this, my suggestions would ultimately entail having
>>> two separate places along the stderr pipeline where 'utf8->string!'
>>> would be used, and maybe that's too much until we have a more optimized
>>> C implementation of it.
>>
>> Yeah it looks like we don=E2=80=99t yet have custom textual output ports=
 that we
>> could rely on, do we?
>>
>> I support your work to add that in Guile proper!
>
> For now, I can offer a new implementation of custom textual output ports
> built upon custom binary ports and the 'utf8->string!' that I previously
> sent.  See attached.
>
>      Thanks,
>        Mark
>
> GNU Guile 2.2.4
> Copyright (C) 1995-2017 Free Software Foundation, Inc.
>
> Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
> This program is free software, and you are welcome to redistribute it
> under certain conditions; type `,show c' for details.
>
> Enter `,help' for help.
> scheme@(guile-user)> (load "utf8-decoder.scm")
> scheme@(guile-user)> (load "guile-new-custom-textual-ports.scm")
> scheme@(guile-user)> (define (my-write! str start count)
>                        (pk 'my-write! (substring str start (+ start count=
)))
>                        count)
> scheme@(guile-user)> (define port (make-custom-textual-output-port "test1=
" my-write! #f #f #f))
> scheme@(guile-user)> (display "Hello =CE=BB world!" port)
> scheme@(guile-user)> (force-output port)
>
> ;;; (my-write! "Hello =CE=BB world!")
> scheme@(guile-user)> (string->utf8 "=CE=BB")
> $2 =3D #vu8(206 187)
> scheme@(guile-user)> (string->utf8 "Hello =CE=BB world!")
> $3 =3D #vu8(72 101 108 108 111 32 206 187 32 119 111 114 108 100 33)
> scheme@(guile-user)> (put-bytevector port #vu8(72 101 108 108 111 32 206))
> scheme@(guile-user)> (force-output port)
>
> ;;; (my-write! "Hello ")
> scheme@(guile-user)> (put-bytevector port #vu8(187 32 119 111 114 108 100=
 33))
> scheme@(guile-user)> (force-output port)
>
> ;;; (my-write! "=CE=BB world!")
> scheme@(guile-user)>
>
> ;;; Copyright =C2=A9 2019 Mark H Weaver <mhw@HIDDEN>
> ;;;
> ;;; 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, either version 3 of the License, or
> ;;; (at your option) any later version.
> ;;;
> ;;; 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.
> ;;;
> ;;; You should have received a copy of the GNU General Public License
> ;;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
>
> (use-modules (rnrs io ports))
>
> (define (make-custom-textual-output-port id
>                                          write!
>                                          get-position
>                                          set-position!
>                                          close)
>   (let (;; Allocate a per-port string buffer which will be used as a
>         ;; temporary buffer for decoding, to avoid heap allocation
>         ;; during normal operation.
>         (buffer (make-string 4096))
>         ;; 'state' is the UTF-8 decoder state, which represents a
>         ;; proper prefix of a well-formed UTF-8 byte sequence.  These
>         ;; are bytes that 'binary-write!' has accepted and reported as
>         ;; having been written, although we are not able to decode
>         ;; them into a character to pass to (textual) 'write!' until
>         ;; more bytes arrive.
>         (state 0))
>     (define (binary-write! bv start count)
>       (call-with-values (lambda ()
>                           ;; XXX FIXME: Consider performing this
>                           ;; decoding strictly.
>                           (utf8->string! state bv start (+ start count)
>                                          buffer 0 (string-length buffer)))
>         (lambda (new-state bv-pos char-count)
>           (let* (;; Avoid calling write! with (char-count =3D 0) unless
>                  ;; (count =3D 0) was passed to us, because calling
>                  ;; 'write!' with count=3D0 has a special meaning: it
>                  ;; means to pass an EOF object to the byte/character
>                  ;; sink.
>                  (chars-accepted (if (and (zero? char-count)
>                                           (not (zero? count)))
>                                      0
>                                      (write! buffer 0 char-count)))
>                  ;; Compute 'bytes-accepted' in such a way that the
>                  ;; bytes from STATE are not included, because they
>                  ;; were passed to us in previous calls, and are not
>                  ;; part of the bytevector range that we are now being
>                  ;; asked to write.  However, it's important to note
>                  ;; that if 'write!' did not accept the bytes from
>                  ;; STATE, 'bytes-accepted' will be negative.  We must
>                  ;; handle that case specially below.
>                  (bytes-accepted (- count (string-utf8-length
>                                            (substring buffer
>                                                       chars-accepted
>                                                       char-count)))))
>             ;; If 'bytes-accepted' is negative, that means the bytes
>             ;; from STATE were not written.  This can only happen if
>             ;; 'chars-accepted' is 0, because 'write!' can only accept
>             ;; whole code points, and the bytes from STATE are part of
>             ;; at most a single code point.  In this case, we must
>             ;; leave STATE unchanged and return 0.
>             (if (negative? bytes-accepted)
>                 0
>                 (begin
>                   (set! state new-state)
>                   bytes-accepted))))))
>     (define (binary-close)
>       (set! buffer #f)
>       (when close (close)))
>     (define port
>       (make-custom-binary-output-port id
>                                       binary-write!
>                                       get-position
>                                       set-position!
>                                       binary-close))
>     ;; Always use UTF-8 as the encoding for custom textual ports, as
>     ;; an internal implementation detail, to ensure that all Unicode
>     ;; characters will pass through regardless of the current locale.
>     (set-port-encoding! port "UTF-8")
>     port))





Last modified: Mon, 20 Sep 2021 06:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.