This hack makes Guile default to UTF-8. This avoids calls to `iconv_open'; `iconv_open' tries to open shared objects that aren't available during bootstrap, so using UTF-8 avoids that (and UTF-8 has built-in conversions in glibc, too.) diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c index 0ac5ea6a6..f73301e2f 100644 --- a/libguile/bytevectors.c +++ b/libguile/bytevectors.c @@ -1931,7 +1931,7 @@ utf_encoding_name (char *name, size_t utf_width, SCM endianness) if (scm_i_is_narrow_string (str)) \ { \ err = mem_iconveh (scm_i_string_chars (str), c_strlen, \ - "ISO-8859-1", c_utf_name, \ + "UTF-8", c_utf_name, \ iconveh_question_mark, NULL, \ &c_utf, &c_utf_len); \ if (SCM_UNLIKELY (err)) \ diff --git a/libguile/ports.c b/libguile/ports.c index 45e62f4e4..42012f3aa 100644 --- a/libguile/ports.c +++ b/libguile/ports.c @@ -974,7 +974,9 @@ canonicalize_encoding (const char *enc) char *ret; int i; - if (!enc || encoding_matches (enc, sym_ISO_8859_1)) + if (enc == NULL) + return sym_UTF_8; + if (encoding_matches (enc, sym_ISO_8859_1)) return sym_ISO_8859_1; if (encoding_matches (enc, sym_UTF_8)) return sym_UTF_8; @@ -4198,7 +4200,7 @@ scm_init_ports (void) scm_c_define ("%default-port-conversion-strategy", scm_make_fluid_with_default (sym_substitute)); /* Use the locale as the default port encoding. */ - scm_i_set_default_port_encoding (locale_charset ()); + scm_i_set_default_port_encoding ("UTF-8"); scm_c_register_extension ("libguile-" SCM_EFFECTIVE_VERSION, "scm_init_ice_9_ports", diff --git a/libguile/strings.c b/libguile/strings.c index 056b4c99f..63a6c050d 100644 --- a/libguile/strings.c +++ b/libguile/strings.c @@ -1579,7 +1579,7 @@ scm_i_default_string_failed_conversion_handler (void) SCM scm_from_locale_stringn (const char *str, size_t len) { - return scm_from_stringn (str, len, locale_charset (), + return scm_from_stringn (str, len, "UTF-8", scm_i_default_string_failed_conversion_handler ()); } @@ -1907,7 +1907,7 @@ char * scm_to_locale_stringn (SCM str, size_t *lenp) { return scm_to_stringn (str, lenp, - locale_charset (), + "UTF-8", scm_i_default_string_failed_conversion_handler ()); } @@ -2195,7 +2195,7 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding, scm_wrong_type_arg_msg (NULL, 0, str, "string"); if (encoding == NULL) - encoding = "ISO-8859-1"; + encoding = "UTF-8"; if (c_strcasecmp (encoding, "UTF-8") == 0) /* This is the most common case--e.g., when calling libc bindings @@ -2247,7 +2247,7 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding, if (scm_i_is_narrow_string (str)) { ret = mem_iconveh (scm_i_string_chars (str), ilen, - "ISO-8859-1", encoding, + "UTF-8", encoding, (enum iconv_ilseq_handler) handler, NULL, &buf, &len); guix-home-root-directory): Replace gnu/home-services.scm with "gnu/home/services.scm". Rename to gnu/home/services.scm. * gnu/local.mk (GNU_SYSTEM_MODULES): Rename gnu/home-services.scm to gnu/home/services.scm. * doc/he-config-bare-bones.scm: Replace (gnu home-services) with (gnu home services). * gnu/home.scm: Same. * gnu/home/services/fontutils.scm: Same. * gnu/home/services/mcron.scm: Same. * gnu/home/services/shells.scm: Same. * gnu/home/services/shepherd.scm: Same. * gnu/home/services/symlink-manager.scm: Same. * gnu/home/services/xdg.scm: Same. * guix/scripts/home.scm: Same. * guix/self.scm: Same. Oleg Pykhalov 2021-10-08gnu: Move (gnu home-services) to (gnu home services)....* gnu/home-services/configuration.scm: Move the content ... * gnu/home/services/configuration.scm: ... here. * doc/guix.texi: Replace (gnu home-services mcron) with (gnu home services mcron). Replace (gnu home-services) with (gnu home services). * gnu/home.scm: Replace (gnu home-services fontutils) with (gnu services fontutils). Replace (gnu home-services shells) with (gnu home services shells). Replace (gnu home-services symlink-manager) with (gnu home services symlink-manager). Replace (gnu home-services xdg) with (gnu home services xdg). * gnu/home-services/fontutils.scm: Rename to gnu/services/fontutils.scm. * gnu/home-services/mcron.scm: Move to gnu/home/services/mcron.scm. Replace (gnu home-services shepherd) with (gnu home services shepherd). * gnu/home-services.scm (%service-type-path): Search home services in "gnu/services". * gnu/home-services/shells.scm: Replace (gnu home-services configuration) with (gnu home services configuration). Rename to gnu/home/services/shells.scm. Replace (gnu home-services utils) with (gnu home services utils). * gnu/home-services/shepherd.scm: Move to gnu/home/services/shepherd.scm. * gnu/home-services/symlink-manager.scm: Rename to gnu/home/services/symlink-manager.scm. * gnu/home-services/utils.scm: Rename to gnu/home/services/utils.scm. * gnu/home-services/xdg.scm: Rename to gnu/home/services/xdg.scm. * guix/scripts/home/import.scm: Replace (gnu home-services bash) with (gnu home services bash). * gnu/home-services.scm: Update documentation string. * doc/he-config-bare-bones.scm: Apply new (gnu home-services ...) modules location. * gnu/local.mk (GNU_SYSTEM_MODULES): Same. Oleg Pykhalov 2021-09-09doc: Add Guix Home documentation....* doc/guix.texi: Add Guix Home documentation. * doc/he-config-bare-bones.scm: New file. Signed-off-by: Oleg Pykhalov <go.wigust@gmail.com> Andrew Tropin