* bug#35350: Some compile output still leaks through with --verbosity=1
@ 2019-04-20 23:53 Mark H Weaver
2019-04-21 20:15 ` Ludovic Courtès
0 siblings, 1 reply; 13+ messages in thread
From: Mark H Weaver @ 2019-04-20 23:53 UTC (permalink / raw)
To: 35350
Sometimes when compiling a package with --verbosity=1, 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=1 --keep-failed --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-checkout.drv...
building /gnu/store/v7a1y4v0nwrq64ddr7kdm4855gzjrzrc-console-setup-1.191.drv...
building /gnu/store/04wdi408fbl9bmnzdy4dwxd135cy9jss-gpgme-1.13.0.tar.bz2.drv...
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.drv...
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.drv...
\ 'build' phase�@ build-log 30033 4096
� 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/gio/gsimpleasyncresult.h:122:21: note: declared here
void g_simple_async_result_set_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6136:5: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c: In function ‘sms_pdu_part_list_ready’:
mm-broadband-modem.c:6172:9: warning: ‘g_simple_async_result_take_error’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6179:9: warning: ‘g_simple_async_result_take_error’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6205:5: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c: In function ‘list_parts_lock_storages_ready’:
mm-broadband-modem.c:6219:9: warning: ‘g_simple_async_result_take_error’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c: In function ‘modem_messaging_load_initial_sms_parts’:
mm-broadband-modem.c:6249:15: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
ctx->self = g_object_ref (self);
^
mm-broadband-modem.c:6250:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
ctx->result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem.c: In function ‘hdr_state_context_complete_and_free’:
mm-broadband-modem.c:6365:5: warning: ‘g_simple_async_result_complete’ 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/gio/gsimpleasyncresult.h:104:21: note: declared here
void g_simple_async_result_complete (GSimpleAsyncResult *simple);
^
mm-broadband-modem.c: In function ‘modem_cdma_get_hdr_state_finish’:
mm-broadband-modem.c:6382:5: warning: ‘g_simple_async_result_propagate_error’ 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/gio/gsimpleasyncresult.h:119:21: note: declared here
gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6385:5: warning: ‘g_simple_async_result_get_op_res_gpointer’ is deprecated [-Wdeprecated-declarations]
results = 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/gio/gsimpleasyncresult.h:79:21: note: declared here
gpointer g_simple_async_result_get_op_res_gpointer (GSimpleAsyncResult *simple);
^
mm-broadband-modem.c: In function ‘hdr_subsys_state_info_ready’:
mm-broadband-modem.c:6405:9: warning: ‘g_simple_async_result_set_from_error’ 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/gio/gsimpleasyncresult.h:113:21: note: declared here
void g_simple_async_result_set_from_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6415:9: warning: ‘g_simple_async_result_set_error’ 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/gio/gsimpleasyncresult.h:122:21: note: declared here
void g_simple_async_result_set_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6433:5: warning: ‘g_simple_async_result_set_op_res_gpointer’ is deprecated [-Wdeprecated-declarations]
g_simple_async_result_set_op_res_gpointer (ctx->result, results, (GDestroyNotify)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/gio/gsimpleasyncresult.h:75:21: note: declared here
void g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c: In function ‘modem_cdma_get_hdr_state’:
mm-broadband-modem.c:6448:9: warning: ‘g_simple_async_report_error_in_idle’ 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-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gio/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 = g_object_ref (self);
^
mm-broadband-modem.c:6460:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
ctx->result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem.c: In function ‘call_manager_state_context_complete_and_free’:
mm-broadband-modem.c:6497:5: warning: ‘g_simple_async_result_complete’ 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/gio/gsimpleasyncre@ build-log 30033 4096
sult.h:104:21: note: declared here
void g_simple_async_result_complete (GSimpleAsyncResult *simple);
^
mm-broadband-modem.c: In function ‘modem_cdma_get_call_manager_state_finish’:
mm-broadband-modem.c:6513:5: warning: ‘g_simple_async_result_propagate_error’ 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/gio/gsimpleasyncresult.h:119:21: note: declared here
gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6516:5: warning: ‘g_simple_async_result_get_op_res_gpointer’ is deprecated [-Wdeprecated-declarations]
results = 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/gio/gsimpleasyncresult.h:79:21: note: declared here
gpointer g_simple_async_result_get_op_res_gpointer (GSimpleAsyncResult *simple);
^
mm-broadband-modem.c: In function ‘cm_subsys_state_info_ready’:
mm-broadband-modem.c:6535:9: warning: ‘g_simple_async_result_take_error’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6546:9: warning: ‘g_simple_async_result_set_error’ 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/gio/gsimpleasyncresult.h:122:21: note: declared here
void g_simple_async_result_set_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6561:5: warning: ‘g_simple_async_result_set_op_res_gpointer’ is deprecated [-Wdeprecated-declarations]
g_simple_async_result_set_op_res_gpointer (ctx->result, results, (GDestroyNotify)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/gio/gsimpleasyncresult.h:75:21: note: declared here
void g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c: In function ‘modem_cdma_get_call_manager_state’:
mm-broadband-modem.c:6576:9: warning: ‘g_sim@ build-log 30033 4096
ple_async_report_error_in_idle’ 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-broadband-modem.c:27:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gio/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 = g_object_ref (self);
^
mm-broadband-modem.c:6588:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
ctx->result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem.c: In function ‘cdma1x_serving_system_context_complete_and_free’:
mm-broadband-modem.c:6627:5: warning: ‘g_simple_async_result_complete’ 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/gio/gsimpleasyncresult.h:104:21: note: declared here
void g_simple_async_result_complete (GSimpleAsyncResult *simple);
^
mm-broadband-modem.c: In function ‘modem_cdma_get_cdma1x_serving_system_finish’:
mm-broadband-modem.c:6656:5: warning: ‘g_simple_async_result_propagate_error’ 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/gio/gsimpleasyncresult.h:119:21: note: declared here
gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6659:5: warning: ‘g_simple_async_result_get_op_res_gpointer’ is deprecated [-Wdeprecated-declarations]
results = (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/gio/gsimpleasyncresult.h:79:21: note: declared here
gpointer g_simple_async_result_get_op_res_gpointer (GSimpleAsyncResult *simple);
^
mm-broadband-modem.c: In function ‘css_query_ready’:
mm-broadband-modem.c:6685:9: warning: ‘g_simple_async_result_take_e@ build-log 30033 4096
rror’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6708:13: warning: ‘g_simple_async_result_set_error’ 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/gio/gsimpleasyncresult.h:122:21: note: declared here
void g_simple_async_result_set_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6748:9: warning: ‘g_simple_async_result_set_error’ 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/gio/gsimpleasyncresult.h:122:21: note: declared here
void g_simple_async_result_set_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6777:9: warning: ‘g_simple_async_result_take_error’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6790:5: warning: ‘g_simple_async_result_set_op_res_gpointer’ is deprecated [-Wdeprecated-declarations]
g_simple_async_result_set_op_res_gpointer (ctx->result, results, (GDestroyNotify)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/gio/gsimpleasyncresult.h:75:21: note: declared here
void g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c: In function ‘qcdm_cdma_status_ready’:
mm-broadband-modem.c:6854:5: warning: ‘g_simple_async_result_set_op_res_gpointer’ is deprecated [-Wdeprecated-declarations]
g_simple_async_result_set_op_res_gpointer (ctx->result, results, (GDestroyNotify)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/gsimpleasyncresult.h:75:21: note: declared here
void g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c: In function ‘modem_cdma_get_cdma1x_serving_system’:
mm-broadband-modem.c:6867:15: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
ctx->self = g_object_ref (self);
^
mm-broadband-modem.c:6868:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
ctx->result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem.c: In function ‘modem_cdma_get_service_status_finish’:
mm-broadband-modem.c:6909:5: warning: ‘g_simple_async_result_propagate_error’ 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/gio/gsimpleasyncresult.h:119:21: note: declared here
gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6912:5: warning: ‘g_simple_async_result_get_op_res_gboolean’ is deprecated [-Wdeprecated-declarations]
*has_cdma_service = g_simple_async_result_get_op_res_gboolean (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/gio/gsimpleasyncresult.h:91:21: note: declared here
gboolean g_simple_async_result_get_op_res_gboolean (GSimpleAsyncResult *simple);
^
mm-broadband-modem.c: In function ‘cad_query_ready’:
mm-broadband-modem.c:6926:9: warning: ‘g_simple_async_result_take_error’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6933:13: warning: ‘g_simple_async_result_set_error’ 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 4096
include/glib-2.0/gio/gsimpleasyncresult.h:122:21: note: declared here
void g_simple_async_result_set_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6940:13: warning: ‘g_simple_async_result_set_op_res_gboolean’ is deprecated [-Wdeprecated-declarations]
g_simple_async_result_set_op_res_gboolean (simple, (cad == 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6943:5: warning: ‘g_simple_async_result_complete’ 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/gio/gsimpleasyncresult.h:104:21: note: declared here
void g_simple_async_result_complete (GSimpleAsyncResult *simple);
^
mm-broadband-modem.c: In function ‘modem_cdma_get_service_status’:
mm-broadband-modem.c:6954:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem.c: In function ‘detailed_registration_state_context_complete_and_free’:
mm-broadband-modem.c:6988:9: warning: ‘g_simple_async_result_take_error’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6995:9: warning: ‘g_simple_async_result_set_op_res_gpointer’ 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/gio/gsimpleasyncresult.h:75:21: note: declared here
void g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple,
^
mm-broadband-modem.c:6998:5: warning: ‘g_simple_async_result_complete’ 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/gio/gsimpleasyncresult.h:104:21: note: declared here
void g_simple_async_result_complete (GSimpleAsyncResult *simple);
^
mm-broadband-modem.c: In function ‘modem_cdma_get_detailed_registration_state_finish’:
mm-broadband-modem.c:7014:5: warning: ‘g_simple_async_result_propagate_error’ 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/gio/gsimpleasyncresult.h:119:21: note: declared here
gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple,
^
| 'build' phase��@ build-log 30033 4096
��g_simple_async_result_propagate_error’ 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-sim-mbim.c:25:
/gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/include/glib-2.0/gio/gsimpleasyncresult.h:119:21: note: declared here
gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple,
^
mm-sim-mbim.c:283:5: warning: ‘g_simple_async_result_get_op_res_gpointer’ is deprecated [-Wdeprecated-declarations]
provider = (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/gio/gsimpleasyncresult.h:79:21: note: declared here
gpointer g_simple_async_result_get_op_res_gpointer (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c:7964:5: warning: ‘g_simple_async_result_set_op_res_gboolean’ is deprecated [-Wdeprecated-declarations]
g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
^
mm-sim-mbim.c: In function ‘load_operator_name_ready’:
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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-sim-mbim.c:303:9: warning: ‘g_simple_async_result_set_op_res_gpointer’ is deprecated [-Wdeprecated-declarations]
g_simple_async_result_set_op_res_gpointer (simple, provider, (GDestroyNotify)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/gio/gsimpleasyncresult.h:75:21: note: declared here
void g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple,
^
mm-sim-mbim.c:305:9: warning: ‘g_simple_async_result_take_error’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
mm-sim-mbim.c:309:5: warning: ‘g_simple_async_result_complete’ is deprecated [-Wdeprecated-declarations]
g_simple_async_result_complete (simple);
^
mm-broadband-modem-qmi.c: In function ‘disable_location_gathering’:
In file included from /gn@ build-log 30033 4096
u/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/gio/gsimpleasyncresult.h:104:21: note: declared here
void g_simple_async_result_complete (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c:7979:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-sim-mbim.c: In function ‘load_operator_name’:
mm-sim-mbim.c:325:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem-qmi.c:7987:9: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c:7988:9: warning: ‘g_simple_async_result_complete_in_idle’ 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/gio/gsimpleasyncresult.h:106:21: note: declared here
void g_simple_async_result_complete_in_idle (GSimpleAsyncResult *simple);
^
mm-sim-mbim.c: In function ‘send_pin_finish’:
mm-sim-mbim.c:345:5: warning: ‘g_simple_async_result_propagate_error’ 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/gio/gsimpleasyncresult.h:119:21: note: declared here
gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c:8001:15: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
ctx->self = g_object_ref (self);
^
mm-broadband-modem-qmi.c:8002:17: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
ctx->client = g_object_ref (client);
^
mm-sim-mbim.c: In function ‘pin_set_enter_ready’:
mm-sim-mbim.c:380:9: warning: ‘g_simple_async_result_take_error’ is deprecated [-Wdeprecated-declarations]
g_simple_async_result_take_error (simple, error);
^
mm-broadband-modem-qmi.c:8032:5: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-sim-mbim.c:382:9: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-sim-mbim.c:383:5: warning: ‘g_simple_async_result_complete’ 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/gio/gsimpleasyncresult.h:104:21: note: declared here
void g_simple_async_result_complete (GSimpleAsyncResult *simple);
^
mm-sim-mbim.c: In function ‘send_pin’:
mm-sim-mbim.c:403:5: warning: ‘g_simple_async_result_new’ @ build-log 30033 4096
is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem-qmi.c: In function ‘enable_location_gathering_context_complete_and_free’:
mm-broadband-modem-qmi.c:8074:5: warning: ‘g_simple_async_result_complete’ 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/gio/gsimpleasyncresult.h:104:21: note: declared here
void g_simple_async_result_complete (GSimpleAsyncResult *simple);
^
mm-sim-mbim.c:413:9: warning: ‘g_simple_async_result_take_error’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
mm-sim-mbim.c:414:9: warning: ‘g_simple_async_result_complete_in_idle’ 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/gio/gsimpleasyncresult.h:106:21: note: declared here
void g_simple_async_result_complete_in_idle (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c: In function ‘enable_location_gathering_finish’:
mm-broadband-modem-qmi.c:8087:5: warning: ‘g_simple_async_result_propagate_error’ 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/gio/gsimpleasyncresult.h:119:21: note: declared here
gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c: In function ‘ser_location_ready’:
mm-broadband-modem-qmi.c:81@ build-log 30033 1705
01:9: warning: ‘g_simple_async_result_take_error’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c:8108:9: warning: ‘g_simple_async_result_take_error’ 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/gio/gsimpleasyncresult.h:116:21: note: declared here
void g_simple_async_result_take_error (GSimpleAsyncResult *simple,
^
| 'build' phase��@ build-log 30033 4096
��g_simple_async_result_complete’ 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-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/gio/gsimpleasyncresult.h:104:21: note: declared here
void g_simple_async_result_complete (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c: In function ‘oma_cancel_session’:
mm-broadband-modem-qmi.c:8696:9: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem-qmi.c: In function ‘common_oma_setup_cleanup_unsolicited_events_finish’:
mm-broadband-modem-qmi.c:8757:5: warning: ‘g_simple_async_result_propagate_error’ 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/gio/gsimpleasyncresult.h:119:21: note: declared here
gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c: In function ‘common_setup_cleanup_oma_unsolicited_events’:
mm-broadband-modem-qmi.c:8774:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem-qmi.c:8782:9: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c:8783:9: warning: ‘g_simple_async_result_complete_in_idle’ 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/gio/gsimpleasyncresult.h:106:21: note: declared here
void g_simple_async_result_complete_in_idle (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c:8805:5: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c:8806:5: warning: ‘g_simple_async_result_complete_in_idle’ 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/gio/gsimpleasyncresult.h:106:21: note: declared here
void g_simple_async_result_complete_in_idle (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c: In function ‘enable_oma_unsolicited_events_context_complete_and_free’:
mm-broadband-modem-qmi.c:8845:5: warning: ‘g_simple_async_result_complete’ 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/gio/gsimpleasyncresult.h:104:21: note: declared here
void g_simple_async_result_complete (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c: In function ‘common_oma_enable_disa@ build-log 30033 4096
ble_unsolicited_events_finish’:
mm-broadband-modem-qmi.c:8857:5: warning: ‘g_simple_async_result_propagate_error’ 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/gio/gsimpleasyncresult.h:119:21: note: declared here
gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c: In function ‘ser_oma_indicator_ready’:
mm-broadband-modem-qmi.c:8882:5: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c: In function ‘common_enable_disable_oma_unsolicited_events’:
mm-broadband-modem-qmi.c:8902:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem-qmi.c:8910:9: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c:8911:9: warning: ‘g_simple_async_result_complete_in_idle’ 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/gio/gsimpleasyncresult.h:106:21: note: declared here
void g_simple_async_result_complete_in_idle (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c:8918:17: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
ctx->client = g_object_ref (client);
^
mm-broadband-modem-qmi.c: In function ‘firmware_check_support_context_complete_and_free’:
mm-broadband-modem-qmi.c:8993:5: warning: ‘g_simple_async_result_complete’ 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/gio/gsimpleasyncresult.h:104:21: note: declared here
void g_simple_async_result_complete (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c: In function ‘firmware_check_support_finish’:
mm-broadband-modem-qmi.c:9007:5: warning: ‘g_simple_async_result_get_op_res_gboolean’ is deprecated [-Wdeprecated-declarations]
return g_simple_async_result_get_op_res_gboolean (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-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/gio/gsimpleasyncresult.h:91:21: note: declared here
gboolean g_simple_async_result_get_op_res_gboolean (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c: In function ‘get_next_image_info’:
mm-broadband-modem-qmi.c:9121:13: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c:9123:13: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c: In function ‘list_stored_images_ready’:
mm-broadband-modem-qmi.c:9163:9: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c:9208:9: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c:9256:9: warning: ‘g_simple_async_result_set_op_res_gboolean’ 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/gio/gsimpleasyncresult.h:88:21: note: declared here
void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c: In function ‘firmware_check_support’:
mm-broadband-modem-qmi.c:9283:15: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
ctx->self = g_object_ref (self);
^
mm-broadband-modem-qmi.c:9284:17: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
ctx->client = g_object_ref (client);
^
mm-broadband-modem-qmi.c:9285:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
ctx->result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem-qmi.c: In function ‘firmware_load_list_finish’:
mm-broadband-modem-qmi.c:9307:5: warning: ‘g_simple_async_result_get_op_res_gpointer’ is deprecated [-Wdeprecated-declarations]
return (GList *)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-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/gio/gsimpleasyncresult.h:79:21: note: declared here
gpointer g_simple_async_result_get_op_res_gpointer (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c: In function ‘firmware_load_list’:
mm-broadband-modem-qmi.c:9319:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem-qmi.c:9328:5: warning: ‘g_simple_async_result_set_op_res_gpointer’ 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/gio/gsimpleasyncresult.h:75:21: note: declared here
void g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c:9329:5: warning: ‘g_simple_async_result_complete_in_idle’ 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/gio/gsimpleasyncresult.h:106:21: note: declared here
void g_simple_async_result_complete_in_idle (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c: In function ‘firmware_load_current_finish’:
mm-broadband-modem-qmi.c:9341:5: warning: ‘g_simple_async_result_get_op_res_gpointer’ i@ build-log 30033 4096
s deprecated [-Wdeprecated-declarations]
return (MMFirmwareProperties *)g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res));
^
CC ModemManager-mm-bearer-mbim.o
mm-bearer-mbim.c: In function ‘peek_ports’:
mm-bearer-mbim.c:73:13: warning: ‘g_simple_async_report_error_in_idle’ 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/gio/gsimpleasyncresult.h:79:21: note: declared here
gpointer g_simple_async_result_get_op_res_gpointer (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c: In function ‘firmware_load_current’:
mm-broadband-modem-qmi.c:9352:5: warning: ‘g_simple_async_result_new’ is deprecated: Use 'g_task_new' instead [-Wdeprecated-declarations]
result = 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/gio/gsimpleasyncresult.h:51:21: note: declared here
GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object,
^
mm-broadband-modem-qmi.c:9358:5: warning: ‘g_simple_async_result_set_op_res_gpointer’ 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/gio/gsimpleasyncresult.h:75:21: note: declared here
void g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple,
^
mm-broadband-modem-qmi.c:9362:5: warning: ‘g_simple_async_result_complete_in_idle’ 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/gio/gsimpleasyncresult.h:106:21: note: declared here
void g_simple_async_result_complete_in_idle (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c: In function ‘firmware_change_current_context_complete_and_free’:
mm-broadband-modem-qmi.c:9379:5: warning: ‘g_simple_async_result_complete_in_idle’ is deprecated [-Wdeprecated-declarations]
g_simple_async_result_complete_in_idle (ctx->result@ build-log 30033 2129
);
^
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/gio/gsimpleasyncresult.h:106:21: note: declared here
void g_simple_async_result_complete_in_idle (GSimpleAsyncResult *simple);
^
mm-broadband-modem-qmi.c: In function ‘firmware_change_current_finish’:
mm-broadband-modem-qmi.c:9393:5: warning: ‘g_simple_async_result_propagate_error’ 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/gio/gsimpleasyncresult.h:119:21: note: declared here
gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *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/gio/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-checkout.drv...
building /gnu/store/d1pgfdvh6l6znqmfkp8sy104gczh62b8-libgit2-0.28.1-checkout.drv...
building /gnu/store/2q2l0kvwfqnq9ggak495ihbzcyh1jfv8-http-parser-2.9.2.drv...
building /gnu/store/79kqyg6njag5gbycj72i5bfa3irpiafr-libgit2-0.28.tar.xz.drv...
/
--8<---------------cut here---------------end--------------->8---
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-04-20 23:53 bug#35350: Some compile output still leaks through with --verbosity=1 Mark H Weaver
@ 2019-04-21 20:15 ` Ludovic Courtès
2019-04-22 23:52 ` Mark H Weaver
0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2019-04-21 20:15 UTC (permalink / raw)
To: Mark H Weaver; +Cc: 35350
Hi Mark,
Mark H Weaver <mhw@netris.org> skribis:
> Sometimes when compiling a package with --verbosity=1, some parts of the
> compile output leak through. For example, see the transcript below.
Weird. What’s the value of --max-jobs? Is offloading enabled?
Presumably both the client and daemon are recent, right?
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-04-21 20:15 ` Ludovic Courtès
@ 2019-04-22 23:52 ` Mark H Weaver
2019-04-23 8:45 ` Mark H Weaver
2019-04-23 10:12 ` Ludovic Courtès
0 siblings, 2 replies; 13+ messages in thread
From: Mark H Weaver @ 2019-04-22 23:52 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 35350
Hi Ludovic,
Ludovic Courtès <ludo@gnu.org> writes:
> Mark H Weaver <mhw@netris.org> skribis:
>
>> Sometimes when compiling a package with --verbosity=1, 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".
> What’s 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 =>
(guix-configuration
(inherit config)
(use-substitutes? #f)
(authorized-keys '())
(substitute-urls '())
(extra-options '("--gc-keep-derivations=yes"
"--gc-keep-outputs=yes")))))
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
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-04-22 23:52 ` Mark H Weaver
@ 2019-04-23 8:45 ` Mark H Weaver
2019-04-23 10:12 ` Ludovic Courtès
1 sibling, 0 replies; 13+ messages in thread
From: Mark H Weaver @ 2019-04-23 8:45 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 35350
> What’s the value of --max-jobs?
max-jobs is 1. Please disregard my previous response.
Thanks,
Mark
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-04-22 23:52 ` Mark H Weaver
2019-04-23 8:45 ` Mark H Weaver
@ 2019-04-23 10:12 ` Ludovic Courtès
2019-04-26 19:09 ` Mark H Weaver
1 sibling, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2019-04-23 10:12 UTC (permalink / raw)
To: Mark H Weaver; +Cc: 35350
[-- Attachment #1: Type: text/plain, Size: 4037 bytes --]
Hi Mark,
Mark H Weaver <mhw@netris.org> skribis:
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> Mark H Weaver <mhw@netris.org> skribis:
>>
>>> Sometimes when compiling a package with --verbosity=1, 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’d ‘guix build’ with an additional ‘pk’¹ to see what happens, and
here’s what leads to the wrong “write(2, "�@ build-log…")” call:
--8<---------------cut here---------------start------------->8---
read(13, "gmlo\0\0\0\0", 8) = 8
read(13, "\27\20\0\0\0\0\0\0", 8) = 8
read(13, "@ build-log 22090 4096\n […] warning: \342\200", 4119) = 4119
read(13, "\0", 1) = 1
write(1, "\n", 1) = 1
write(1, ";;; (write 1008 <> #f 0)\n", 25) = 25
write(1, "\n", 1) = 1
write(1, ";;; (write 985 <> 22090 4096)\n", 30) = 30
write(1, "\n", 1) = 1
write(1, ";;; (write 1008 <> 22090 3111)\n", 31) = 31
write(1, "\n", 1) = 1
write(1, ";;; (write 1008 <> 22090 2103)\n", 31) = 31
write(1, "\n", 1) = 1
write(1, ";;; (write 1008 <> 22090 1095)\n", 31) = 31
write(1, "\n", 1) = 1
write(1, ";;; (write 88 <> 22090 87)\n", 27) = 27
write(2, "\r\33[K\\ 'build' phase", 19) = 19
[…]
write(2, "\r\33[K\\ 'build' phase", 19) = 19
write(1, "\n", 1) = 1
write(1, ";;; (write 1 <> #f 0)\n", 22) = 22
read(13, "gmlo\0\0\0\0", 8) = 8
read(13, "\27\20\0\0\0\0\0\0", 8) = 8
read(13, "@ build-log 22090 4096\n\230g_simple_async_result_take_error\342\200\231 is deprecated[…]", 4119) = 4119
read(13, "\0", 1) = 1
write(1, "\n", 1) = 1
write(1, ";;; (write 1008 <> #f 0)\n", 25) = 25
write(2, "\357\277\275@ build-log 22090 4096\n", 26) = 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 ‘process-stderr’ in (guix store) gets that byte
string from the daemon, passes it through ‘read-maybe-utf8-string’,
which replaces the last two bytes with REPLACEMENT CHARACTER, which is
itself a 3-byte sequence.
Thus, we have this extra byte that’s being inserted. That confuses the
whole machinery since the build log was announced as being 4096-byte
long, and it’s now 4097-byte long.
Internally, ‘build-event-output-port’ keeps the last byte of the
REPLACEMENT CHARACTER sequence in the ‘%fragments’ buffer.
Consequently, the “@ build-log” string that comes next doesn’t 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 ‘build-event-output-port’ is working as expected. The problem is the
first layer of UTF-8 decoding that happens in ‘process-stderr’, in the
‘%stderr-next’ case. We would need to disable it, but only if the build
output port is ‘build-event-output-port’ (i.e., it’s capable of
interpreting “multiplexed build output” correctly.)
Thanks,
Ludo’.
¹ pk:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 469 bytes --]
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
^ permalink raw reply related [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-04-23 10:12 ` Ludovic Courtès
@ 2019-04-26 19:09 ` Mark H Weaver
2019-04-27 0:45 ` Mark H Weaver
2019-04-27 16:36 ` Ludovic Courtès
0 siblings, 2 replies; 13+ messages in thread
From: Mark H Weaver @ 2019-04-26 19:09 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 35350
[-- Attachment #1: Type: text/plain, Size: 2456 bytes --]
Hi Ludovic,
Thanks for investigating this.
Ludovic Courtès <ludo@gnu.org> 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 ‘process-stderr’ in (guix store) gets that byte
> string from the daemon, passes it through ‘read-maybe-utf8-string’,
> 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
[-- Attachment #2: UTF-8 decoder implementation --]
[-- Type: text/plain, Size: 8589 bytes --]
;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
;;;
;;; 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
;; ===========================
;; 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
;; ====================
;; 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* ...)
(define (continue i j ...)
(if (< i end)
(let ((byte (bytevector-u8-ref bv i)))
(cond ((<= byte #x7F) (output byte (+ i 1) j ...))
((<= #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 (<= #x80 byte #xBF))
(error state i j ...))
((<= 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 (<= #xE0A0 state^ #xED9F)
(<= #xEE80 state^ #xEFBF))
(got-2/3 state^ (+ i 1) j ...))
((<= #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 (<= #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 (<= #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 (<= #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 ...))
((<= state #xF4) (got-1 state i j ...))
((<= state #xEFBF) (got-2/3 state i j ...))
((<= 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 handlers
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 (= i bv-len)
(= j (string-length ss))
(string=? ss (substring s 0 j))))))
(iota 5 1)))
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-04-26 19:09 ` Mark H Weaver
@ 2019-04-27 0:45 ` Mark H Weaver
2019-04-27 7:56 ` Mark H Weaver
2019-04-27 16:36 ` Ludovic Courtès
1 sibling, 1 reply; 13+ messages in thread
From: Mark H Weaver @ 2019-04-27 0:45 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 35350
[-- Attachment #1: Type: text/plain, Size: 160 bytes --]
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
[-- Attachment #2: UTF-8 decoder, v2 --]
[-- Type: text/plain, Size: 13259 bytes --]
;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
;;;
;;; 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
;; ===========================
;; 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
;; ====================
;; 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.
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:
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.
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.
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).
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.
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 ...).
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:
(1) as part of a well-formed UTF-8 byte sequence, via the output
expressions (E1 E1* ...), or
(2) as part of a 'maximal subpart of an ill-formed subsequence',
via the error expressions (E2 E2* ...), or
(3) as part of the new state.
(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* ...)
(define (continue i j ...)
(if (< i end)
(let ((byte (bytevector-u8-ref bv i)))
(cond ((<= byte #x7F) (output byte (+ i 1) j ...))
((<= #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 (<= #x80 byte #xBF))
(error state i j ...))
((<= 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 (<= #xE0A0 state^ #xED9F)
(<= #xEE80 state^ #xEFBF))
(got-2/3 state^ (+ i 1) j ...))
((<= #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 (<= #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 (<= #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 (<= #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 ...))
((<= state #xF4) (got-1 state i j ...))
((<= state #xEFBF) (got-2/3 state i j ...))
((<= 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 handlers
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)
(= i bv-len)
(= j (string-length ss))
(string=? ss (substring s 0 j))))))
(iota 5 1)))
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-04-27 0:45 ` Mark H Weaver
@ 2019-04-27 7:56 ` Mark H Weaver
0 siblings, 0 replies; 13+ messages in thread
From: Mark H Weaver @ 2019-04-27 7:56 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 35350
[-- Attachment #1: Type: text/plain, Size: 156 bytes --]
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
[-- Attachment #2: UTF-8 decoder v3 --]
[-- Type: text/plain, Size: 19104 bytes --]
;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
;;;
;;; 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
;; ===========================
;; 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
;; ====================
;; 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* ...)
(define (continue i j ...)
(if (< i end)
(let ((byte (bytevector-u8-ref bv i)))
(cond ((<= byte #x7F) (output byte (+ i 1) j ...))
((<= #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 (<= #x80 byte #xBF))
(error state i j ...))
((<= 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 (<= #xE0A0 state^ #xED9F)
(<= #xEE80 state^ #xEFBF))
(got-2/3 state^ (+ i 1) j ...))
((<= #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 (<= #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 (<= #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 (<= #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 ...))
((<= state #xF4) (got-1 state i j ...))
((<= state #xEFBF) (got-2/3 state i j ...))
((<= 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 handlers
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)
(= i bv-len)
(= j (string-length ss))
(string=? ss (substring s 0 j))))))
(iota 5 1)))
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-04-26 19:09 ` Mark H Weaver
2019-04-27 0:45 ` Mark H Weaver
@ 2019-04-27 16:36 ` Ludovic Courtès
2019-04-30 20:26 ` Mark H Weaver
1 sibling, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2019-04-27 16:36 UTC (permalink / raw)
To: Mark H Weaver; +Cc: 35350
Hi Mark,
Mark H Weaver <mhw@netris.org> skribis:
> Ludovic Courtès <ludo@gnu.org> 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 ‘process-stderr’ in (guix store) gets that byte
>> string from the daemon, passes it through ‘read-maybe-utf8-string’,
>> 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
‘process-stderr’ and leave that entirely to ‘build-event-output-port’.
However, ‘build-event-output-port’ would still fail to properly decode
split UTF-8 sequences, and for that we’d need to preserve decoder state
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’s something we should definitely add to Guile
proper. We can use it in Guix before or after it’s included in Guile.
Thank you!
Ludo’.
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-04-27 16:36 ` Ludovic Courtès
@ 2019-04-30 20:26 ` Mark H Weaver
2019-05-04 9:33 ` Ludovic Courtès
0 siblings, 1 reply; 13+ messages in thread
From: Mark H Weaver @ 2019-04-30 20:26 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 35350
Hi Ludovic,
Ludovic Courtès <ludo@gnu.org> writes:
> Mark H Weaver <mhw@netris.org> skribis:
>
>> Ludovic Courtès <ludo@gnu.org> 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 ‘process-stderr’ in (guix store) gets that byte
>>> string from the daemon, passes it through ‘read-maybe-utf8-string’,
>>> 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
> ‘process-stderr’ and leave that entirely to ‘build-event-output-port’.
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
‘process-stderr’, in the ‘%stderr-next’ case. We would need to
disable it, but only if the build output port is
‘build-event-output-port’ (i.e., it’s capable of interpreting
“multiplexed build output” 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, ‘build-event-output-port’ would still fail to properly decode
> split UTF-8 sequences, and for that we’d 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
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-04-30 20:26 ` Mark H Weaver
@ 2019-05-04 9:33 ` Ludovic Courtès
2019-05-04 18:53 ` Mark H Weaver
0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2019-05-04 9:33 UTC (permalink / raw)
To: Mark H Weaver; +Cc: 35350
Hi Mark,
Mark H Weaver <mhw@netris.org> skribis:
> Ludovic Courtès <ludo@gnu.org> 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
>> ‘process-stderr’ and leave that entirely to ‘build-event-output-port’.
>
> 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 ‘current-build-output-port’ comes from builds processes.
It’s usually UTF-8 but it can be anything, including binary garbage,
which should be gracefully handled.
That’s why ‘process-stderr’ currently uses ‘read-maybe-utf8-string’.
> Also, in your previous message you wrote:
>
> The problem is the first layer of UTF-8 decoding that happens in
> ‘process-stderr’, in the ‘%stderr-next’ case. We would need to
> disable it, but only if the build output port is
> ‘build-event-output-port’ (i.e., it’s capable of interpreting
> “multiplexed build output” 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 ‘build-event-output-port’, 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 ‘current-build-output-port’, right?)
I think you’re right. I’m not yet entirely sure what the implications
are. There’s 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’t yet have custom textual output ports that we
could rely on, do we?
I support your work to add that in Guile proper!
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-05-04 9:33 ` Ludovic Courtès
@ 2019-05-04 18:53 ` Mark H Weaver
2021-09-20 5:44 ` Sarah Morgensen
0 siblings, 1 reply; 13+ messages in thread
From: Mark H Weaver @ 2019-05-04 18:53 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 35350
[-- Attachment #1: Type: text/plain, Size: 5958 bytes --]
Hi Ludovic,
Ludovic Courtès <ludo@gnu.org> writes:
> Mark H Weaver <mhw@netris.org> skribis:
>
>> Ludovic Courtès <ludo@gnu.org> 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
>>> ‘process-stderr’ and leave that entirely to ‘build-event-output-port’.
>>
>> 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 ‘current-build-output-port’ comes from builds processes.
> It’s usually UTF-8 but it can be anything, including binary garbage,
> which should be gracefully handled.
>
> That’s why ‘process-stderr’ currently uses ‘read-maybe-utf8-string’.
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
>> ‘process-stderr’, in the ‘%stderr-next’ case. We would need to
>> disable it, but only if the build output port is
>> ‘build-event-output-port’ (i.e., it’s capable of interpreting
>> “multiplexed build output” 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 ‘build-event-output-port’, 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 ‘current-build-output-port’, right?)
Yes, indeed.
> I think you’re right. I’m not yet entirely sure what the implications
> are. There’s 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 λ
gets converted correctly. The test build process would output the λ 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’t 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 λ world!" port)
scheme@(guile-user)> (force-output port)
;;; (my-write! "Hello λ world!")
scheme@(guile-user)> (string->utf8 "λ")
$2 = #vu8(206 187)
scheme@(guile-user)> (string->utf8 "Hello λ world!")
$3 = #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! "λ world!")
scheme@(guile-user)>
--8<---------------cut here---------------end--------------->8---
[-- Attachment #2: New implementation of custom textual output ports for Guile --]
[-- Type: text/plain, Size: 4559 bytes --]
;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
;;;
;;; 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 = 0) unless
;; (count = 0) was passed to us, because calling
;; 'write!' with count=0 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))
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#35350: Some compile output still leaks through with --verbosity=1
2019-05-04 18:53 ` Mark H Weaver
@ 2021-09-20 5:44 ` Sarah Morgensen
0 siblings, 0 replies; 13+ messages in thread
From: Sarah Morgensen @ 2021-09-20 5:44 UTC (permalink / raw)
To: Mark H Weaver; +Cc: 35350
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@netris.org> writes:
> Hi Ludovic,
>
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> Mark H Weaver <mhw@netris.org> skribis:
>>
>>> Ludovic Courtès <ludo@gnu.org> 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
>>>> ‘process-stderr’ and leave that entirely to ‘build-event-output-port’.
>>>
>>> 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 ‘current-build-output-port’ comes from builds processes.
>> It’s usually UTF-8 but it can be anything, including binary garbage,
>> which should be gracefully handled.
>>
>> That’s why ‘process-stderr’ currently uses ‘read-maybe-utf8-string’.
>
> 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
>>> ‘process-stderr’, in the ‘%stderr-next’ case. We would need to
>>> disable it, but only if the build output port is
>>> ‘build-event-output-port’ (i.e., it’s capable of interpreting
>>> “multiplexed build output” 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 ‘build-event-output-port’, 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 ‘current-build-output-port’, right?)
>
> Yes, indeed.
>
>> I think you’re right. I’m not yet entirely sure what the implications
>> are. There’s 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 λ
> gets converted correctly. The test build process would output the λ 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’t 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 λ world!" port)
> scheme@(guile-user)> (force-output port)
>
> ;;; (my-write! "Hello λ world!")
> scheme@(guile-user)> (string->utf8 "λ")
> $2 = #vu8(206 187)
> scheme@(guile-user)> (string->utf8 "Hello λ world!")
> $3 = #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! "λ world!")
> scheme@(guile-user)>
>
> ;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
> ;;;
> ;;; 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 = 0) unless
> ;; (count = 0) was passed to us, because calling
> ;; 'write!' with count=0 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))
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2021-09-20 5:46 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-20 23:53 bug#35350: Some compile output still leaks through with --verbosity=1 Mark H Weaver
2019-04-21 20:15 ` Ludovic Courtès
2019-04-22 23:52 ` Mark H Weaver
2019-04-23 8:45 ` Mark H Weaver
2019-04-23 10:12 ` Ludovic Courtès
2019-04-26 19:09 ` Mark H Weaver
2019-04-27 0:45 ` Mark H Weaver
2019-04-27 7:56 ` Mark H Weaver
2019-04-27 16:36 ` Ludovic Courtès
2019-04-30 20:26 ` Mark H Weaver
2019-05-04 9:33 ` Ludovic Courtès
2019-05-04 18:53 ` Mark H Weaver
2021-09-20 5:44 ` Sarah Morgensen
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).