Open dipterix opened 3 years ago
Hi @dipterix, thanks for your question (and congratulations on your raveio
CRAN submission 👍)
The Solaris errors are due to fst
being build for little-endian machines and Solaris is big-endian. You can indicate this by setting
SystemRequirements: little-endian platform
in file DESCRIPTION
in the source of your package. That way, CRAN will still check your package on a Solaris machine but not fail your submission because of these errors :-)
Uh... I thought fst once supported big-endian system, or Solaris is unsupported all the time? Also do you have any plan to enable big-endian support because neither LZ4 nor ZSTD forces endianess?
Ha @dipterix, it's possible to use fst
on a big-endian system without problems if you just write and read on the same system. But when a fst file written on a little-endian system is read on a big-endian system (or vice versa), that's when problems start.
In earlier submissions, CRAN checks were successful because the unit tests did not include reading in default fst files created on a little-endian system...
Making fst
endianness-proof is certainly on the feature list. The main issue is adapting the custom byte-shift filters that fst
uses to increase (de-) compression speeds. Also, the bytes in the meta-data blocks need to be reversed for big-endian systems...
thanks for reporting!
I see. Is it possible to store pre-designed bytes within the meta block that indicates the endianess, for example one or multiple 00001111
(or something that has very low probability to occur) at both ends of the file. In this case, if the bytes read are 11110000
, then you know the endian should be changed, otherwise if the bytes are not 00001111
, just assume there is no overhead. I guess you must have clever way to handle this without breaking compatibilities : D
Hi @dipterix, you're exactly right :-)
In fact, I have already prepared a binary flag in the header of the file that stores the endianess, see this specification. But at the moment, the value is not used to check against the systems endianess, because DESCRIPTION contains SystemRequirements: little-endian platform anyway...
Hi @MarcusKlik
I recently submitted a package to CRAN, it gets this error during check with Solaris (https://cran.r-project.org/web/checks/check_results_raveio.html)
This error comes from
fst
(https://cran.r-project.org/web/checks/check_results_fst.html)Would you like to investigate?