John Goerzen wrote:
> Hi Luk,
> 
> Can you take a look at src/config.h after the failed build to figure out
> which HAVE_XXX_OS is defined?  Also, the definition of ioctl() in the
> header files?

Sorry, the build environment is apparently not retained on the buildds.
I think it's best to use a porter machine to get this information.

Cheers

Luk

> ------------------------------------------------------------------------
> 
> Subject:
> [bacula 0001359]: Doesn't compile on Alpha
> From:
> Mantis Bug Tracker <nob...@bugs.bacula.org>
> Date:
> Sat, 29 Aug 2009 15:35:51 +0100
> To:
> jgoer...@complete.org
> 
> To:
> jgoer...@complete.org
> 
> 
> A NOTE has been added to this issue. 
> ====================================================================== 
> http://bugs.bacula.org/view.php?id=1359 
> ====================================================================== 
> Reported By:                jgoerzen
> Assigned To:                
> ====================================================================== 
> Project:                    bacula
> Issue ID:                   1359
> Category:                   Storage Daemon
> Reproducibility:            always
> Severity:                   major
> Priority:                   normal
> Status:                     feedback
> ====================================================================== 
> Date Submitted:             2009-08-28 22:52 BST
> Last Modified:              2009-08-29 15:35 BST
> ====================================================================== 
> Summary:                    Doesn't compile on Alpha
> Description: 
> During the attempt to autobuild bacula 3 on Debian, this error was
> reported:
> 
> make[1]: Entering directory
> `/build/buildd-bacula_3.0.2-3-alpha-1PG1hy/bacula-3.0.2/debian/tmp-build-sqlite3/src/stored'
> Compiling dev.c
> dev.c: In member function 'void DEVICE::init_backend()':
> dev.c:307: error: invalid conversion from 'int (*)(int, long unsigned int,
> ...)throw ()' to 'int (*)(int, int, ...)'
> make[1]: *** [dev.o] Error 1
> make[1]: Leaving directory
> `/build/buildd-bacula_3.0.2-3-alpha-1PG1hy/bacula-3.0.2/debian/tmp-build-sqlite3/src/stored'
> make: *** [build-stamp-sqlite3] Error 2
> 
> The full error log is available at
> https://buildd.debian.org/fetch.cgi?pkg=bacula;ver=3.0.2-3;arch=alpha;stamp=1251420917
> 
> The line of source in question is
> 
>       d_ioctl = ::ioctl;
> 
> Version 2.4.4 successfully built on this platform.
> ====================================================================== 
> 
> ---------------------------------------------------------------------- 
>  (0004556) ebollengier (administrator) - 2009-08-29 07:47
>  http://bugs.bacula.org/view.php?id=1359#c4556 
> ---------------------------------------------------------------------- 
> We have a specific define for Alpha that maps ioctl argument to int. Does
> it mean that it should be mapped to long unsigned int ? Or it's a different
> architecture ?
> 
> #ifdef __alpha__
> #define OSF 1
> #undef  ioctl_req_t
> #define ioctl_req_t int
> #endif 
> 
> ---------------------------------------------------------------------- 
>  (0004557) kern (administrator) - 2009-08-29 09:17
>  http://bugs.bacula.org/view.php?id=1359#c4557 
> ---------------------------------------------------------------------- 
> I don't understand why vendors don't simply follow the POSIX standard.  
> 
> Eric, for Alpha (and a few other that don't respect standards), the second
> argument of an ioctl call is "unsigned int" rather than "int".
> 
> The definition you show above should be:
> 
> #define ioctl_req_t unsigned int
> 
> However, who knows if it is going to break something somewhere else. 
> 
> ---------------------------------------------------------------------- 
>  (0004562) jgoerzen (reporter) - 2009-08-29 14:59
>  http://bugs.bacula.org/view.php?id=1359#c4562 
> ---------------------------------------------------------------------- 
> It appears that your #ifdef __alpha__ is for HP Tru64 UNIX (previously
> known as OSF/1) running on that platform.  Linux also runs on that
> platform, and may have different semantics.
> 
> Kern, my reading of the error suggests that it should be 
> 
> #define ioctl_req_t long unsigned int
> 
> but I may be missing something. 
> 
> ---------------------------------------------------------------------- 
>  (0004563) jgoerzen (reporter) - 2009-08-29 15:02
>  http://bugs.bacula.org/view.php?id=1359#c4563 
> ---------------------------------------------------------------------- 
> I should clarify.  It is invalid to infer what OS is being used from what
> architecture is in use.  You can't assume that an Alpha is running OSF/1,
> as Debian, NetBSD, etc. all run on it as well. 
> 
> ---------------------------------------------------------------------- 
>  (0004565) kern (administrator) - 2009-08-29 15:28
>  http://bugs.bacula.org/view.php?id=1359#c4565 
> ---------------------------------------------------------------------- 
> Well, when we are compiling Bacula, we *must* know what OS is running. 
> Perhaps it was a mistake for the author to use __alpha__ rather than the
> OS. This code was submitted by a user, so I don't exactly know what
> OS/platform it was for.
> 
> Perhaps if you have the system in front of you, you can figure out what
> the correct #ifdefing should be.  In general, it should be something like:
> 
> #ifdef HAVE_xxx_OS
> ...
> ...
> #endif
> 
> I suspect that we should leave the current __alpha__ #ifdefing alone and
> just add a new one for your case after it.
> 
> What is actually used for ioctl_req_t varies a bit, but yes, you are right
> in the case of the error you were seeing (and for most of the silly
> non-POSIX compatible OSes) it should be:
> 
> #define ioctl_req_t unsigned long
> 
> For the system in question, I suggest you look in the system header files
> for what is really defined rather than relying on the output from g++. 
> 
> ---------------------------------------------------------------------- 
>  (0004568) kern (administrator) - 2009-08-29 15:35
>  http://bugs.bacula.org/view.php?id=1359#c4568 
> ---------------------------------------------------------------------- 
> I forgot to mention that you can look in <bacula>/src/config.h after
> running ./configure to know which HAVE_XXX_OS is defined. 
> 
> Issue History 
> Date Modified    Username       Field                    Change               
> ====================================================================== 
> 2009-08-28 22:52 jgoerzen       New Issue                                    
> 2009-08-29 07:47 ebollengier    Note Added: 0004556                          
> 2009-08-29 07:47 ebollengier    Status                   new => feedback     
> 2009-08-29 09:17 kern           Note Added: 0004557                          
> 2009-08-29 14:59 jgoerzen       Note Added: 0004562                          
> 2009-08-29 15:02 jgoerzen       Note Added: 0004563                          
> 2009-08-29 15:28 kern           Note Added: 0004565                          
> 2009-08-29 15:35 kern           Note Added: 0004568                          
> ======================================================================
> 
> 




-- 
To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to