Bug#800846: error message in preinst doesn't match test, checks for kernel 3.2 but tells the user it needs 2.6.32

2015-10-04 Thread peter green

Package: libc6
Version: 2.21-0experimental1

I had an expermimental chroot on a system that happened to be running an 
old kernel. I got an error message about needing a 2.6.32 kernel which 
was strange as I already had a 2.6.32 kernel.


Reading the preinst revealed

# The GNU libc requires a >= 3.2 kernel, found in wheezy
if linux_compare_versions "$kernel_ver" lt 3.2
then
echo WARNING: this version of the GNU libc requires kernel 
version
echo 2.6.32 or later.  Please upgrade your kernel before 
installing

echo glibc.
kernel26_help

exit 1
fi

So it's checking for 3.2 but telling the user they need 2.6.32.



Bug#669858: eglibc FTBFS on mips and mipsel, Encountered regressions that don't match expected failures:

2012-04-21 Thread peter green

Package: eglibc
Severity: serious


From the mips build log (the mipsel one looks the same to me though

I haven't done a thourough check to see if the list of failed tests
is identical

Encountered regressions that don't match expected failures:
tst-cancel24, Error 1
tst-cancelx10, Error 1
tst-cancelx11, Error 1
tst-cancelx12, Error 1
tst-cancelx13, Error 1
tst-cancelx14, Error 1
tst-cancelx15, Error 1
tst-cancelx16, Error 1
tst-cancelx17, Error 1
tst-cancelx18, Error 1
tst-cancelx20, Error 1
tst-cancelx21, Error 1
tst-cancelx4, Error 1
tst-cancelx5, Error 1
tst-cancelx8, Error 1
tst-cancelx9, Error 1
tst-chk4, Error 1
tst-chk5, Error 1
tst-chk6, Error 1
tst-cleanupx0, Error 1
tst-cleanupx1, Error 1
tst-cleanupx3, Error 1
tst-cleanupx4, Error 1
tst-lfschk4, Error 1
tst-lfschk5, Error 1
tst-lfschk6, Error 1
tst-mqueue8x, Error 1
tst-oncex3, Error 1
tst-oncex4, Error 1






--
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4f92a2e4.2000...@p10link.net



Bug#652844: please include patch to reduce namespace polloution from sys/ucontext.h on arm

2011-12-20 Thread peter green

package: libc6-dev
version:
severity: important
justification: causes other packages to FTBFS

On arm* sys/ucontext.h heavilly polloutes the global
namespace firstly by including sys/user.h (which defines
among other things a type called struct user and secondly
by defining symbols and #defines named R? to represent
the processor registers.

That issue in itself is nothing new but fairly recently*
signal.h started including sys/ucontext.h by default
causing programs that (quite reasonable IMO) used those
names for their own symbols to fail to build on arm. This
has been especially noticable recently because debian is
trying to build the new armhf port.

After discussions on debian-arm/debian-glibc/linaro-dev
(I do not know which responders came from which list)
I was given the following advice on the struct user
issue by Ulrich Weigand.

Now, glibc also provides a file sys/ucontext.h that defines
layouts of register sets for use with signal handlers as well
as the makecontext/setcontext/getcontext family of routines.

Usually, those layouts tend to be in fact identical to the
layouts described in sys/user.h / sys/procfs.h.  Apparently,
whoever implemented the ARM version of sys/ucontext.h was
trying to avoid some seemingly unnecessary code duplication
by making sys/ucontext.h *include* sys/procfs.h and using
the information from there directly.  This is not done on other
platforms, for precisely the reason that the sys/procfs.h
and sys/user.h headers do pollute the name space ...

So I think the right thing to do in the short term would be to
stop sys/ucontext.h including sys/procfs.h, and instead add the
register set information there directly, even if that means some
duplication of code.  (Again, since this is never-changing ABI,
duplication isn't actually all that bad.  Also, all the other
platforms do it that way too, so why should ARM be different ...)

On the issue of the R? definitions I proposed renaming them
to REG_R?. The use of a REG_ prefix is consistent with
x86, x64 and sparc (I couldn't find any comparable definitions
at all on other architectures I looked at) I asked what the
impact of this change would be on the aforementioned mailing
lists and got the following reply from Konstantinos Margaritis

at worst the packages that had to be workaround on arm* for this, can
have the workaround removed.

The attached patch implements these changes (note that the filename
of the patch currently starts with unaassigned as that was the
atatus when I prepared it.

My tests do not show any new failures in the libc testsuite (though
I do get failures that debian considers unexpected regardless
of whether this patch is applied or not)

The patch was accepted upstream by Joseph Myers jos...@codesourcery.com
http://sourceware.org/git/?p=glibc-ports.git;a=commitdiff;h=c1e30fd8bffd53aa9849fe410ca8a4204c91f836

Please include this change in the next upload of eglibc to sid.


* I have not investigated exactly when this change occoured
but it was somewhere between the version in debian squeeze
and the version in debian wheezy.



Index: eglibc-2.13/ports/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
===
--- eglibc-2.13.orig/ports/sysdeps/unix/sysv/linux/arm/sys/ucontext.h	2006-08-17 01:23:58.0 +
+++ eglibc-2.13/ports/sysdeps/unix/sysv/linux/arm/sys/ucontext.h	2011-12-17 12:52:43.0 +
@@ -23,7 +23,6 @@
 
 #include features.h
 #include signal.h
-#include sys/procfs.h
 
 /* We need the signal context definitions even if they are not used
included in signal.h.  */
@@ -35,47 +34,64 @@
 #define NGREG	18
 
 /* Container for all general registers.  */
-typedef elf_gregset_t gregset_t;
+typedef greg_t gregset_t[NGREG];
 
 /* Number of each register is the `gregset_t' array.  */
 enum
 {
-  R0 = 0,
-#define R0	R0
-  R1 = 1,
-#define R1	R1
-  R2 = 2,
-#define R2	R2
-  R3 = 3,
-#define R3	R3
-  R4 = 4,
-#define R4	R4
-  R5 = 5,
-#define R5	R5
-  R6 = 6,
-#define R6	R6
-  R7 = 7,
-#define R7	R7
-  R8 = 8,
-#define R8	R8
-  R9 = 9,
-#define R9	R9
-  R10 = 10,
-#define R10	R10
-  R11 = 11,
-#define R11	R11
-  R12 = 12,
-#define R12	R12
-  R13 = 13,
-#define R13	R13
-  R14 = 14,
-#define R14	R14
-  R15 = 15
-#define R15	R15
+  REG_R0 = 0,
+#define REG_R0	REG_R0
+  REG_R1 = 1,
+#define REG_R1	REG_R1
+  REG_R2 = 2,
+#define REG_R2	REG_R2
+  REG_R3 = 3,
+#define REG_R3	REG_R3
+  REG_R4 = 4,
+#define REG_R4	REG_R4
+  REG_R5 = 5,
+#define REG_R5	REG_R5
+  REG_R6 = 6,
+#define REG_R6	REG_R6
+  REG_R7 = 7,
+#define REG_R7	REG_R7
+  REG_R8 = 8,
+#define REG_R8	REG_R8
+  REG_R9 = 9,
+#define REG_R9	REG_R9
+  REG_R10 = 10,
+#define REG_R10	REG_R10
+  REG_R11 = 11,
+#define REG_R11	REG_R11
+  REG_R12 = 12,
+#define REG_R12	REG_R12
+  REG_R13 = 13,
+#define REG_R13	REG_R13
+  REG_R14 = 14,
+#define REG_R14	REG_R14
+  REG_R15 = 15
+#define REG_R15	REG_R15
 };
 
+struct _libc_fpstate
+{
+  struct
+  {
+unsigned int sign1:1;
+unsigned int 

Re: [patch] reduce namespace polloution from sys/ucontext.h on arm

2011-12-19 Thread peter green

Joseph S. Myers wrote:
The most obvious users of these definitions would be (native) GDB and 
gdbserver - do those still build OK (i.e. include the correct headers to 
get the definitions they need and not rely on any definitions that were 
removed) after this patch?
  
I have built the debian gdb package (which builds both gdb and 
gdbserver) sucessfully

on a system with this patch.

Have you verified that it still works to include both sys/ucontext.h and 
sys/procfs.h in the same source file, in either order?
  
I had already tried that in one order, just tried the other order too. 
Both work fine.


When I copied a structure definition over to remove the dependency I 
made sure
to rename it (following the name used for the equivilent structure on 
amd64).



--
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4eeff00c.3060...@p10link.net



Re: struct user conflicts on arm

2011-12-17 Thread peter green

Konstantinos Margaritis wrote:

Does anyone know what the impact of renaming these to use a REG_ prefix like
i386, amd64 and sparc do* would be?
at worst the packages that had to be workaround on arm* for this, can

have the workaround removed.
I have prepared a patch (attatched) that eliminates the dependency on 
sys/procfs.h and renames R? to REG_R?. I have tested it by modifying the 
header locally. I am now attempting to rebuild glibc with the patch.

After rebuilding glibc I will install it and attempt to rebuild GDB.

Please comment on the patch and advise on the best route for submission
(that is should I go through debian, through eglibc or direct to glibc?)


Since you're in the process of fixing things for glibc/arm
Note that I am not a glibc developer nor am I a dd (and even if I was a 
dd I don't think I would NMU glibc). I'm just a user with an interest

in the future of debian on arm.


would you
mind also looking at WCHAR_MIN/MAX undefined for arm?

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=598937

They most certainly are defined. The trouble is that WCHAR_MAX is defined
in a strange way.

#define __WCHAR_MAX ( (wchar_t) - 1 )

This definition is fine for normal c or c++ code but
it cannot be properly evaluated in the context of a 
preprocessor conditional.


The bug report has a patch (actually a replacement for
an existing patch) which looks fine to me.




Index: eglibc-2.13/ports/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
===
--- eglibc-2.13.orig/ports/sysdeps/unix/sysv/linux/arm/sys/ucontext.h	2006-08-17 01:23:58.0 +
+++ eglibc-2.13/ports/sysdeps/unix/sysv/linux/arm/sys/ucontext.h	2011-12-17 12:52:43.0 +
@@ -23,7 +23,6 @@
 
 #include features.h
 #include signal.h
-#include sys/procfs.h
 
 /* We need the signal context definitions even if they are not used
included in signal.h.  */
@@ -35,47 +34,64 @@
 #define NGREG	18
 
 /* Container for all general registers.  */
-typedef elf_gregset_t gregset_t;
+typedef greg_t gregset_t[NGREG];
 
 /* Number of each register is the `gregset_t' array.  */
 enum
 {
-  R0 = 0,
-#define R0	R0
-  R1 = 1,
-#define R1	R1
-  R2 = 2,
-#define R2	R2
-  R3 = 3,
-#define R3	R3
-  R4 = 4,
-#define R4	R4
-  R5 = 5,
-#define R5	R5
-  R6 = 6,
-#define R6	R6
-  R7 = 7,
-#define R7	R7
-  R8 = 8,
-#define R8	R8
-  R9 = 9,
-#define R9	R9
-  R10 = 10,
-#define R10	R10
-  R11 = 11,
-#define R11	R11
-  R12 = 12,
-#define R12	R12
-  R13 = 13,
-#define R13	R13
-  R14 = 14,
-#define R14	R14
-  R15 = 15
-#define R15	R15
+  REG_R0 = 0,
+#define REG_R0	REG_R0
+  REG_R1 = 1,
+#define REG_R1	REG_R1
+  REG_R2 = 2,
+#define REG_R2	REG_R2
+  REG_R3 = 3,
+#define REG_R3	REG_R3
+  REG_R4 = 4,
+#define REG_R4	REG_R4
+  REG_R5 = 5,
+#define REG_R5	REG_R5
+  REG_R6 = 6,
+#define REG_R6	REG_R6
+  REG_R7 = 7,
+#define REG_R7	REG_R7
+  REG_R8 = 8,
+#define REG_R8	REG_R8
+  REG_R9 = 9,
+#define REG_R9	REG_R9
+  REG_R10 = 10,
+#define REG_R10	REG_R10
+  REG_R11 = 11,
+#define REG_R11	REG_R11
+  REG_R12 = 12,
+#define REG_R12	REG_R12
+  REG_R13 = 13,
+#define REG_R13	REG_R13
+  REG_R14 = 14,
+#define REG_R14	REG_R14
+  REG_R15 = 15
+#define REG_R15	REG_R15
 };
 
+struct _libc_fpstate
+{
+  struct
+  {
+unsigned int sign1:1;
+unsigned int unused:15;
+unsigned int sign2:1;
+unsigned int exponent:14;
+unsigned int j:1;
+unsigned int mantissa1:31;
+unsigned int mantissa0:32;
+  } fpregs[8];
+  unsigned int fpsr:32;
+  unsigned int fpcr:32;
+  unsigned char ftype[8];
+  unsigned int init_flag;
+};
 /* Structure to describe FPU registers.  */
-typedef elf_fpregset_t	fpregset_t;
+typedef struct _libc_fpstate	fpregset_t;
 
 /* Context to describe whole processor state.  This only describes
the core registers; coprocessor registers get saved elsewhere


Re: struct user conflicts on arm

2011-12-17 Thread peter green



ISO C99 says that WCHAR_MAX must be a constant expression and the
above definition is such an expression. Technically the program needs
fixing (see below though for the standards matter but so do users),
there is nothing wrong with a type cast and a constant value e.g.
signed -1 converted to unsigned int (ARM GNU/Linux value for wchar_t).

However, the real issue here is that it differs from x86, the most
common architecture, and differences from x86 cause porting problems.
The patch itself is insufficient because it doesn't take into account
wordsize. When we switch to the 64-bit ARM ABI it should just work.
Therefore you need to check for __WORDSIZE and *only* define a value
if we are *not* 64-bits. You don't want to define anything for the
64-bit case until the 64-bit ARM ABI is out and finalized.
  
Thanks for the info, I may look at this later. The ucontext namespace 
pollution

seems to be a bigger issue though.


Your patch to fix ucontext namespace pollution looks good, please post
that to libc-ports for review
should I send it immidiately or should I wait until I have test results 
to give them?

 and make sure to state what testing
you've done with the patch. At a minimum you should run the glibc
testsuite 
Afaict the debian packaging automatically runs the testsuite and 
compares it against
a list of expected failures (ideally that list would be empty but in 
real life).


Right now i'm running into unexpected testsuite failures (unfortunately 
the last
test build I didn't take a log of so i've got to run it again to find 
out details of the
failures) but I do not know if those failures are related to my patch, 
related to

changes in the build environment since the package was last built in debian
or related to my hardware. Further testing will be neeed to establish 
that (and

said testing takes a while, a beagleboard xm isn't exactly a speed demon).


and build gdb with those newly installed headers.
  
Will do once I get glibc built and installed, are there any specific 
tests you

want doing with gdb or is testing it still builds sufficient??


Cheers,
Carlos.
  

Thanks for the help and advice so-far.


--
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4eed39e0.30...@p10link.net



Re: struct user conflicts on arm

2011-12-16 Thread peter green

Ulrich WeigandNow, glibc also provides a file sys/ucontext.h that defines
Ulrich Weigandlayouts of register sets for use with signal handlers as well
Ulrich Weigandas the makecontext/setcontext/getcontext family of routines.
Ulrich Weigand
Ulrich WeigandUsually, those layouts tend to be in fact identical to the
Ulrich Weigandlayouts described in sys/user.h / sys/procfs.h.  Apparently,
Ulrich Weigandwhoever implemented the ARM version of sys/ucontext.h was
Ulrich Weigandtrying to avoid some seemingly unnecessary code duplication
Ulrich Weigandby making sys/ucontext.h *include* sys/procfs.h and using
Ulrich Weigandthe information from there directly.  This is not done on other
Ulrich Weigandplatforms, for precisely the reason that the sys/procfs.h
Ulrich Weigandand sys/user.h headers do pollute the name space ...
Ulrich Weigand
Ulrich WeigandSo I think the right thing to do in the short term would be to
Ulrich Weigandstop sys/ucontext.h including sys/procfs.h, and instead add 
the
Ulrich Weigandregister set information there directly, even if that means some
Ulrich Weigandduplication of code.  (Again, since this is never-changing ABI,
Ulrich Weigandduplication isn't actually all that bad.  Also, all the other
Ulrich Weigandplatforms do it that way too, so why should ARM be different ...)
Makes sense to me

While we are talking about modifying sys/ucontext.h David Given
raised another issue with that header (for those reading on the linaro list his
post can be found at http://lists.debian.org/debian-arm/2011/12/msg00048.html)
David GivenThis might be a good time to mention that on ARM, sys/ucontext.h 
defines
David Givenboth symbols and preprocessor macros called R0, R1, R2, etc in the
David Givenglobal namespace; this is causing one of my packages to fail to 
build
David Givendue to symbol collision.
David Given
David GivenI'm fixing the package, but naming symbols stuff like that is still
David Givenpretty antisocial...
Does anyone know what the impact of renaming these to use a REG_ prefix like
i386, amd64 and sparc do* would be?

* ia64,mips, mipsel, powerpc, 390 and s390x don't seem to define such
symbols at all.


--
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4eec420f.8010...@postgrad.manchester.ac.uk



Re: struct user conflicts on armel and armfh

2011-12-15 Thread peter green
As a first step why don't you try breaking the header include chain in 
glibc, and rebuild gdb to ensure everything works?
It looks like there are two places the chain could reasonablly be 
broken. sys/ucontext.h could stop including sys/procfs.h
(this would match amd64) or signal.h could stop including sys/ucontext.h 
(this would match armel squeeze)


I first tried breaking the chain by removing the include of sys/procfs.h 
from sys/ucontext.h (this would make arm* consistent with i386 and 
amd64) but it seems sys/ucontext.h on arm DOES use a couple of things 
from sys/procfs.h so breaking the chain at this point would require 
investigating those.


Next I tried breaking the chain by commenting out the include of 
sys/ucontext.h in signal.h. This seemed more positive, a test program 
that included signal.h still built fine as did gdb.


So that brings us back to why is signal/h including sys/ucontext.h by 
default in wheezy/sid when it didn't do so in squeeze. It seems the 
cause is the change of the following ifdef


Squeeze:
#ifdef 
__USE_XOPEN
/* This will define `ucontext_t' and `mcontext_t'.  
*/ 
#  include 
sys/ucontext.h
# endif



Wheezy/Sid:
# if defined __USE_XOPEN || defined 
__USE_XOPEN2K8 
/* This will define `ucontext_t' and `mcontext_t'.  
*/ 
#  include 
sys/ucontext.h
# endif

seems to be defined by default

From my tests it seems that in both squeeze and sid __USE_XOPEN2K8 gets 
defined by default

(in ) but __USE_XOPEN does not.
so this change to the ifdef changed it from default no to default yes

Reverting the change the ifdef would solve the issue but before 
submitting a patch to actually

do that I would like to know why the change was made in the first place.


--
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4eea41f4.8010...@p10link.net



Re: struct user conflicts on armel and armfh

2011-12-14 Thread peter green

Carlos O'Donell wrote:

As an upstream glibc maintainer I would be happy to see this fixed in
glibc and gdb, but nobody has stepped up to fix it.
  

Ok.

The `struct user` is used by the gdbserver code that uses ptrace
(PTRACE_PEEKUSR/POKEUSR) to peek/poke at the inferior and read out
stored register values from the USER area. The userspace definition of
`struct user` is equivalent to task_regs(child) layout and is an
agreement between the kernel and userspace for debugging.

There appears to be no good reason for it to be called `struct user`
on Linux (on other OSs this is harder to control), it should have been
named something that doesn't clash with the applications namespace
e.g. struct __user.
  

While renaming the structure would be one soloution to the
conflicts changing a long standing* interface to solve a
problem that is arch specific and has only recently become a
significant issue** seems like a wrong approach to me.

The real problem IMO is that headers that are supposed to be
implementing special purpose interfaces for debugging are
being pulled in by headers that are supposed to be implementing
common public interfaces.

* at least as far back as debian slink
** In squeeze armel signal.h would only include sys/ucontext.h
 if explicit defines were set. In wheezy and sid it seems to
 include it by default.

Are you volunteering to change glibc and gdb, and work with upstream
to get the changes merged?
  

Depends on what exactly is involved in doing that and whether we
can agree on how things should be fixed.

As I said i'm not convinced that gdb needs to be changed.


--
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4ee99eaf.80...@postgrad.manchester.ac.uk



struct user conflicts on armel and armfh

2011-12-13 Thread peter green
recently i've been seeing some packages FTBFS on armhf with definition 
clashes of struct
user. Test building packages the package on armel has invariblly shown 
the issue
happening there as well despite the same version of the source package 
having built there
successfully in the past. I've also seen mention of this issue in bug 
reports from others.


Afaict so far this issue has been dealt with on the appliation side but 
i'm not convinced
that expecting application developers to rename a structure that uses a 
common and

obvious name is reasonbable.

taking ratbox-services as an example the current version was built 
successfully on

armel 563 days ago, it failed on armhf 3 days ago.

-DHELPDIR=\/usr/share/ratbox-services/help\ 
-DLANGDIR=\/usr/share/ratbox-services/langs\ -c c_error.c
In file included from c_error.c:38:0:
../include/client.h:42:8: error: redefinition of 'struct user'
/usr/include/arm-linux-gnueabihf/sys/user.h:49:8: note: originally defined here
make[2]: *** [c_error.o] Error 1

I have reproduced this issue on armel sid and armel wheezy. The package
builds succesfully on armel squeeze.

Some testing reveals that in this case sys/user.h is pulled in by sys/procfs.h which in turn 
is pulled in by sys/ucontext.h which is pulled in by signal.h which is in turn pulled in by

signal.h which is in turn pulled in by sys/wait.h which is pulled in by a 
header in the app.

On amd64 (and presumablly other architectures) sys/ucontext.h does not include 
sys/procfs.h
so the issue does not happen.

I then took a look at the comments in the various headers along the chain.

sys/procfs.h has the following comment


/* This is somewhat modelled after the file of the same name on SVR4
  systems.  It provides a definition of the core file format for ELF
  used on Linux.  It doesn't have anything to do with the /proc file
  system, even though Linux has one.

  Anyway, the whole purpose of this file is for GDB and GDB only.
  Don't read too much into it.  Don't use it for anything other than
  GDB unless you know what you are doing.  */



and sys/user.h has the following comment


/* The whole purpose of this file is for GDB and GDB only.  Don't read
  too much into it.  Don't use it for anything other than GDB unless
  you know what you are doing.  */


meanwhile sys/wait.h has the following comment


/*
*POSIX Standard: 3.2.1 Wait for Process Terminationsys/wait.h
*/


,signal.h has the following comment


/*
*ISO C99 Standard: 7.14 Signal handling signal.h
*/


and sys/ucontext.h has the following comment


/* System V/ARM ABI compliant context switching support.  */


So now i've described the situation I have two questions

why the heck are headers that are supposedly for GDB and GDB only
and that define a structure name that is likely to conflict with 
structures in an application being pulled in by headers that are

supposed to be implementing standard interfaces?

Do porters and/or glibc maintainers think this should be dealt
with on the libc6-dev side or should I continue to file patches 
that deal with this issue on the application side?



--
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4ee7e6e3.8050...@postgrad.manchester.ac.uk



Re: Bug#551775: bitlbee: Uninstallable package due to conflict with libc6

2009-11-07 Thread peter green

oops forgot to actually cc it like I said I would


Does anyone know if there is any particular reason that bitlbee uses
libresolv.a rather than libresolv.so ?



Yes; the fact that Ulrich Drepper thought it'd be a good idea to declare
this API private and unsupported, claiming it's for internal use only,
even though it's documented in various places already, including IIRC
O'Reilly's DNS  BIND.
  

I can see that as a good reason for using the static version in upstream
bitlbee. Nevertheless debian does appear to provide a libresolv.so with
a proper soname and linking against it does seem to give sane
dependencies from dpkg-shlibdeps so maybe it would be a good idea to use
it in the debian packages. Ccing debian-glibc to see if they have an
opinion on the matter.

 Does anyone know if statically linking libresolv and dynamically linking
 glibc then upgrading glibc is supposed to be supported?
It's never been a problem so far, and the previous BitlBee package went
through several libc6 revisions. TBH I'm more than willing to figure out
some way to drop this strict dependency while continuing to use
libresolv.a. If someone ever decides to change the res API I can always
do a reupload that temporarily disables SRV record lookups, for example.

Is there an easy way to do that? I see the -x flag to dpkg-shlibdeps,
but that would completely eliminate the libc6 dependencies, and that's
not really what I want, of course.
  

You could always sed it out of debian/substvars between the call to
dpkg-shlibdeps and dpkg-gencontrol but it's a bit ugly to say the least.


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



Bug#454266: upgrade to 2.7 fails, leaving system unusable

2007-12-04 Thread peter green

+++-==-==-
un  libc6-i686 none (no description available)



The file comes from libc6-i686 version 2.6.1-1. According to the symlink
it has been installed on 2007-08-21 (ie the date it migrates to
testing).

After a bit of thinking I have come up with what I belive is a likely 
explanation
for this incident and other similar ones that have happened in the past.

Installation on that particular day would seem to indicate it was installed as 
part of an update.


un in a dpkg -l generally means there is no entry for the package in 
/var/lib/dpkg/status. If the package was removed it would be rc and if purged 
it would be pn


This would seem to indicate that libc6-i686 was previously installed and being 
updated normally but at some point during or after the update to 2.6.1-1 it's 
entry in the dpkg status file completely dissapeared.


IIRC some filesystems that journal data but not metadata can zero out blocks of
a file. I did a quick test of this idea by doing 


dd if=/dev/zero of=/var/lib/dpkg/status bs=4096 count=1 seek=1

and then running apt-get -f install. I tried the same with other seeks too. The 
bottom
line is zeroing out the first block of that file causes dpkg to fail but 
zeroing out
other blocks will often cause dpkg to simply forget that some packages are 
installed
(and probablly get some wrong info about whatever packages happen to fall on 
the block
edges).

The user will be told to run apt-get -f install and upon doing so it will appear
thier system is fixed but packages like libc6-i686 which have little if anything
depending on them will be left extracted on the system with no record in the 
dpkg
database.





--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#453264: libc6-dev: fails to define ptrdiff_t in malloc.h

2007-11-29 Thread peter green
It's not that easy in the swi-prolog case.  The two headers are included 
in two separate headers, which are then included into the .c file.  The 
order cannot be switched around, because the former header includes 
config.h, which is needed for the second header to work at all (IIRC).

Can't you just include malloc.h directly from the C file before including the 
header that indirectly includes wchar.h ?

Generally standard headers are designed so that once you have included them 
once including them again does nothing.






--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#421037: libc6 upgrade apparently failing on some netwinders

2007-05-02 Thread peter green
nearly a week ago a bug was filed against libc6 
(http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=421037) reporting a sigill 
when upgrading on a netwinder. Replies to the bug report say that on some 
netwinders it does work.

there is still no information in the bug report log on what the illegal 
instruction was and very little information on the characteristics (model 
number, kernel version etc) of the netwinders that suffer from the issue.

can any arm porters shed any light on this issue?




Bug#419189: i'd suggest a check

2007-04-15 Thread Peter Green
it seems like it would be a good idea to check for non dpkg owned versions
of problem libraries sitting in that directory in the preinst and either
aborting the upgrade before the system is left in a badly broken state or
moving the files out of the way.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]