From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-3.9 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 6C4C51F5AE for ; Fri, 23 Apr 2021 04:23:29 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 6725E120DB7; Fri, 23 Apr 2021 13:22:25 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id 9A958120D68 for ; Fri, 23 Apr 2021 13:22:22 +0900 (JST) Received: by filterdrecv-5c7f9fdd98-ctkxj with SMTP id filterdrecv-5c7f9fdd98-ctkxj-1-60824BBA-17 2021-04-23 04:23:22.229951661 +0000 UTC m=+18428.587890251 Received: from herokuapp.com (unknown) by ismtpd0151p1mdw1.sendgrid.net (SG) with ESMTP id 954_fbU7T1GpXGMvCOycow for ; Fri, 23 Apr 2021 04:23:22.153 +0000 (UTC) Date: Fri, 23 Apr 2021 04:23:22 +0000 (UTC) From: cfis@savagexi.com Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Bug X-Redmine-Issue-Id: 16651 X-Redmine-Issue-Author: cfis X-Redmine-Sender: cfis X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 79617 X-SG-EID: =?us-ascii?Q?DI8k0T5AJunnf8HaICOhHpeiceGcYEWFq4zZVwvjN3KzxCPTVdK09zirc4p3S8?= =?us-ascii?Q?24cZFDbAE9sA3QZCiDvx6EOr8VMYwnzdaoFrBqV?= =?us-ascii?Q?+WjzhWtfPVNhngnme3ga+NsKENIRORIp2rVdWUS?= =?us-ascii?Q?BkT+TCH2wZofxXL=2FSTMWhWbC81HB4hkxTFyKC1e?= =?us-ascii?Q?WVsxAQKwqCfKfsaWDaiiwETOnQ3B9ti+pWQ=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 103570 Subject: [ruby-core:103570] [Ruby master Bug#16651] Extensions Do Not Compile on Mingw64 with mingw32-make X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #16651 has been updated by cfis (Charlie Savage). To answer the questions above: * gem install sassc works fine * using different drives, d:/ works fine I don't understand the reason for this change - it just makes building on mingw64 with mingw-64 on windows more broken. If the format c:/ didn't work, then every native gem would have failed to compile because arch_hdrdir used that style. So clearly it does work. Thus arch_hdrdir should not be changed, and instead topdir should have changed. ---------------------------------------- Bug #16651: Extensions Do Not Compile on Mingw64 with mingw32-make https://bugs.ruby-lang.org/issues/16651#change-91670 * Author: cfis (Charlie Savage) * Status: Closed * Priority: Normal * ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x64-mingw32] * Backport: 2.6: REQUIRED, 2.7: REQUIRED, 3.0: REQUIRED ---------------------------------------- When mkmf.rb creates a Makefile for an extension, it will generate something that looks like this: ```makefile srcdir = . topdir = C/MSYS64/USR/LOCAL/ruby-2.7.0/include/ruby-2.7.0 hdrdir = $(topdir) arch_hdrdir = C:/MSYS64/USR/LOCAL/ruby-2.7.0/include/ruby-2.7.0/x64-mingw32 ``` Notice the topdir path is c/ without the ":" Its only the topdir that does this, all other paths in the makefile use the "c:/" style. mkmf.rb intentionally does that, see line 1098: ```ruby def mkintpath(path) # mingw uses make from msys and it needs special care # converts from C:\some\path to /C/some/path path = path.dup path.tr!('\\', '/') path.sub!(/\A([A-Za-z]):(?=\/)/, '/\1') <-------- This line path end ``` But this is wrong, and causes errors like this (this is compiling the debase gem but it doesn't matter what c extension you use): ``` make: *** No rule to make target 'C/MSYS64/USR/LOCAL/ruby-2.7.0/include/ruby-2.7.0/ruby.h', needed by 'breakpoint.o'. Stop. ``` The fix is simple, just delete that line. The makefile should look like this: ```makefile srcdir = . topdir = C:/MSYS64/USR/LOCAL/ruby-2.7.0/include/ruby-2.7.0 hdrdir = $(topdir) arch_hdrdir = C:/MSYS64/USR/LOCAL/ruby-2.7.0/include/ruby-2.7.0/x64-mingw32 ``` Note I'm not the first person to see this, but I've just been manually fixing it over the years. Would be good to really fix it. https://github.com/oneclick/rubyinstaller2/issues/105 https://github.com/oneclick/rubyinstaller2/issues/47 https://github.com/tmm1/http_parser.rb/issues/55 Note some of those tickets put the blame on using mingw-make versus msys make. But on my system, neither work with the "c/" style path but both work with the "c:/" style path. -- https://bugs.ruby-lang.org/