Opened 8 years ago
Closed 8 years ago
#5413 closed Bug (fixed)
Compilation errors
Reported by: | quaff | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | None Set |
Component: | Transmission | Version: | 2.80+ |
Severity: | Normal | Keywords: | |
Cc: |
Description
I'm trying to compile build r14115 on my ReadyNAS NV+ (Sparc) running the 2.6.17.14 Linux kernel.
When I run "make" I get the following error:
Making all in extras make[1]: Entering directory `/c/backup/src/transmission-2.80+/extras' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/c/backup/src/transmission-2.80+/extras' Making all in third-party make[1]: Entering directory `/c/backup/src/transmission-2.80+/third-party' Making all in dht make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/dht' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/dht' Making all in libnatpmp make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/libnatpmp' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/libnatpmp' Making all in miniupnp make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' ./updateminiupnpcstrings.sh ./VERSION ./miniupnpcstrings.h.in miniupnpcstrings.h Detected OS [Debian] version [] cat: ./VERSION: No such file or directory MiniUPnPc version [] setting OS_STRING macro value to Debian/ in miniupnpcstrings.h. setting MINIUPNPC_VERSION_STRING macro value to in miniupnpcstrings.h. make all-am make[3]: Entering directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' CC minisoap.o CC miniwget.o AR libminiupnp.a make[3]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' Making all in libutp make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/libutp' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/libutp' make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party' make[2]: Nothing to be done for `all-am'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party' make[1]: Leaving directory `/c/backup/src/transmission-2.80+/third-party' Making all in libtransmission make[1]: Entering directory `/c/backup/src/transmission-2.80+/libtransmission' CC platform-quota.o platform-quota.c: In function `getquota': platform-quota.c:244: error: structure has no member named `dqb_curspace' make[1]: *** [platform-quota.o] Error 1 make[1]: Leaving directory `/c/backup/src/transmission-2.80+/libtransmission' make: *** [all-recursive] Error 1
Attachments (1)
Change History (10)
comment:1 Changed 8 years ago by rb07
comment:2 Changed 8 years ago by quaff
Yes, previous versions did compile (0.77), but 0.80 did not, due to the issues outlined in ticket #5389. But once I updated to the latest trunk revision (r14115), I started getting this error I posted.
I tried adding the new line for platform-quota.c you suggested and now I'm getting this error:
Making all in extras make[1]: Entering directory `/c/backup/src/transmission-2.80+/extras' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/c/backup/src/transmission-2.80+/extras' Making all in third-party make[1]: Entering directory `/c/backup/src/transmission-2.80+/third-party' Making all in dht make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/dht' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/dht' Making all in libnatpmp make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/libnatpmp' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/libnatpmp' Making all in miniupnp make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' make all-am make[3]: Entering directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' make[3]: Nothing to be done for `all-am'. make[3]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' Making all in libutp make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/libutp' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/libutp' make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party' make[2]: Nothing to be done for `all-am'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party' make[1]: Leaving directory `/c/backup/src/transmission-2.80+/third-party' Making all in libtransmission make[1]: Entering directory `/c/backup/src/transmission-2.80+/libtransmission' CC platform-quota.o platform-quota.c:24:47: sys/fs/ufs_quota.h: No such file or directory platform-quota.c:31:27: sys/mntent.h: No such file or directory platform-quota.c:32:27: sys/mnttab.h: No such file or directory platform-quota.c: In function `getdev': platform-quota.c:77: error: `MNTTAB' undeclared (first use in this function) platform-quota.c:77: error: (Each undeclared identifier is reported only once platform-quota.c:77: error: for each function it appears in.) platform-quota.c:81: warning: implicit declaration of function `getmntent' platform-quota.c:82: error: dereferencing pointer to incomplete type platform-quota.c:85: error: dereferencing pointer to incomplete type platform-quota.c: In function `getfstype': platform-quota.c:128: error: `MNTTAB' undeclared (first use in this function) platform-quota.c:132: error: dereferencing pointer to incomplete type platform-quota.c:135: error: dereferencing pointer to incomplete type platform-quota.c: In function `getquota': platform-quota.c:198: error: storage size of `dq' isn't known platform-quota.c:207: error: storage size of `op' isn't known platform-quota.c:208: warning: implicit declaration of function `open' platform-quota.c:208: error: `O_RDONLY' undeclared (first use in this function) platform-quota.c:211: error: `Q_GETQUOTA' undeclared (first use in this function) platform-quota.c:214: warning: implicit declaration of function `ioctl' platform-quota.c:214: error: `Q_QUOTACTL' undeclared (first use in this function) platform-quota.c:198: warning: unused variable `dq' platform-quota.c:207: warning: unused variable `op' make[1]: *** [platform-quota.o] Error 1 make[1]: Leaving directory `/c/backup/src/transmission-2.80+/libtransmission' make: *** [all-recursive] Error 1
comment:3 Changed 8 years ago by rb07
You have to change platform-quota.c, and not use the CPPFLAGS I showed (the later produces the error you are seeing).
But... if 2.77 compiled, that means that the "clean up" of the headers I did went too far. Can you look up where in your headers is _LINUX_QUOTA_VERSION defined, and what value does it get? (Hint: I have it in sys/quota.h itself, value is 2, but its guarded with an "if not defined", so if something else defines it...)
comment:4 follow-up: ↓ 5 Changed 8 years ago by quaff
Ah, my bad, forgot to reconfigure!
Here's the output without the CPPFLAGS, it looks like platform-quota.c compiled, but now I'm getting some CURL issues, damned ReadyNAS!
Making all in extras make[1]: Entering directory `/c/backup/src/transmission-2.80+/extras' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/c/backup/src/transmission-2.80+/extras' Making all in third-party make[1]: Entering directory `/c/backup/src/transmission-2.80+/third-party' Making all in dht make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/dht' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/dht' Making all in libnatpmp make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/libnatpmp' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/libnatpmp' Making all in miniupnp make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' make all-am make[3]: Entering directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' make[3]: Nothing to be done for `all-am'. make[3]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/miniupnp' Making all in libutp make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party/libutp' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party/libutp' make[2]: Entering directory `/c/backup/src/transmission-2.80+/third-party' make[2]: Nothing to be done for `all-am'. make[2]: Leaving directory `/c/backup/src/transmission-2.80+/third-party' make[1]: Leaving directory `/c/backup/src/transmission-2.80+/third-party' Making all in libtransmission make[1]: Entering directory `/c/backup/src/transmission-2.80+/libtransmission' CC web.o web.c: In function `writeFunc': web.c:130: error: `CURL_WRITEFUNC_PAUSE' undeclared (first use in this function) web.c:130: error: (Each undeclared identifier is reported only once web.c:130: error: for each function it appears in.) web.c: In function `tr_webThreadFunc': web.c:450: warning: implicit declaration of function `curl_easy_pause' web.c:450: error: `CURLPAUSE_CONT' undeclared (first use in this function) web.c:455: warning: implicit declaration of function `curl_multi_timeout' make[1]: *** [web.o] Error 1 make[1]: Leaving directory `/c/backup/src/transmission-2.80+/libtransmission' make: *** [all-recursive] Error 1
I tried checking my /usr/include/sys/quota.h for _LINUX_QUOTA_VERSION, but can't find it, any idea where else I could look?
comment:5 in reply to: ↑ 4 Changed 8 years ago by rb07
Replying to quaff:
I tried checking my /usr/include/sys/quota.h for _LINUX_QUOTA_VERSION, but can't find it, any idea where else I could look?
It could be in /include, or /opt/include, but if that fails try:
gcc -print-search-dirs
it won't say where the headers are looked for, but it will tell you where the libraries are searched for, and the path prefix should be the same.
About curl, those defines are in curl.h, which means you either don't have the -devel package installed (but then not finding curl.h would be the error), or have an old version of curl. If you look into transmission-gtk.spec you'll see that curl-devel's version has to be version 7.15.4 or newer (current is 7.31.0).
comment:6 Changed 8 years ago by quaff
- Resolution set to fixed
- Status changed from new to closed
I updated my curl, seems that was it. Your little patch fixed the compile. I can compile fine now.
Thanks!
comment:7 Changed 8 years ago by jordan
- Resolution fixed deleted
- Status changed from closed to reopened
rb07, should that one-liner go into trunk?
Changed 8 years ago by rb07
comment:8 Changed 8 years ago by rb07
Yes, I was just creating the patch and was going to put it in #5389.
comment:9 Changed 8 years ago by jordan
- Resolution set to fixed
- Status changed from reopened to closed
Did previous versions compile?
If yes, then I probably (unwillingly) introduced the problem in ticket #5389.
If not, then this belongs to ticket #4076.
The problem seems to be your <sys/quota.h> file, on my NAS (Linux 2.6.12, libc 2.3.6) it has:
and the second definition is the one used, the first doesn't have dqb_curspace, so in your case the guard (_LINUX_QUOTA_VERSION < 2) is triggering the problem, where dqb_curblocks should be used instead of dqb_curspace.
A quick fix would be to define __sun (which means Solaris or derivatives), for instance
but it may introduce other problems (i.e. its not a real solution). Perhaps changing platform-quota.c:241 with:
is.