bug-patch
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug-patch] patch-7.2: "make check" problem on HP NonStop: we can't open


From: Joachim Schmitz
Subject: [bug-patch] patch-7.2: "make check" problem on HP NonStop: we can't open() a symlink
Date: Thu, 13 Sep 2012 12:01:30 +0200

.patch-2.7/tests $ make check
make  check-TESTS
.
PASS: crlf-handling
XFAIL: dash-o-append
PASS: empty-files
.
PASS: remember-reject-files
FAIL: symlinks
PASS: unmodified-files
============================================================================
Testsuite summary for GNU patch 2.7
============================================================================
# TOTAL: 34
# PASS:  32
# SKIP:  0
# XFAIL: 1
# FAIL:  1
# XPASS: 0
# ERROR: 0
============================================================================
See tests/test-suite.log
Please report to address@hidden
./patch-2.7/tests $ cat test-suite.log
=========================================
   GNU patch 2.7: tests/test-suite.log
=========================================

# TOTAL: 34
# PASS:  32
# SKIP:  0
# XFAIL: 1
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

XFAIL: dash-o-append
====================

* patch -o a.new a < a.diff
FAILED
expected:
patching file a
patching file a
got:
patching file a.new (read from a)
patching file a.new (read from a)
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file a.new.rej
* cat a.new
FAILED
expected:
two
three
got:
two
one
2 tests (0 passed, 2 failed)

FAIL: symlinks
==============

* ln -s f l
ok
* patch < create.diff || echo "Status: $?"
FAILED
expected:
File l is not a regular file -- can't patch
1 out of 1 hunk ignored -- saving rejects to file l.rej
Status: 1
got:
File l is not a regular file -- can't patch
./patch-2.7/src/patch: **** Can't create temporary file ./l.oVcCGDA : Invalid 
function argument
Status: 2
* cat f
ok
* ln -s f l
ok
* patch < modify.diff || echo "Status: $?"
FAILED
expected:
File l is not a regular file -- can't patch
1 out of 1 hunk ignored -- saving rejects to file l.rej
Status: 1
got:
File l is not a regular file -- can't patch
./patch-2.7/src/patch: **** Can't create temporary file ./l.oiCjgkU : Invalid 
function argument
Status: 2
* ln -s f l
ok
* patch < delete.diff || echo "Status: $?"
FAILED
expected:
File l is not a regular file -- can't patch
1 out of 1 hunk ignored -- saving rejects to file l.rej
Status: 1
got:
File l is not a regular file -- can't patch
./patch-2.7/src/patch: **** Can't create temporary file ./l.olx81mW : Invalid 
function argument
Status: 2
* patch -p1 < create-symlink.diff || echo "Status: $?"
ok
* echo a > target1 && cat symlink
ok
* echo b > target1 && cat symlink
ok
* patch -p1 < modify-symlink.diff || echo "Status: $?"
FAILED
expected:
patching symbolic link symlink
got:
./patch-2.7/src/patch: **** Can't create temporary file ./symlink.oTJw5jX : 
Invalid function argument
Status: 2
* echo a > target2 && cat symlink
FAILED
expected:
a
got:
cat: cannot open symlink
* echo b > target2 && cat symlink
FAILED
expected:
b
got:
cat: cannot open symlink
* patch -p1 < delete-symlink.diff || echo "Status: $?"
FAILED
expected:
patching symbolic link symlink
got:
./patch-2.7/src/patch: **** Can't create temporary file ./symlink.otlv6CR : 
Invalid function argument
Status: 2
* test ! -L symlink
FAILED
* patch -p1 --backup < create-symlink.diff || echo "Status: $?"
FAILED
expected:
patching symbolic link symlink
got:
The next patch would create the file symlink,
which already exists!  Assume -R? [n]
Apply anyway? [n]
Skipping patch.
./patch-2.7/src/patch: **** Can't create temporary file /tmp/poUilvEh : Invalid 
function argument
Status: 2
* test -f symlink.orig && test ! -s symlink.orig
FAILED
* patch -p1 --backup < modify-symlink.diff || echo "Status: $?"
FAILED
expected:
patching symbolic link symlink
got:
./patch-2.7/src/patch: **** Can't create temporary file ./symlink.oGNmIDV : 
Invalid function argument
Status: 2
* echo a > symlink.orig && cat target1
FAILED
expected:
a
got:
cat: cannot open target1
* echo b > symlink.orig && cat target1
FAILED
expected:
b
got:
cat: cannot open target1
* patch -p1 --backup < delete-symlink.diff || echo "Status: $?"
FAILED
expected:
patching symbolic link symlink
got:
./patch-2.7/src/patch: **** Can't create temporary file ./symlink.osxQKXD : 
Invalid function argument
Status: 2
* echo a > symlink.orig && cat target2
FAILED
expected:
a
got:
cat: cannot open target2
* echo b > symlink.orig && cat target2
FAILED
expected:
b
got:
cat: cannot open target2
23 tests (7 passed, 16 failed)

.patch-2.7/tests $

That error gets generated on 2 places of scr/util.c, pretty close to one 
another. 

  for(;;)
    {
      int fd;

      if (gen_tempname (template, 0, flags, GT_NOCREATE))
        pfatal ("Can't create temporary file %s", template);
    retry:
      fd = open (template, O_CREAT | O_EXCL | flags, mode);
      if (fd == -1)
        {
          if (errno == try_makedirs_errno)
            {
              makedirs (template);
              /* FIXME: When patch fails, this may leave around empty
                 directories.  */
              try_makedirs_errno = 0;
              goto retry;
            }
          if (errno == EEXIST)
            continue;
          pfatal ("Can't create temporary file %s", template);
        }
      *name = template;
      return fd;
    }

Further testing showed that we hit the 2nd occurrence. Seems the open() doesn't 
like the mode parameter 0120777, and the S_IFLNK
part of it in particular, and indeed HP NonStop only supports the file type 
bits S_IFREG, S_ISVTX and S_SYNC.

Any ideas how to fix it? Is it fixable at all? Should I just ignore that failed 
test?

Patch-2.6.1 didn't have this problem, all checks passed.

Bye, Jojo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]