http://bugs.winehq.org/show_bug.cgi?id=19858
Summary: cygwin tar upset it can't change timestamps; breaks build of cygwin's bash Product: Wine Version: 1.1.23 Platform: PC URL: http://cygwin.com OS/Version: Linux Status: NEW Keywords: download, source Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com
To debug bug 19856, I decided to try to build cygwin's bash from source so I could see why it refuses to run some commands. Hilarity ensued.
To repeat: 1) run $ winetricks cygwin and select gcc, automake, patch, and cygport
2) start a cygwin shell $ cd ~/.wine/drive_c/cygwin $ wine wineconsole cmd /c cygwin.bat then use that for all further commands
3) read 'man cygport'
4) download the bash source package from your favorite cygwin mirror, e.g. $ wget http://cygwin.osuosl.org/release/bash/bash-3.2.49-22-src.tar.bz2
5) unpack the source tarball and use cygport to prepare and build it $ mkdir temp $ cd temp $ tar -xjvf ../bash-3.2.49-22-src.tar.bz2 $ cygport prep bash*cygport
First problem: when cygport prep tries to unpack the inner tarball, it has a conniption fit because tar can't adjust the timestamps on its output files.
... tar: bash-3.2/tests/history.list: Kann utime nicht ausführen: Permission denied tar: bash-3.2/ABOUT-NLS: Kann utime nicht ausführen: Permission denied tar: Exiting with failure status due to previous errors + warn 'tar zxf bash-3.2.tar.gz failed'
Here's a minimal linux commandline to reproduce: gunzip bash-3.2.tar.gz wineconsole 'c:\cygwin\bin\tar.exe' -xf bash-3.2.tar bash-3.2/examples/bashdb/PERMISSION
Looks like tar creates the file, then tries to create it again, and gets confused? Maybe cygwin is cleverly trying to use NtCreateFile somehow to change its timestamp... I'll attach a log.
Workaround: edit cygwin's /bin/cygport and change the two lines warn "${unpack_cmd} ${unpack_file_name} failed" to say echo "${unpack_cmd} ${unpack_file_name} failed"
I'll file more bugs for the rest of the process.
http://bugs.winehq.org/show_bug.cgi?id=19858
--- Comment #1 from Dan Kegel dank@kegel.com 2009-08-27 15:17:14 --- Created an attachment (id=23284) --> (http://bugs.winehq.org/attachment.cgi?id=23284) +relay,+file log of interesting bit of tar -xf
I should mention: the short reproducer does the gunzip in linux to avoid running into yet another bug in cygwin.
http://bugs.winehq.org/show_bug.cgi?id=19858
--- Comment #2 from butraxz@gmail.com 2013-08-05 12:25:06 CDT --- This ticket has not been updated for over 900 days. Development recommends to check the status on your bug every release or two and let to be known if the bug is still present. If not, mark it fixed.
Is this still an issue with 1.7.0 or higher ?
https://bugs.winehq.org/show_bug.cgi?id=19858
André H. nerv@dawncrow.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |nerv@dawncrow.de
--- Comment #3 from André H. nerv@dawncrow.de --- (In reply to Dan Kegel from comment #1)
Created attachment 23284 [details] +relay,+file log of interesting bit of tar -xf
This is blocked by other bugs and problems at the moment, but looking at the log the interesting part comes down to:
... 001b:Call ntdll.NtCreateFile(0064c62c,40100080,0064c640,0064c630,00000000,00000081,00000007,00000002,00000420,00000000,00000000) ret=6101bb1a warn:file:wine_nt_to_unix_file_name L"\??\c:\bb\bash-3.2\examples\bashdb\PERMISSION" -> "/home/dank/.wine/dosdevices/c:/bb/bash-3.2/examples/bashdb/PERMISSION" required a case-insensitive search trace:file:wine_nt_to_unix_file_name L"\??\c:\bb\bash-3.2\examples\bashdb\PERMISSION" -> "/home/dank/.wine/dosdevices/c:/bb/bash-3.2/examples/bashdb/PERMISSION" 001b:Ret ntdll.NtCreateFile() retval=00000000 ret=6101bb1a ... 001b:Call ntdll.NtCreateFile(0064c42c,00020100,0064c440,0064c430,00000000,00000000,00000007,00000001,00004400,00000000,00000000) ret=6101bb1a trace:file:wine_nt_to_unix_file_name L"\??\c:\bb\bash-3.2\examples\bashdb\PERMISSION" -> "/home/dank/.wine/dosdevices/c:/bb/bash-3.2/examples/bashdb/PERMISSION" 001b:Ret ntdll.NtCreateFile() retval=c0000022 ret=6101bb1a ...