- 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_monetary
funcióntest_switch
parte 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 install
si 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 -l
y 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.so
Desinstalar 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/Makefile
añadir-g -O0
aCFLAGS
, eliminar código objeto y volver a compilar
- En