Your message dated Sun, 25 May 2014 03:48:44 +0200
with message-id <20140525014843.go7...@sym.noone.org>
has caused the report #591386,
regarding since: Does not work as expected on GNU/Hurd
to be marked as having been forwarded to the upstream software
author(s) m...@welz.org.za
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)
--
591386: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=591386
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Hi Marc,
attached an updated patch for since which makes it also working
properly on GNU/Hurd.
Please include it in your next release of since.
TIA!
Regards, Axel
--
,''`. | Axel Beckert <a...@debian.org>, http://people.debian.org/~abe/
: :' : | Debian Developer, ftp.ch.debian.org Admin
`. `' | 1024D: F067 EA27 26B9 C3FC 1486 202E C09E 1D89 9593 0EDE
`- | 4096R: 2517 B724 C5F6 CA99 5329 6E61 2FF9 CD59 6126 16B5
--- Begin Message ---
Source: since
Version:
Severity: important
Tags: patch
User: debian-h...@lists.debian.org
Usertags: hurd
Hi,
Currently since fails to build from source on GNU/Hurd due to failed
tests. The problem is that dev_t is an unsigned integer, i.e. 4 bytes,
on Hurd but since expects dev_t to be 8 bytes. Therefore define the
internal device d_dev to be of type "unsigned long long integer" to enable
proper
functionality.
According to Emilio Pozuelo Monfort <po...@debian.org> this is a bug in Hurd,
not
since, see below (Message #10):
> Looking at why the string format is incorrect, I've found that
> make_fmt_field()
> (the function that creates the format string) is called for that argument
> with a
> dev_t argument, while the st_dev member of struct stat is not of type dev_t,
> but
> of __fsid_t. This seems to be a POSIX violation (because sizeof(__fsid_t) !=
> sizeof(dev_t), so it would be a bug in Hurd and not in since.
This seems to be correct:
According to
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/stat.h.html
The stat structure shall contain at least the following members:
dev_t st_dev Device ID of device containing file.
...
However /usr/include/i386-gnu/bits/stat.h shows:
struct stat
{
...
__fsid_t st_fsid; /* File system ID. */
#define st_dev st_fsid
...
}
and /usr/include/i386-gnu/bits/types.h:
__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */
__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */
...
#if __WORDSIZE == 32
# define __UQUAD_TYPE __u_quad_t
#define __U32_TYPE unsigned int
#if __WORDSIZE == 64
typedef long int __quad_t;
typedef unsigned long int __u_quad_t;
#else
__extension__ typedef long long int __quad_t;
__extension__ typedef unsigned long long int __u_quad_t;
#endif
with /usr/include/i386-gnu/bits/typesizes.h:
#define __FSID_T_TYPE __UQUAD_TYPE
#define __DEV_T_TYPE __U32_TYPE
So this should probably be reported as a Hurd bug. Perhaps there are
direct consequences of doing that change without careful regression
testing.
Anyway, attached is an updated dev_t.patch to make since working again
on GNU/Hurd.
Thanks!
Date: Mon, 7 Apr 2014 21:00:39 +0200
From: Aleksandar Zlicic <aleksandar.zli...@imgtec.com>
Subject: For mips/mipsel ABIO32, define int d_dev as unsigned long int
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=742940
The cause of this problem is that st_dev member of structure stat,
defined in /usr/include/mipsel-linux-gnu/bits/stat.h,
is expected to be of type dev_t.
But for mips/mipsel ABIO32 it is defined as 'unsigned long int'.
And dev_t type is defined as 'unsigned long long int'.
Same behavior is observed on hurd-i386:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=591386
Attached patch fixes package on mips/mipsel.
Index: since-1.1/since.c
===================================================================
--- since-1.1.orig/since.c
+++ since-1.1/since.c
@@ -52,7 +52,13 @@ struct fmt_map{
struct data_file{
int d_fd;
char *d_name;
+#if defined (__mips__ ) && (_MIPS_SIM == _ABIO32)
+ unsigned long int d_dev;
+#elif defined(__GNU__)
+ unsigned long long int d_dev;
+#else
dev_t d_dev;
+#endif
ino_t d_ino;
off_t d_had;
off_t d_now;
--- End Message ---
--- End Message ---