Package: cpio
Version: 2.6-16
Severity: important

A recent LSB 3.1 runtime test journal reports, among other things:

200|700 5 18:36:15|TP Start
520|700 5 23550 1 1|* When -i option is specified, if extract files is selected
in pattern form, '?' is matched 1 file-system-safe characters.
520|700 5 23550 1 2|
520|700 5 23550 1 3|The archive file doesn't preserve file contents.
220|700 5 1 18:36:15|FAIL
200|700 6 18:36:15|TP Start
520|700 6 23550 1 1|* When -i option is specified, if extract files is selected
in pattern form, matching list expression '[...]' is matched any one of the 
enclosed file-system-safe characters.
520|700 6 23550 1 2|
520|700 6 23550 1 3|The archive file doesn't preserve file contents.
220|700 6 1 18:36:16|FAIL
200|700 7 18:36:16|TP Start
520|700 7 23550 1 1|* When -i option is specified, if extract files is selected
in pattern form, a range expression '[c-c]' is matched any symbol between the 
pair (inclusive). The range expression may not be matched multi-character 
collating element and the range expression can be based on code point order 
instead of collating element order.
520|700 7 23550 1 2|
520|700 7 23550 1 3|The archive file doesn't preserve file contents.
220|700 7 1 18:36:16|FAIL

The tests check that various Unicode characters in file names can be
extracted properly when referenced via globs.  cpio 2.5 from sarge (and
most other distros) passes these tests, while cpio from Fedora Core 5 is
also known to fail these tests.

The problem turns out to be in the build system.  As you may be aware,
part of the cpio source actually lives in the "paxutils" project on
Savannah, and on occasion cpio and paxutils can get a little out of
sync.

At some point, paxutils started using more than one m4 file for its
autoconf-age, and one of the new files use AC_CHECK_FUNCS_ONCE to look
for the setlocale function.  However, cpio did not pick up on this
change, and did not include the new m4 file.  This meant that
HAVE_SETLOCALE was not being set in cpio's config.h.

The header file lib/system.h in cpio comes from paxutils, and includes
the following code:

#if !HAVE_SETLOCALE
# define setlocale(category, locale) /* empty */
#endif

Thus, even though Debian has a proper setlocale(), the call to that
function in cpio was removed.

There are a few ways to fix it:

 - Include AC_CHECK_FUNCS_ONCE(setlocale) directly in configure.ac, and
regenerate configure and config.h.in.

 - #define HAVE_SETLOCALE 1 in lib/system.h.

 - Remove the three lines starting with "#if !HAVE_SETLOCALE" from
lib/system.h.

I can confirm that the last of those solutions works, in that the cpio
2.6-16 package plus that change compiles, installs, and passes the LSB
tests that it failed before.

All of this was discovered by examining cpio CVS, which has since fixed
the problem with the build system, and which passes the tests.  Fixing
the build system the way it was done upstream would probably generate a
much larger change, since it would also incorporate irrelevant changes
in paxutils and cpio.

Severity set to "important" because this is a show-stopper for LSB
certification.  I will let the release managers decide whether this
merits a release-critical priority.



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

Reply via email to