Nota de Contexto: Este documento provee los detalles técnicos de bajo nivel de las mejoras de localización (i18n) implementadas en adJ. Para una visión general de cómo estas mejoras se integran en el proceso de construcción de la distribución, por favor consulte el PROCESO-DE-CONSTRUCCION.md.
- Modificar la librería del OpenBSD estable más reciente o de current
- Cumplir la implementación más reciente de POSIX lo mejor posible http://pubs.opengroup.org/onlinepubs/9699919799/
- Como fuente prioritaria en localización de cada país utilizar versión reciente de CLDR http://cldr.unicode.org/index/downloads
- En los locales dar prioridad a español y los paises donde se habla.
- Soportar sólo las codificaciones US-ASCII y UTF-8 (únicas soportadas por OpenBSD).
- 3 mecanismos para ubicar un locale (digamos LC_TIME de es_CO.UTF-8):
- que sea un archivo regular en el formato correcto en
/usr/share/locale/es_CO.UTF-8/LC_TIME - que la ubicación anterior sea un enlace a otro correcto
- Emplear una heurística para sustituir:
- Intentar con
/usr/share/locale/es.UTF-8/LC_TIME - Si el anterior falla intentar con
/usr/share/locale/UTF-8/LC_TIME
- Intentar con
- que sea un archivo regular en el formato correcto en
- El locale C o POSIX se soporta en fuentes de libc con codificación
ASCII, se soporta con codificación UTF-8 en
/usr/share/locale/UTF-8/para operar por omisión cuando no se encuentra uno mejor con codificación UTF-8. - Documentar cada función y programa en páginas man
- Pruebas de regresión para la funcionalidad añadida
- Versión de OpenBSD: actualizando
- POSIX: Se cumple hasta 2008 con extensiones de FreeBSD
- CLDR: Sólo se usa una versión de 2015 para LC_TIME, para las otras categorias (y el país faltante en CLDR: Cuba) se importaron, mezclaron y mejoraron locales de FreeBSD y NetBSD de 2015.
- Prioridad español: completa
- Codificaciones US-ASCII y UTF-8. Bien en todas las categorias excepto UTF-8 en LC_COLLATE pues sólo se soportan primeros 254 puntos de Unicode (los equivalentes a ISO8859-1 que es suficiente para lenguas basadas en alfabateo latino como español, italiano, frances y alemán, ver http://www.utf8-chartable.de/).
- Mecanismos para ubicar locale: implementado para todas las categorias, puede
mejorarse (ver prueba de regresión
check_monetaryfuncióntest_switchparte comentada de localealgo_loco.UTF-8). - POSIX en
/usr/share/locale/UTF-8/: implementado - Páginas man: realizado falta manual para utilidades localedef y colldef
- Pruebas de regresión: completas para libc
- Se parchan fuentes de OpenBSD en un orden lógico-histórico:
- locale global:
- LC_CTYPE solo reorganizar
- LC_TIME emplea formato tipo texto
- LC_COLLATE emplea formato binario
- LC_MONETARY emplea formato tipo texto (reusando detalles de LC_TIME)
- LC_NUMERIC emplea formato tipo texto.
- perl: requerido tras soportar LC_NUMERIC
- xlocale
- ctype 1: conversión single byte, multi-byte y wide character.
- ctype 2: tradución de minúscula a mayúscula y funciones para verificar tipo de caracteres.
- cotejación
- localeconv_l
- númerico y monetario
- tiempo
- extensiones de Darwin
- locale global:
- Primero actualizar libc
- Verificar que pasan pruebas de regresión nuevas de regress/lib/libc/locale
- Después de pasar por locale de LC_NUMERIC es necesario recompilar perl:
cd /usr/src/gnu/usr.bin/perl
doas make -f Makefile.bsd-wrapper
doas make -f Makefile.bsd-wrapper installsi no se hace, hasta lo más simple con perl fallará, por ejemplo:
$ pkg_info
Invalid version format (non-numeric data) at /usr/libdata/perl5/Carp.pm line 3
BEGIN failed--compilation aborted at /usr/libdata/perl5/Carp.pm line 3.
Compilation failed in require at /usr/libdata/perl5/OpenBSD/State.pm line 86.
BEGIN failed--compilation aborted at /usr/libdata/perl5/OpenBSD/State.pm line 86.
Compilation failed in require at /usr/libdata/perl5/OpenBSD/PkgInfo.pm line 22.
BEGIN failed--compilation aborted at /usr/libdata/perl5/OpenBSD/PkgInfo.pm line 22.
Compilation failed in require at (eval 1) line 2.-
Los paquetes de perl deben recompilarse. Si al recompilar aparece un error como:
XS.c: loadable library and perl binaries are mismatched (got handshake key 0xec00000, needed 0xf080000)Buscar:
find /usr/local/libdata/perl5 -name XS.so | xargs ls -ly los que tengan fecha antigua recompilarlos, por ejemplo si aparece:
-r-xr-xr-x 1 root bin 95152 Mar 15 04:51 /usr/local/libdata/perl5/site_perl/amd64-openbsd/auto/Cpanel/JSON/XS/XS.soDesinstalar el paquete p5-Cpanel-JSON-XS y los que de el dependan, recompilar ese, instalarlo y volver a compilar el paquete que presentó el error.
-
Para depurar libc con gdb:
- En
lib/libc/Makefileañadir-g -O0aCFLAGS, eliminar código objeto y volver a compilar
- En