#994716 lintian: erroneous unpack-message-for-orig

#994716#5
Date:
2021-09-19 19:31:42 UTC
From:
To:
Since recently, I get the following lintian error message on the glibc
package:

E: glibc source: unpack-message-for-orig glibc_2.32.orig.tar.xz ar failed for glibc-2.32/htl/libpthread.a
E: glibc source: unpack-message-for-orig glibc_2.32.orig.tar.xz ar failed for glibc-2.32/htl/libpthread_pic.a
E: glibc source: unpack-message-for-orig glibc_2.32.orig.tar.xz ar failed for glibc-2.32/htl/libpthread_syms.a

Those file are not archive, but a linker script. For example
libpthread.a contains:

| GROUP(-lpthread_syms)
| GROUP(-lpthread2 -lrt)

Lintian should handle this case.

#994716#10
Date:
2022-04-01 17:03:25 UTC
From:
To:
Hello Lintian maintainers,

There are several bugs here
1) not all files ending by '.a' are 'ar' archive files, and this is not
an error.

2) 'unpack-message-for-orig' is used to report error when
unpacking the orig.tar.gz tarball. This is unrelated to what happen here
(an error of "ar" while inspecting binary package), so this tag is
inappropriate.

The combination is a large set of false positive with inappropriate
error messages, just check

https://lintian.debian.org/tags/unpack-message-for-orig?version=2.114.161

Thanks for maintaining Lintian!

#994716#15
Date:
2022-07-17 12:45:17 UTC
From:
To:
Package: lintian
Followup-For: Bug #994716

More generally, lintian should not assume that .a files are archive, that .o are
object files, etc. This leads to too much false positive.

Cheers,

#994716#20
Date:
2022-12-28 12:37:21 UTC
From:
To:
Hello. I was going to report this but I see it's already reported.

Here is another false positive:

lintian believes that the file testdir/t.a in original-awk
source is an ar archive and produces this output:

E: original-awk source: unpack-message-for-orig original-awk_2022-01-22.orig.tar.gz . ar failed for awk-20220122/testdir/t.a

The contents of the file, however, is the following:

	{if (amount[$2] "" == "") item[++num] = $2;
	 amount[$2] += $1
	}
END	{for (i=1; i<=num; i++)
		print item[i], amount[item[i]]
	}

and the "file" command correctly identifies it not as an ar archive:

$ file testdir/*.a
testdir/t.a: ASCII text


Therefore I propose that lintian only tries to unpack *.a files when
the "file" command identifies it as an "ar" archive:

$ file /lib/x86_64-linux-gnu/libc.a
/lib/x86_64-linux-gnu/libc.a: current ar archive

Thanks.