New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
largefile (LFS) issues #829
Comments
I have never seen 64-bit inodes before! But it appears they're just part of the newer LFS API? (Ninja doesn't care about file sizes so it's a little confusing that this is part of "largefile" support.) Upon reading http://www.tcm.phy.cam.ac.uk/sw/inodes64.html , it sounds like it should just work if you compile a 64-bit binary. Are you on a 32-bit system? |
yes, that is 32bit userspace. for autoconf build systems it's just sufficient to add |
and no, you should not compile 64bit binary, just need to compile 64bit file access pointers (off_t) on 32bit systems (ix86) |
if you wish to reproduce this and do not have 1TB filesystem filled with files, you can try method described here: https://bugs.php.net/bug.php?id=68209 |
I see, thanks for explaining. (I see you mentioned a 32-bit system in your original report, sorry for missing it.) According to http://people.redhat.com/berrange/notes/largefile.html we can add PS for Nico: it appears OSX has a similar 64-bit inode variant, but it's handled more implicitly |
any ideas about errors not triggering build failure? |
I just opened #830 about that. |
-D_LARGEFILE_SOURCE (stat will be wrapper to stat64) and -D_FILE_OFFSET_BITS=64 (off_t and ino_t will be 64bit) - both are needed. Only _LARGEFILE_SOURCE is not enough. On Linux/glibc at least. |
(the binaries at https://github.com/martine/ninja/releases are built with LFS support I believe) |
@nico no, there is no 32bit binary for linux, only 64bit, where the problem doesn't exist. at least for 1.5.1 which seems to be latest |
Oh right, I remember now not uploading the 32bit binary here since I figured nobody would need it :-) There's one with LFS support at |
(…and I think just adding Is there anything for ninja itself to do here (other than failing when |
i think ninja should include both flags as you pointed out yourself. referenced a patch just now |
It's only needed for 32bit linux though, and I'd think that almost nobody uses that on build machines. |
well, if it's not in ninja upstream, sooner or later some other linux distro will report it again. unless they find this ticket that you strongly refuse to accept any patch :) i use "it" to build 32bit version of chromium on my linux distro. |
why this is still not merged? |
This issue is still present. 32-bit builds are still common for libraries like mesa, which uses ninja and must have 32-bit libraries in order to support 32-bit games. |
I use Adding |
Probably fixed by #2203 |
looks like ninja build on 32bit system is not largefile safe:
the files are residing on 64bit-enabled inode (xfs, inode64 enabled since 2.6.35, see here):
what's worse, build system does not abort but continues with ignoring such errors:
The text was updated successfully, but these errors were encountered: