Subject: Re: bug#28601: 26.0.50; configure: error: Emacs does not support 'x86_64-pc-msys' systems.

From: [email-masked] (Vincent Belaïche)
Date: Mon, 16 Oct 2017 10:59:58 +0200

Dear Noam,

Le 14/10/2017 à 03:40, Noam Postavsky a écrit :
> Noam Postavsky <[email-masked]> writes:
>
>> On Fri, Oct 13, 2017 at 10:09 AM, Vincent Belaïche
>> <[email-masked]> wrote:
>>
>>> Please note that gcc -v makes this output even though my MSYSTEM envvar
>>> expands to MINGW64.
>>>
>>> I think that the objective of the gcc -v is to discriminate between 32
>>> and 64 bits, not between MINGW and MSYS. So, it seems that what we have
>>> is an autoconf bug. Am I wrong ?
>>
>> I think it means you didn't install the mingw-w64-x86_64-toolchain
>> metapackage, so you are using the msys toolchain rather than the mingw
>> one.
>
> Check the output of 'which gcc', it should be at /mingw64/bin/gcc.  If
> it's /bin/gcc, or /usr/bin/gcc, then you are using the wrong gcc.

I managed to build Emacs thanks ot your kind help.

I attached a patch to INSTALL.W64 to collect all the instruction needed
in my case to install Emacs.

Please feel free for brickbat.

  Vincent.

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
diff --git a/nt/INSTALL.W64 b/nt/INSTALL.W64
index 4a93dc0..b28540d 100644
--- a/nt/INSTALL.W64
+++ b/nt/INSTALL.W64
@@ -29,24 +29,35 @@ build tools for MinGW-w64 -- see http://msys2.github.io/.
 You can download the x86_64 version of MSYS2 (i.e. msys2-x86_64-<date>.exe)
 from
 
-  https://sourceforge.net/projects/msys2/files/Base/x86_64
+	https://sourceforge.net/projects/msys2/files/Base/x86_64
 
 Run this file to install MSYS2 in your preferred directory, e.g. the default
 C:\msys64 -- this will install MinGW-w64 also.  Note that directory names
 containing spaces may cause problems.
 
+In the sequel we denote by c:\MSYS\INSTALL\DIR\msys64 the
+directory where MSYS2 is installed, e.g. C:\msys64 by default.
+
+* Configure your MSWindows PATH variable
+
 Then you'll need to add the following directories to your Windows PATH
 environment variable:
 
-  c:\msys64\usr\bin;c:\msys64\mingw64\bin
+  c:\MSYS\INSTALL\DIR\msys64\usr\bin;c:\MSYS\INSTALL\DIR\msys64\mingw64\bin
+
+where c:\MSYS\INSTALL\DIR\msys64 depends on your MSYS2 installation,
+and is c:\msys64 by default.
 
-you can do this through Control Panel / System and Security / System /
+You can do this through Control Panel / System and Security / System /
 Advanced system settings / Environment Variables / Edit path.
 
 Adding these directories to your PATH tells Emacs where to find the DLLs it
 needs to run, and some optional commands like grep and find.  These commands
 will also be available at the Windows console.
 
+Concerning the find command see also the last step about configuring
+your init file to get an MSWindows find port.
+
 ** Download and install the necessary packages
 
 Run msys2_shell.bat in your MSYS2 directory and you will see a BASH window
@@ -55,25 +66,86 @@ opened.
 In the BASH prompt, use the following command to install the necessary
 packages (you can copy and paste it into the shell with Shift + Insert):
 
