From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 57338 invoked by alias); 19 Nov 2016 00:15:49 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 57319 invoked by uid 89); 19 Nov 2016 00:15:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 spammy=dal, Engine, appdata, AppData X-HELO: mo4-p00-ob.smtp.rzone.de Received: from mo4-p00-ob.smtp.rzone.de (HELO mo4-p00-ob.smtp.rzone.de) (81.169.146.217) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 19 Nov 2016 00:15:38 +0000 X-RZG-AUTH: :Ln4Re0+Ic/6oZXR1YgKryK8brksyK8dozXDwHXjf9hj/zDNRavU44/ecdQ== X-RZG-CLASS-ID: mo00 Received: from bruno.haible.de (dslb-088-068-033-140.088.068.pools.vodafone-ip.de [88.68.33.140]) by smtp.strato.de (RZmta 39.9 DYNA|AUTH) with ESMTPSA id Z0654fsAJ0FZZIk (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA)) (Client did not present a certificate); Sat, 19 Nov 2016 01:15:35 +0100 (CET) From: Bruno Haible To: cygwin@cygwin.com Subject: difference between cygwin32 and cygwin64 mounts breaks libtool Date: Sat, 19 Nov 2016 01:48:00 -0000 Message-ID: <10970996.g4281J4DVJ@linuix.haible.de> User-Agent: KMail/4.8.5 (Linux/3.8.0-44-generic; KDE/4.8.5; x86_64; ; ) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="nextPart5431097.vuUSWF7Q6W" Content-Transfer-Encoding: 7Bit X-SW-Source: 2016-11/txt/msg00244.txt.bz2 --nextPart5431097.vuUSWF7Q6W Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Content-length: 5573 Hi, Short summary: ============== When a user has installed cygwin64 and the cross-compilation environment for compiling to 32-bit cygwin (i686-pc-cygwin-gcc et al.), then building (with --host=i686-pc-cygwin) a package that creates a shared library and a program that uses this shared library - in different source directories - makes use of libtool features: The uninstalled program (i.e. the program in the build tree) is a wrapper program (built by libtool) that sets up PATH so that the real program should find the (uninstalled) shared library before invoking the real program. This works when building outside of C:\cygwin64 (for example, in C:\Users\bruno), but it does not work when building inside C:\cygwin64 (for example, in C:\cygwin64\home = /home). In this case, the uninstalled program exits with exit code 127. When this uninstalled program is run in a cmd.exe window, it prints a diagnostic message that mentions which shared library it could not find. Short question: =============== Is there a way to configure the mounts of the 32-bit cygwin subsystem and the mounts of the 64-bit cygwin so that this will work also in /home? Long explanation: ================= As described in http://lists.gnu.org/archive/html/bug-libtool/2016-10/msg00000.html I'm building a libiconv tarball in /home/bruno/libiconv-1.15. The build creates a shared library cygiconv-2.dll in lib/.libs/ and an executable src/iconv_no_i18n.exe - this is the wrapper program, a 32-bit Cygwin executable - as well as the real executable src/.libs/iconv_no_i18n.exe (also a 32-bit Cygwin executable, of course). For debugging: 1) I modified the 'libtool' script, changing #if defined LT_DEBUGWRAPPER to #if 1 2) I created a small 32-bit mingw program that prints the value of getenv("PATH") that was passed to it, and temporarily moved it to src/.libs/iconv_no_i18n.exe. With this debugging, I found that the src/iconv_no_i18n.exe (the wrapper script) sets PATH to the value [I have added the line breaks only for clarity] /home/bruno/libiconv-1.15/build-cygwin32/lib/.libs: /usr/local/cygwin32/lib: /usr/local/cygwin32/bin: /home/bruno/libiconv-1.15/build-cygwin32/lib/.libs: /usr/bin: /cygdrive/c/Program Files (x86)/Intel/iCLS Client: /cygdrive/c/Program Files/Intel/iCLS Client: /cygdrive/c/WINDOWS/system32: /cygdrive/c/WINDOWS: /cygdrive/c/WINDOWS/System32/Wbem: /cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0: /cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL: /cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/DAL: /cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT: /cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/IPT: /cygdrive/c/Program Files/Intel/WiFi/bin: /cygdrive/c/Program Files/Common Files/Intel/WirelessCommon: /cygdrive/c/Program Files (x86)/Windows Kits/8.1/Windows Performance Toolkit: /cygdrive/c/Users/bruno/AppData/Local/Microsoft/WindowsApps and that the invoked src/.libs/iconv_no_i18n.exe sees a PATH value of C:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\home\bruno\libiconv-1.15\build-cygwin32\lib\.libs; C:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\usr\local\cygwin32\lib; C:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\usr\local\cygwin32\bin; C:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\home\bruno\libiconv-1.15\build-cygwin32\lib\.libs; C:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\bin; C:\Program Files (x86)\Intel\iCLS Client; C:\Program Files\Intel\iCLS Client; C:\WINDOWS\system32; C:\WINDOWS; C:\WINDOWS\System32\Wbem; C:\WINDOWS\System32\WindowsPowerShell\v1.0; C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL; C:\Program Files\Intel\Intel(R) Management Engine Components\DAL; C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT; C:\Program Files\Intel\Intel(R) Management Engine Components\IPT; C:\Program Files\Intel\WiFi\bin; C:\Program Files\Common Files\Intel\WirelessCommon; C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit; C:\Users\bruno\AppData\Local\Microsoft\WindowsApps The first 4 entries in this PATH are wrong: they reference nonexistent directories. For the program to find its cygiconv-2.dll the PATH would have to be C:\cygwin64\home\bruno\libiconv-1.15\build-cygwin32\lib\.libs; C:\cygwin64\usr\local\cygwin32\lib; C:\cygwin64\usr\local\cygwin32\bin; C:\cygwin64\home\bruno\libiconv-1.15\build-cygwin32\lib\.libs; C:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\bin; C:\Program Files (x86)\Intel\iCLS Client; C:\Program Files\Intel\iCLS Client; C:\WINDOWS\system32; C:\WINDOWS; C:\WINDOWS\System32\Wbem; C:\WINDOWS\System32\WindowsPowerShell\v1.0; C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL; C:\Program Files\Intel\Intel(R) Management Engine Components\DAL; C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT; C:\Program Files\Intel\Intel(R) Management Engine Components\IPT; C:\Program Files\Intel\WiFi\bin; C:\Program Files\Common Files\Intel\WirelessCommon; C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit; C:\Users\bruno\AppData\Local\Microsoft\WindowsApps Now, how can I configure Cygwin so that it will not transform /home/bruno/foo/bar to C:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\home\bruno\foo\bar but instead to C:\cygwin64\home\bruno\foo\bar ? IMO such a configuration should be the default when I install the cross-compilation environment. Bruno --nextPart5431097.vuUSWF7Q6W Content-Disposition: attachment; filename="wrapper-output.txt" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8"; name="wrapper-output.txt" Content-length: 6291 C:\cygwin64\home\bruno\libiconv-1.15\build-cygwin32\src>.\iconv_no_i18n.exe= --help iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:230: libtool wrapper (GNU libtool)= 2.4.6 iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:231: (main) argv[0]: ./iconv_no_i1= 8n iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:232: (main) program_name: iconv_no= _i18n iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:393: (find_executable): ./iconv_no= _i18n iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:348: (check_executable): /cygdrive= /c/cygwin64/home/bruno/libiconv-1.15/build-cygwin32/src/./iconv_no_i18n iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:237: (main) found exe (before syml= ink chase) at: /cygdrive/c/cygwin64/home/bruno/libiconv-1.15/build-cygwin32= /src/./iconv_no_i18n iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:500: checking path component for s= ymlinks: /cygdrive/c/cygwin64/home/bruno/libiconv-1.15/build-cygwin32/src/.= /iconv_no_i18n iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:500: checking path component for s= ymlinks: /cygdrive/c/cygwin64/home/bruno/libiconv-1.15/build-cygwin32/src/. iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:500: checking path component for s= ymlinks: /cygdrive/c/cygwin64/home/bruno/libiconv-1.15/build-cygwin32/src iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:500: checking path component for s= ymlinks: /cygdrive/c/cygwin64/home/bruno/libiconv-1.15/build-cygwin32 iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:500: checking path component for s= ymlinks: /cygdrive/c/cygwin64/home/bruno/libiconv-1.15 iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:500: checking path component for s= ymlinks: /cygdrive/c/cygwin64/home/bruno iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:500: checking path component for s= ymlinks: /cygdrive/c/cygwin64/home iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:500: checking path component for s= ymlinks: /cygdrive/c/cygwin64 iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:500: checking path component for s= ymlinks: /cygdrive/c iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:500: checking path component for s= ymlinks: /cygdrive iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:242: (main) found exe (after symli= nk chase) at: /cygdrive/c/cygwin64/home/bruno/libiconv-1.15/build-cygwin32/= src/./iconv_no_i18n iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:265: (main) libtool target name: i= conv_no_i18n.exe iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:616: (lt_setenv) setting 'BIN_SH' = to 'xpg4' iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:616: (lt_setenv) setting 'DUALCASE= ' to '1' iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:666: (lt_update_exe_path) modifyin= g 'PATH' by prepending '/usr/local/cygwin32/lib:/usr/local/cygwin32/bin:/ho= me/bruno/libiconv-1.15/build-cygwin32/lib/.libs:' iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:616: (lt_setenv) setting 'PATH' to= '/usr/local/cygwin32/lib:/usr/local/cygwin32/bin:/home/bruno/libiconv-1.15= /build-cygwin32/lib/.libs:/usr/bin:/cygdrive/c/Program Files (x86)/Intel/iC= LS Client:/cygdrive/c/Program Files/Intel/iCLS Client:/cygdrive/c/WINDOWS/s= ystem32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/W= INDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Inte= l/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files/Intel= /Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files (x86)/= Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/I= ntel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/In= tel/WiFi/bin:/cygdrive/c/Program Files/Common Files/Intel/WirelessCommon:/c= ygdrive/c/Program Files (x86)/Windows Kits/8.1/Windows Performance Toolkit:= /cygdrive/c/Users/bruno/AppData/Local/Microsoft/WindowsApps' iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:687: (lt_update_lib_path) modifyin= g 'PATH' by prepending '/home/bruno/libiconv-1.15/build-cygwin32/lib/.libs:' iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:616: (lt_setenv) setting 'PATH' to= '/home/bruno/libiconv-1.15/build-cygwin32/lib/.libs:/usr/local/cygwin32/li= b:/usr/local/cygwin32/bin:/home/bruno/libiconv-1.15/build-cygwin32/lib/.lib= s:/usr/bin:/cygdrive/c/Program Files (x86)/Intel/iCLS Client:/cygdrive/c/Pr= ogram Files/Intel/iCLS Client:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WIND= OWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsP= owerShell/v1.0:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management En= gine Components/DAL:/cygdrive/c/Program Files/Intel/Intel(R) Management Eng= ine Components/DAL:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Managemen= t Engine Components/IPT:/cygdrive/c/Program Files/Intel/Intel(R) Management= Engine Components/IPT:/cygdrive/c/Program Files/Intel/WiFi/bin:/cygdrive/c= /Program Files/Common Files/Intel/WirelessCommon:/cygdrive/c/Program Files = (x86)/Windows Kits/8.1/Windows Performance Toolkit:/cygdrive/c/Users/bruno/= AppData/Local/Microsoft/WindowsApps' iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:297: (main) lt_argv_zero: /cygdriv= e/c/cygwin64/home/bruno/libiconv-1.15/build-cygwin32/src/./.libs/iconv_no_i= 18n.exe iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:301: (main) newargz[0]: /cygdrive/= c/cygwin64/home/bruno/libiconv-1.15/build-cygwin32/src/./.libs/iconv_no_i18= n.exe iconv_no_i18n:./.libs/lt-iconv_no_i18n.c:301: (main) newargz[1]: --help PATH=3DC:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\home\bruno\libiconv-1.15= \build-cygwin32\lib\.libs;C:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\usr\l= ocal\cygwin32\lib;C:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\usr\local\cyg= win32\bin;C:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\home\bruno\libiconv-1= .15\build-cygwin32\lib\.libs;C:\cygwin64\usr\i686-pc-cygwin\sys-root\usr\bi= n;C:\Program Files (x86)\Intel\iCLS Client;C:\Program Files\Intel\iCLS Clie= nt;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\Syste= m32\WindowsPowerShell\v1.0;C:\Program Files (x86)\Intel\Intel(R) Management= Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Co= mponents\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Compon= ents\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C= :\Program Files\Intel\WiFi\bin;C:\Program Files\Common Files\Intel\Wireless= Common;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit;= C:\Users\bruno\AppData\Local\Microsoft\WindowsApps --nextPart5431097.vuUSWF7Q6W Content-Type: text/plain; charset=us-ascii Content-length: 218 -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple --nextPart5431097.vuUSWF7Q6W--