On sams window mode will be always slow in any case, and only solution there will be to use full-screen overlay and replace cgx on on p96 one
Yep, for sure i will expect some speed issue considering my hardware, that's why i ask for a fast replacing of cgx to p96.. at this level even a little improvement would be more then welcome and might set a boundary between an usable and a not usable experience .. aniway it's too early to talk about, let's finish first, then we will test it and hopefully you might found atleast 1 skilled dev for help
I'm not sure if this will help, but I remember when trying to port libICU in Linux with a cross-compiler, only the stub data file was created. I couldn't figure out how to get it to build the full data file.
That boring icu builds in that ways: firstly it builds some stub + some libraries, then as the last one it build libicudata.a, to build which all that icu building process create bunch of binaries which will runs to generate icu data files and some stuff in between. So, if you build on cross-compiler, you will go till moment when icu will build all the libs except libicudata.a , then building process will try to run those generated binaries from bin directory , and as they builds for os4, they will not runs on cross-compiler env => fail to generate list of icu files => fail to generate final libicudata.a with all the stuff inside.
Solution is to build for first everything for your cross-compiler (so it will build bins for your cross-compiler and they can runs), then build exactly for aos4 in another place and use those binaries from cross-env. Then, they will runs when need and they will generate all the necessary stuff you need and will create big-fat libicudata.a (That of course if you do not use option "release-files", because with that option, icu think that there no needs to create libicudata.a ) (or i do something wrong and there need to add more flags, dunno).
In other words that what to do:
Quote:
1. Build icu for cygwin (to use later those binaries from "bin" to generate necessary stuff):
# cd /usr/local/amiga/icu # mkdir cygwin # cd cygwin # sh /usr/local/amiga/icu/source/runConfigureICU Cygwin # make
Or if you not in cygwin instead of runConfigureICU Cygwin, you can choice one you need by runing runConfigureIcu --help, or just pure:
Once everything done for cygwin , we then build it for os4 (if we want fat libicudata.a as well):
# cd /usr/local/amiga/icu # mkdir aos4 # cd aos4 # ../../icu/source/configure --with-cross-build=/usr/local/amiga/icu/cygwin --host=ppc-amigaos \ --enable-static --disable-shared --disable-dyload --enable-release --disable-tests --disable-samples --disable-debug # make
So, its all builds for aos4 as before (include those tools for generation in "aos4/bin", but, will use cygwin ones when time is come (i.e. when time is come to generate libicudata.a and all other stuff).
Quote:
I think it wasn't detecting big endian.
At least for me it detect endianes fine.
Quote:
I ported it natively and it was fine.
Even on native you should meet with problems when icu bins will start to generate all that icu files (i remember when i do port for previous odysseys, i had manually replace patches and co to make it all works, which was pretty boring and annoing).
Quote:
Even though you have the stub data built, perhaps if it's built natively the problem will go away?
I will go just usual normal way: i will build now icu for x86, will make some tests with x86 test-files, and then will make the same on os4 till it will start works, and then will make it in odyssey. I just hope there will be no needs to write code for making own libicudata.a.
Quote:
I had been meaning to ask you if you managed to get libICU to build a static "full" libicudata library when cross-compiling. Your previous posts indicate you did that. Maybe it's a difference in versions. What does "-static" do?
That "-static" is option for linker , to be 100% sure that all what i do not related in any way to sobjes and creation of files with dyn-ld and co (because of SDK its sometime necessary to provide -static to avoid automatic usage of sobjes). Most of time you can not use it, but i just want to be sure its always static, without sobjes. In other words its flag for linker itself, not for libicu building process.
Edited by kas1e on 2014/2/5 7:32:43 Edited by kas1e on 2014/2/5 8:14:01
I compile ICU myself with the configure line and changes i gave above. And it produces a very small libicudata.a (856 bytes, with just stubdata.ao: 00000000 R icudt49_dat as symbol).
Just in case, check what the file icu/source/config/mh-unknown looks like for you. In my case, i had to copy it from mh-linux, but it doesn't seem related to datafile package in any case, anyway.
I compile ICU myself with the configure line and changes i gave above. And it produces a very small libicudata.a (856 bytes, with just stubdata.ao: 00000000 R icudt49_dat as symbol).
Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000000 00000000 00000000 00000034 2**0 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .data 00000000 00000000 00000000 00000034 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000000 00000000 00000000 00000034 2**0 ALLOC 3 .rodata 00000038 00000000 00000000 00000034 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 4 .comment 00000012 00000000 00000000 0000006c 2**0 CONTENTS, READONLY 5 .gnu.attributes 00000014 00000000 00000000 0000007e 2**0 CONTENTS, READONLY SYMBOL TABLE: 00000000 l df *ABS* 00000000 stubdata.c 00000000 l d .text 00000000 .text 00000000 l d .data 00000000 .data 00000000 l d .bss 00000000 .bss 00000000 l d .rodata 00000000 .rodata 00000000 l d .comment 00000000 .comment 00000000 l d .gnu.attributes 00000000 .gnu.attributes 00000000 g O .rodata 00000038 icudt49_dat
# Admin@microsof-9c3473 /usr/local/amiga/icu/aos4
readelf:
Quote:
# readelf -a stubdata/stubdata.ao
ELF Header: Magic: 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, big endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: REL (Relocatable file) Machine: PowerPC Version: 0x1 Entry point address: 0x0 Start of program headers: 0 (bytes into file) Start of section headers: 224 (bytes into file) Flags: 0x0 Size of this header: 52 (bytes) Size of program headers: 0 (bytes) Number of program headers: 0 Size of section headers: 40 (bytes) Number of section headers: 10 Section header string table index: 7
Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .text PROGBITS 00000000 000034 000000 00 AX 0 0 1 [ 2] .data PROGBITS 00000000 000034 000000 00 WA 0 0 1 [ 3] .bss NOBITS 00000000 000034 000000 00 WA 0 0 1 [ 4] .rodata PROGBITS 00000000 000034 000038 00 A 0 0 4 [ 5] .comment PROGBITS 00000000 00006c 000012 00 0 0 1 [ 6] .gnu.attributes LOOS+ffffff5 00000000 00007e 000014 00 0 0 1 [ 7] .shstrtab STRTAB 00000000 000092 00004d 00 0 0 1 [ 8] .symtab SYMTAB 00000000 000270 000090 10 9 8 4 [ 9] .strtab STRTAB 00000000 000300 000018 00 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific)
There are no section groups in this file.
There are no program headers in this file.
There are no relocations in this file.
There are no unwind sections in this file.
Symbol table '.symtab' contains 9 entries: Num: Value Size Type Bind Vis Ndx Name 0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 00000000 0 FILE LOCAL DEFAULT ABS stubdata.c 2: 00000000 0 SECTION LOCAL DEFAULT 1 3: 00000000 0 SECTION LOCAL DEFAULT 2 4: 00000000 0 SECTION LOCAL DEFAULT 3 5: 00000000 0 SECTION LOCAL DEFAULT 4 6: 00000000 0 SECTION LOCAL DEFAULT 5 7: 00000000 0 SECTION LOCAL DEFAULT 6 8: 00000000 56 OBJECT GLOBAL DEFAULT 4 icudt49_dat
No version information found in this file. Attribute Section: gnu File Attributes Tag_GNU_Power_ABI_FP: Hard float Tag_GNU_Power_ABI_Vector: Generic Tag_GNU_Power_ABI_Struct_Return: r3/r4
Dunno, maybe something related that i had to use '-mlongcall' for libicu ?
Btw, aslo in original ptuil.cpp, i have those erros initialy:
Quote:
../../../icu/source/common/putil.cpp: In function 'void uprv_tzset_49()': ../../../icu/source/common/putil.cpp:627: error: 'tzset' was not declared in this scope ../../../icu/source/common/putil.cpp: In function 'int32_t uprv_timezone_49()': ../../../icu/source/common/putil.cpp:637: error: expected primary-expression before ';' token ../../../icu/source/common/putil.cpp: In function 'const char* uprv_tzname_49(int)': ../../../icu/source/common/putil.cpp:1092: error: 'tzname' was not declared in this scope ../../../icu/source/common/putil.cpp:1097: error: 'tzname' was not declared in this scope ../../../icu/source/common/putil.cpp: In function 'void u_setDataDirectory_49(const char*)': ../../../icu/source/common/putil.cpp:1155: warning: suggest parentheses around assignment used as truth value ../../../icu/source/common/putil.cpp: At global scope: ../../../icu/source/common/putil.cpp:2239: warning: unused parameter 'libName' ../../../icu/source/common/putil.cpp:2246: warning: unused parameter 'lib' ../../../icu/source/common/putil.cpp:2254: warning: unused parameter 'lib' ../../../icu/source/common/putil.cpp:2254: warning: unused parameter 'sym'
I deal with them by adding to putil.cpp at lines 620 (where generic time zone layer starts) that:
#undef U_TZNAME #undef U_TZSET #undef U_TIMEZONE
To make it compiles , wasn't it necessary for you as well ?
Quote:
Just in case, check what the file icu/source/config/mh-unknown looks like for you. In my case, i had to copy it from mh-linux, but it doesn't seem related to datafile package in any case, anyway.
@Fab I also do search in all .cpp files of odyssey on "u_setDataDirectory" (as i read by that function directory for necessary files should be set), but found none. Where that place where those files should loads ? I just want to find that place in odyssey and put some debug code in.
I don't have to call this function, since i set the proper data directory in ICU itself (in putils.cpp). And that's u_getDataDirectory() that sets it itself with the default directory define, anyway (path=U_ICU_DATA_DEFAULT_DIR).
About this timezone stuff, i also had to undef as you did, but it's unrelated to your data files issue.
@Fab Have interesting moment now. Do some test with morphos version of odyssey, and once i run it and it start to open "About:" all icu resources loads. I.e. i don't need to press by mouse on anything to make them loads, just running of odyssey with "about:".
On os4, once i load odyssey with "About:" page nothing loads from icu, and nothing crashes (and no Fail calls with tries to load icu resources), but once i do unfold of credits and fold back, then i have in snoopy:
And then GR coming. What did it mean, is that patches crap still here ! "PROGDIR/Resource" by some reasons still, not "PROGDIR:Resource" while i cleary have:
Just to see if it will works, and nope ! in snoopy still "PROGDIR/Resource". Damn, seems some other function replace it somehow somewhere or maybe i need to rebuild odyssey again (after i do changes in the unicode/putil.h so those :;/ will takes in account somewhere in webkit ?)
Edited by kas1e on 2014/2/5 11:23:39 Edited by kas1e on 2014/2/5 11:23:40 Edited by kas1e on 2014/2/5 11:24:18 Edited by kas1e on 2014/2/5 11:39:03
Well, did you change all the functions as i wrote above?
I remember icu had fun replacing : with /, which is why i had to disable that silly code.
Quote:
And finally, in udata.cpp, around line 1137, you might want to disable that code: if (U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR) /* Windows: try "foo\bar" and "foo/bar" */ { /* remap from alternate path char to the main one */ CharString altSepPath; ... }
/*
#if (U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR) // Windows: try "foo\bar" and "foo/bar"
// remap from alternate path char to the main one
CharString altSepPath;
if(path) {
if(uprv_strchr(path,U_FILE_ALT_SEP_CHAR) != NULL) {
altSepPath.append(path, *pErrorCode);
char *p;
while((p=uprv_strchr(altSepPath.data(), U_FILE_ALT_SEP_CHAR))) {
*p = U_FILE_SEP_CHAR;
}
#if defined (UDATA_DEBUG)
fprintf(stderr, "Changed path from [%s] to [%s]\n", path, altSepPath.s);
#endif
path = altSepPath.data();
}
}
#endif
*/
CharString tocEntryName; /* entry name in tree format. ex: 'icudt28b/coll/ar.res' */
CharString tocEntryPath; /* entry name in path format. ex: 'icudt28b\\coll\\ar.res' */
....
Maybe something else should be commented ? I can of course go usual brutal way, just return what i need to return at end of whole doOpenChoice() function (like those pkgName.data(), dataPath , etc), but that can make side-effect somewhere, and i do no want introduce new bugs by my crapo-hacks
Edited by kas1e on 2014/2/5 12:25:33 Edited by kas1e on 2014/2/5 12:26:26 Edited by kas1e on 2014/2/5 12:27:23
Thanks for the detailed info on cross-compiling libICU.
As for your porting progress, I'm sure the path issue is something you can track down without resorting to any nasty workarounds. It's gotta be modifying the path somewhere!
Then it works, PROGDIR:Resource everywhere, and odyssey didn't crashes !
What is strange, is that path = u_getDataDirectory();, return PROGDIR/Resource, and not PROGDIR:Resource. I.e. if at begining of UDataPathIterator::UDataPathIterator i add:
Then it return PROGDIR/Resource, just like u_getDataDirectory return wrong path already. But then, if at end of u_getDataDirectory, i add:
Quote:
u_setDataDirectory(path); KPrintF("path at end of u_getDataDirectory = %s\n", path); return gDataDirectory;
Then it print normal path (i.e. PROGDIR:Resource), but when UDataPathIterator::UDataPathIterator call it at begining path aready PROGDIR/Resource. What mean that "return gDataDirectory" from u_getDataDirecotry return bad path.
@Fab Are you tried to update to latest curl already ? I have some problem with certificates when i build 7.34.0 for odyssey 1.23. Problem is: with Security/Ignore SSL errors everything works, i can go on https fine. But if i untick that option, i have on every https site:
Quote:
Unable to open 'http://sitename". Error 60: Peer certificate cannot be authenticated with give CA certificates.
But, i have of course your latest curl-ca-bundle.crt (and in Settings/Secutiry certificate path are have "PROGDIR:curl-ca-bundle.crt" as well.
I even tried with my own: i.e. in the curl 7.34.0 directory i run "make ca-bundle" and copy new lib/ca-bundle.crt to the odyssey directory instead of your old one : still the same error.
Have any ideas what can be wrong ? By default even with curl binary it is:
curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option. If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL). If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option.
7/60.RAM Disk:>
And i need to add --cacert option to it to make it works:
curl: (60) SSL certificate problem, verify that the CA cer is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed. More details here: htt://curl.haxx.se/docs/sslcerts.html
curl version: 7.35.0 Host setup: powerpc-unknown-amigaos Install prefix: /usr/local Compiler: ppc-amigaos-gcc SSL support: enabled (OpenSSL) SSH support: no (--with-libssh2) zlib support: enabled GSSAPI support: no (--with-gssapi) SPNEGO support: no (--with-spnego) TLS-SRP support: no (--enable-tls-srp) resolver: POSIX threaded ipv6 support: no (--enable-ipv6) IDN support: no (--with-{libidn,winidn}) Build libcurl: Shared=no, Static=yes Built-in manual: no (--enable-manual) --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) SSPI support: no (--enable-sspi) ca cert bundle: no ca cert path: no LDAP support: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS support: no (--enable-ldaps) RTSP support: enabled RTMP support: enabled (librtmp) metalink support: no (--with-libmetalink) HTTP2 support: disabled (--with-nghttp2) Protocols: DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS POP3 POP3S RTMP RTSP SMTP SMTPS TELNET TFTP
SONAME bump: yes - WARNING: this library will be built with the SONAME number bumped due to (a detected) ABI breakage. See lib/README.curl_off_t for details on this.
I.e. i have "ca cert bunde: no". I can of course specifcy --with-ca-bundle=curl-ca_bundle.crt , but then, i was in hope that if we have it in security/path its enough ?
You have to specify the bundle location, it won't default to "PROGDIR:curl-ca-bundle.crt" magically. IIRC, it should be CURL_CA_BUNDLE define in config.h
I don't know about the configure options, i made my own makefile/config.h for curl, i don't need their configure crap.
@Fab For now just build curl with --with-ca-bundle=ca_bundle.crt, and it takes from progdir fine and all works.
Yep, i can just now redefine CURL_CA_BANDLE to something like "PROGDIR:curl-ca-bundle.crt", but then i can't get why you need to have that settings/preferences/security/certificated_path, if, it will be anyway taken only from PROGDIR:curl-ca-bunlde.crt, as it hardcore in curl, and does not matter what to write here, it still will search for PROGDIR:curl-ca-bundle.crt.
I mean, if it there just to show where file placed, then imho it should't be selectable, as it seems will make no differences ?
The crt path option of course works too in Odyssey. It may be another issue in your curl build. But first we had to rule out other potential issues by setting default path properly.