-  pacman -S base-devel \
-  mingw-w64-x86_64-toolchain \
-  mingw-w64-x86_64-xpm-nox \
-  mingw-w64-x86_64-libtiff \
-  mingw-w64-x86_64-giflib \
-  mingw-w64-x86_64-libpng \
-  mingw-w64-x86_64-libjpeg-turbo \
-  mingw-w64-x86_64-librsvg \
-  mingw-w64-x86_64-liblcms2 \
-  mingw-w64-x86_64-libxml2 \
-  mingw-w64-x86_64-gnutls \
-  mingw-w64-x86_64-zlib
-
-The packages include the base developer tools (autoconf, grep, make, etc.),
-the compiler toolchain (gcc, gdb, etc.), several image libraries, an XML
-library, the GnuTLS (transport layer security) library, and zlib for
-decompressing text.  Only the first three packages are required (base-devel,
-toolchain, xpm-nox); the rest are optional.  You can select only part of the
-libraries if you don't need them all.
+	for w in msys/msys2-launcher-git \
+	  msys/m4 \
+	  msys/autoconf \
+	  msys/grep \
+	  msys/findutils \
+	  mingw64/mingw-w64-x86_64-pkg-config \
+	  mingw64/mingw-w64-x86_64-make \
+	  mingw64/mingw-w64-x86_64-toolchain \
+	  mingw64/mingw-w64-x86_64-xpm-nox \
+	  mingw64/mingw-w64-x86_64-libtiff \
+	  mingw64/mingw-w64-x86_64-giflib \
+	  mingw64/mingw-w64-x86_64-libpng \
+	  mingw64/mingw-w64-x86_64-libjpeg-turbo \
+	  mingw64/mingw-w64-x86_64-librsvg \
+	  mingw64/mingw-w64-x86_64-liblcms2 \
+	  mingw64/mingw-w64-x86_64-libxml2 \
+	  mingw64/mingw-w64-x86_64-gnutls \
+	  mingw64/mingw-w64-x86_64-zlib; do  pacman -S $w; done
+
+Answer Y (for yes) to all questions when the package is not up to
+date, and n (for no) otherwise.
+
+The packages include the base developer tools (autoconf, grep, make,
+etc.), the compiler toolchain (gcc, gdb, etc.), several image
+libraries, an XML library, the GnuTLS (transport layer security)
+library, and zlib for decompressing text.  Only the packages up to
+xpm-nox are required; the rest are optional.  You can select only part
+of the libraries if you don't need them all.
+
+** Check your MSYS2 fstab file
+
+make sure that your fstab file (c:\MSYS\INSTALL\DIR\msys64\etc\fstab)
+file contains the following lines (starting a column 0 in the fstab
+file):
+
+	c:/MSYS/INSTALL/DIR/msys64/mingw64/bin /mingw64/bin ntfs binary,noacl 0 0
+	c:/MSYS/INSTALL/DIR/msys64/mingw32/bin /mingw32/bin ntfs binary,noacl 0 0
+
+Please note that only the first line is needed for 64bit compilation,
+the second one is for a complete fstab file w.r.t. 32bit compilation.
+
+If there is a space in c:\MSYS\INSTALL\DIR it shall be replaced by
+\040. For instance, if MSYS is installed under "C:\Program
+Files\msys64" there must be this line:
+
+
+	C:/Program\040Files/msys64/mingw64/bin /mingw64/bin ntfs binary,noacl 0 0
+
+Anyway, avoiding to have any space in the path is preferable.
+
+** Configure your MSYS2 PATH variable for application running from an mingw64 console
+
+When you launch the mingw64.exe console from the c:\MSYS\INSTALL\DIR\msys64, and type
+
+	echo "$PATH"
+
+You must have /mingw64/bin and /usr/bin in the paths list in this order.
+
+Otherwise, you will need to exit the MINGW64 console and edit your
+~/.bashrc file, where ~ denote
+c:\MSYS\INSTALL\DIR\msys64\home\%USERNAME%, to have the correct PATH
+variable from MSYS/MINGW32/MINGW64 consoles:
+
+In this cas, please make sure that ~/.bashrc contains some statement
+like:
+
+	case x$MSYSTEM in
+	    xMINGW64)
+		PATH="/mingw64/bin:/usr/bin:$PATH"
+	    ;;
+	    xMINGW32)
+		PATH="/mingw32/bin:/usr/bin:$PATH"
+	    ;;
+	    xMSYS)
+		PATH="/usr/bin:$PATH"
+	    ;;
+	esac
+
+Actually, for the Emacs build only the MINGW64 is useful. There could
+other cases for MSYSTEM envvar equal to MSYS or to MINGW32.
 
 You now have a complete build environment for Emacs.
 
@@ -125,9 +197,9 @@ put the Emacs source into C:\emacs\emacs-26:
 Now you're ready to build and install Emacs with autogen, configure, make,
 and make install.
 
-First we need to switch to the MinGW-w64 environment.  Exit the MSYS2 BASH
-console and run mingw64_shell.bat in the C:\msys64 folder, then cd back to
-your Emacs source directory, e.g.:
+First we need to switch to the MinGW-w64 environment.  Exit the MSYS2
+BASH console and run mingw64.exe in the C:\MSYS\INSTALL\DIR\msys64
+folder, then cd back to your Emacs source directory, e.g.:
 
   cd /c/emacs/emacs-26
 
@@ -202,6 +274,40 @@ You can set any command line options by right clicking on the resulting
 shortcut, select Properties, then add any options to the Target command,
 e.g. --debug-init.
 
+* Configure your init file for Emacs to get a findutils windows port
+
+As far as find is concerned, at this stage you have configured the
+MSWindows PATH envvar to have c:\MSYS\INSTALL\DIR\msys64\usr\bin in
+it.
+
+You should have done that in a way that
+c:\MSYS\INSTALL\DIR\msys64\usr\bin is after C:\Windows\System32 in the
+PATH, otherwise the MSYS2 find.exe will be used instead of the
+MSWindows find.exe by other MSWindows application and this may cause
+some problem in your MSWindows environment --- although nobody has
+ever reported such a trouble.
+
+As far as Emacs is concerned, the lasy way is to use the MSYS2 find
+utility despit the PATH envvar by setting in your init file the
+following:
+
+	(setq grep-program "c:/MSYS/INSTALL/DIR/msys64/usr/bin/find.exe")
+
+Actually, it is better to work a little bit more and use a MSWindows
+port rather than the MSYS find. See why here
+https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27393
+
+For instance this port can be used.
+
+https://sourceforge.net/projects/ezwinports/files/findutils-4.2.30-5-w64-bin.zip/download
+
+Then add to your init file lines like these :
+
+	(setq find-program "c:/PATH/TO/FIND/PORT/find.exe")
+
+where "c:/PATH/TO/FIND/PORT/" is the place where you have installed
+this find MSWindows port.
+
 * Credits
 
 Thanks to Chris Zheng for the original build outline as used by the
@@ -225,3 +331,4 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+