sys-apps/quota fails to build on amd64 due to a missing kernel #define. This might be a kernel 2.6-specific issue. Reproducible: Always Steps to Reproduce: 1. "emerge quota" 2. 3. Actual Results: Fails to compile because it can't find a #define for FIOQSIZE. I was lame and worked around this with: CFLAGS="$CFLAGS -DFIOQSIZE=0x5460" emerge quota Obviously, that's not the right thing to do. Portage 2.0.49-r21 (default-amd64-1.4, gcc-3.3.2, glibc-2.3.2-r9, 2.6.1-gentoo) ============================================================ ===== System uname: 2.6.1-gentoo x86_64 5 Gentoo Base System version 1.4.3.12 ccache version 2.3 [enabled] ACCEPT_KEYWORDS="amd64" AUTOCLEAN="yes" CFLAGS="-O3 -fomit-frame-pointer -funroll-loops -pipe" CHOST="x86_64-pc-linux-gnu" COMPILER="gcc3" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3/share/ config /usr/share/config /var/qmail/alias /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" CXXFLAGS="-O3 -fomit-frame-pointer -funroll-loops -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs ccache sandbox" GENTOO_MIRRORS="http://gentoo.mirrors.pair.com/" MAKEOPTS="-j3" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="3dnow amd64 apache apm avi berkdb crypt curl encode foomaticdb gdbm gif gpm imap imlib jpeg libg++ libwww maildir mbox mikmod mmx motif mpeg multilib mysql ncurses nls oggvorbis opengl oss pam pdflib perl php png python quicktime readline ruby slang spell sse ssl tcltk tcpd truetype xml xml2 xv zlib"
What version?
Not sure what version it was when I reported this, but the latest version unmasked on amd64 (sys-apps/quota-3.06-r1) still does this. Actually, the latest bleeding edge ebuild (3.10) does this, too. I'm on the default sys-kernel/linux-headers-2.4.21, despite running a 2.6 kernel, if that's the culprit. --ryan.
Added URL which includes (very easy) fix for FIOQSIZE issue...
Created attachment 28374 [details, diff] Adds FIOQSIZE define required for quota to build on amd64 Patch for /usr/include/asm/ioctls.h that adds FIOQSIZE define needed by quota on amd64.
Created attachment 28378 [details, diff] include/asm-x86_64/ioctls.h patch Patches include/asm-x86_64/ioctls.h to add FIOQSIZE. Needed by quote package on amd64.
The 3.11 version of quota-tools seems to solve the bug : Changes in quota-tools form 3.10 to 3.11 * add FIOQSIZE for x84_64 architecture (Jan Kara) But I could not find an ebuild for this new version.
i made an ebuild for the new version and it fails to compile. gcc -DBSD_BEHAVIOUR -DRPC -DALT_FORMAT -DHAVE_EXT2_INO_T -O2 -ftracer -pipe -DEXT2_DIRECT -D_GNU_SOURCE -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DQUOTA_VERSION=\"3.11\" -DHOSTS_ACCESS -c -o quotacheck.o quotacheck.c gcc -DBSD_BEHAVIOUR -DRPC -DALT_FORMAT -DHAVE_EXT2_INO_T -O2 -ftracer -pipe -DEXT2_DIRECT -D_GNU_SOURCE -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DQUOTA_VERSION=\"3.11\" -DHOSTS_ACCESS -c -o quotacheck_v1.o quotacheck_v1.c In file included from quotaio_xfs.h:35, from dqblk_xfs.h:8, from quotaio.h:19, from quotacheck.c:36: /usr/include/asm/types.h:20: error: conflicting types for '__s64' /usr/include/ext2fs/ext2_types.h:18: error: previous declaration of '__s64' was here /usr/include/asm/types.h:21: error: conflicting types for '__u64' /usr/include/ext2fs/ext2_types.h:19: error: previous declaration of '__u64' was here make: *** [quotacheck.o] Error 1 make: *** Waiting for unfinished jobs.... !!! ERROR: sys-apps/quota-3.11 failed.
Created attachment 31839 [details, diff] Patch to allow sys-apps/quota to compile against linux-headers-2.4.21-r1 As the other attachments aren't available anymore (Server error 500 for me), i readded the patch and CC'ed x86-kernel herd. Could you kernel guys please add this little patch to linux-headers-2.4.21-r1 ? TIA !
Oops, dammit CC list. x86-kernel: Would you please have a look @ above patch ?
kernel herd, please take a look at the attached patch and add it to linux-headers-2.4.21-r1. Thanks!
does 3.06-r2 still fail against 2.4 headers? it works here with 2.6.
Definitely still not working here: gcc -DBSD_BEHAVIOUR -DRPC_SETQUOTA -DRPC -DALT_FORMAT -DHAVE_EXT2_INO_T -O3 -fomit-frame-pointer -pipe -DEXT2_DIRECT -D_GNU_SOURCE -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DQUOTA_VERSION=\"3.06\" -DHOSTS_ACCESS -c -o quotaops.o quotaops.c quotacheck.c: In function `getqsize': quotacheck.c:256: error: `FIOQSIZE' undeclared (first use in this function) quotacheck.c:256: error: (Each undeclared identifier is reported only once quotacheck.c:256: error: for each function it appears in.) make: *** [quotacheck.o] Error 1 Just as a sanity check, I re-emerged sys-kernel/linux-headers-2.4.21-r1, still no luck: same error. I noticed that there's a new glibc marked stable on amd64: [ebuild U ] sys-libs/glibc-2.3.4.20040605 [2.3.2-r9] Possibly this is why it works for you and not me? --ryan.
Ryan, have you moved to linux26-headers yet?
I'm closing this as FIXED since AMD64 has moved over to linux26-headers, which does not have this issue. If you still experience it after switching to 2.6 headers then please reopen this bug. Thanks!