From 509e3eb2687ad38ef4e2f75d7f311d9f1a742306 Mon Sep 17 00:00:00 2001 From: Thomas Wolff Date: Sat, 17 Apr 2021 00:00:00 +0200 Subject: [PATCH] fix and amend scripts and makefile rules to generate Unicode data --- newlib/Makefile.am | 4 ---- newlib/Makefile.in | 4 ---- newlib/libc/Makefile.unidata | 12 ++++++++++++ newlib/libc/ctype/mkunidata | 4 +++- newlib/libc/string/mkunidata | 6 ++++-- newlib/libc/string/uniset | 29 +++++++++++++++-------------- 6 files changed, 34 insertions(+), 25 deletions(-) create mode 100644 newlib/libc/Makefile.unidata diff --git a/newlib/Makefile.am b/newlib/Makefile.am index 03390cd17..3a8b99fce 100644 --- a/newlib/Makefile.am +++ b/newlib/Makefile.am @@ -420,10 +420,6 @@ endif # Generate Unicode data tables for libc/string/wcwidth and libc/ctype/??w* unidata: - cd $(srcdir)/libc/string; ./mkunidata - cd $(srcdir)/libc/ctype; ./mkunidata - -unidate-download: cd $(srcdir)/libc/string; ./mkunidata -u cd $(srcdir)/libc/ctype; ./mkunidata -u diff --git a/newlib/Makefile.in b/newlib/Makefile.in index fdaf34586..a4eba9120 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -1168,10 +1168,6 @@ install-data-local: install-toollibLIBRARIES # Generate Unicode data tables for libc/string/wcwidth and libc/ctype/??w* unidata: - cd $(srcdir)/libc/string; ./mkunidata - cd $(srcdir)/libc/ctype; ./mkunidata - -unidate-download: cd $(srcdir)/libc/string; ./mkunidata -u cd $(srcdir)/libc/ctype; ./mkunidata -u diff --git a/newlib/libc/Makefile.unidata b/newlib/libc/Makefile.unidata new file mode 100644 index 000000000..0f9276193 --- /dev/null +++ b/newlib/libc/Makefile.unidata @@ -0,0 +1,12 @@ +# Generate Unicode data tables for string/wcwidth and ctype/??w* +# Download Unicode data files +unidata: + cd string; ./mkunidata -u + cd ctype; ./mkunidata -u + +# Generate Unicode data tables for string/wcwidth and ctype/??w* +# Use installed Unicode data files from package unicode-ucd +unidata-local: + cd string; ./mkunidata -i + cd ctype; ./mkunidata -i + diff --git a/newlib/libc/ctype/mkunidata b/newlib/libc/ctype/mkunidata index 4bdf3bc81..4adf667ef 100755 --- a/newlib/libc/ctype/mkunidata +++ b/newlib/libc/ctype/mkunidata @@ -20,7 +20,9 @@ case "$1" in ;; -u) wget () { - curl -R -O --connect-timeout 55 -z "`basename $1`" "$1" + ref=`basename $1` + ref=`ls "$ref" 2> /dev/null || echo 01-Jan-1970` + curl -R -O --connect-timeout 55 -z "$ref" "$1" } echo downloading data from unicode.org diff --git a/newlib/libc/string/mkunidata b/newlib/libc/string/mkunidata index 7ebebeb07..7b6135f8d 100755 --- a/newlib/libc/string/mkunidata +++ b/newlib/libc/string/mkunidata @@ -21,11 +21,13 @@ case "$1" in ;; -u) wget () { - curl -R -O --connect-timeout 55 -z "`basename $1`" "$1" + ref=`basename $1` + ref=`ls "$ref" 2> /dev/null || echo 01-Jan-1970` + curl -R -O --connect-timeout 55 -z "$ref" "$1" } echo downloading uniset tool - wget http://www.cl.cam.ac.uk/~mgk25/download/uniset.tar.gz + wget https://www.cl.cam.ac.uk/~mgk25/download/uniset.tar.gz gzip -dc uniset.tar.gz | tar xvf - uniset echo downloading data from unicode.org diff --git a/newlib/libc/string/uniset b/newlib/libc/string/uniset index 85d3b2a6f..b118dd663 100755 --- a/newlib/libc/string/uniset +++ b/newlib/libc/string/uniset @@ -2,7 +2,7 @@ # Uniset -- Unicode subset manager -- Markus Kuhn # http://www.cl.cam.ac.uk/~mgk25/download/uniset.tar.gz -require 5.008; +require 5.014; use open ':utf8'; use FindBin qw($RealBin); # to find directory where this file is located @@ -147,11 +147,12 @@ sub is_unicode { return exists $name{$ucs}; } -my @search_path; -push @search_path, "$ENV{HOME}/local/share/uniset" - if -d "$ENV{HOME}/local/share/uniset"; -push @search_path, "/usr/share/uniset" if -d "/usr/share/uniset"; -push @search_path, $RealBin unless $RealBin =~ m|^/usr/bin|; +my @search_path = (); +if ($RealBin =~ m|^(.*)/bin\z| && -d "$1/share/uniset") { + push @search_path, "$1/share/uniset"; +} else { + push @search_path, $RealBin; +} sub search_open { my ($mode, $fn) = @_; @@ -186,7 +187,7 @@ while (<$data>) { $category{$ucs} = $3; $comment{$ucs} = $12; } else { - die("Syntax error in line '$_' in file '$unicodedata'"); + die("Syntax error in line '$_' in file '$unicodedata'\n"); } } close($data); @@ -209,7 +210,7 @@ while (<$data>) { } elsif (/^\s*\#/ || /^\s*$/) { # ignore comments and empty lines } else { - die("Syntax error in line '$_' in file '$blockdata'"); + die("Syntax error in line '$_' in file '$blockdata'\n"); } } close($data); @@ -231,16 +232,16 @@ while ($_ = shift(@ARGV)) { $image = 1; } elsif (/^template$/) { $template = shift(@ARGV); - open(TEMPLATE, $template) || die("Can't open template file '$template': '$!'"); + open(TEMPLATE, $template) || die("Can't open template file '$template': $!\n"); while (