Open Unix.LargeFile to avoid "lstat: Value too large for defined data type".
authorRichard W.M. Jones <rjones@redhat.com>
Mon, 1 Feb 2021 10:07:02 +0000 (10:07 +0000)
committerRaspbian forward porter <root@raspbian.org>
Sun, 29 Aug 2021 20:59:16 +0000 (21:59 +0100)
commitb0e9f049883d5d659216ed3a75cf3076611d171d
treeb01eb40f9e6e444bb5f271f3339052b020d21c47
parent46d2eb164cfaf47df72b5cca56519dcfa330f7ad
Open Unix.LargeFile to avoid "lstat: Value too large for defined data type".

On 32 bit platforms, because OCaml native ints are limited to 31 bits,
there is a trap in the normal Unix.stat, Unix.lstat functions where
any field in the stat struct may overflow.  The result is random
errors like:

  supermin: error: lstat: Value too large for defined data type: /tmp/tmp.Ss9aYEBASm/d2/root

You would probably only see this on armv7.

The OCaml Unix module has a "LargeFile" submodule which fixes this by
using int64 for some (unfortunately not all) fields.

For more information see the OCaml sources, file
otherlibs/unix/stat.c, all instances of "EOVERFLOW".

Gbp-Pq: Name 0001-Open-Unix.LargeFile-to-avoid-lstat-Value-too-large-f.patch
src/format_chroot.ml
src/format_ext2.ml
src/format_ext2_initrd.ml
src/format_ext2_kernel.ml
src/mode_build.ml
src/package_handler.ml
src/ph_dpkg.ml
src/ph_pacman.ml
src/ph_rpm.ml
src/supermin.ml
src/utils.ml