octave-bug-tracker
[Top][All Lists]
Advanced

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

[Octave-bug-tracker] [bug #63480] Build error on Cygwin


From: Markus Mützel
Subject: [Octave-bug-tracker] [bug #63480] Build error on Cygwin
Date: Wed, 7 Dec 2022 04:55:11 -0500 (EST)

URL:
  <https://savannah.gnu.org/bugs/?63480>

                 Summary: Build error on Cygwin
                 Project: GNU Octave
               Submitter: mmuetzel
               Submitted: Wed 07 Dec 2022 10:55:09 AM CET
                Category: Configuration and Build System
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Build Failure
                  Status: None
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
                 Release: dev
         Discussion Lock: Any
        Operating System: Other
           Fixed Release: None
         Planned Release: None


    _______________________________________________________

Follow-up Comments:


-------------------------------------------------------
Date: Wed 07 Dec 2022 10:55:09 AM CET By: Markus Mützel <mmuetzel>
This was first noted in bug#63437#30 and bug#63437#37. But it is probably
unrelated to those changes.
IIUC, Cygwin coincidentally updated from 3.3.8 to 3.4.0 when the changes for
that report were applied.

Linking octave-svgconvert for Cygwin fails with the following error on the
CI:
https://github.com/gnu-octave/octave/actions/runs/3616932076/jobs/6095331859#step:10:29241

/usr/lib/gcc/x86_64-pc-cygwin/11/../../../../x86_64-pc-cygwin/bin/ld:
src/octave_svgconvert-octave-svgconvert.o: in function `main':
/cygdrive/d/a/octave/octave/.build/../src/octave-svgconvert.cc:912: undefined
reference to
`__imp__ZN5QFile4openEP7__sFILE6QFlagsIN9QIODevice12OpenModeFlagEES2_IN11QFileDevice14FileHandleFlagEE'
collect2: error: ld returned 1 exit status


The undefined symbol demangles to
QFile::open(__sFILE*, QFlags<QIODevice::OpenModeFlag>,
QFlags<QFileDevice::FileHandleFlag>)

The symbol that is exported by the Qt5Core library is the following:

$  nm -C /lib/libQt5Core.dll.a | grep QFile::open
                                                                                
                                        1. T QFile::open(int, 
QFlags<QIODevice::OpenModeFlag>,
QFlags<QFileDevice::FileHandleFlag>)
                                                                                
                                        2. T QFile::open(__sFILE64*, 
QFlags<QIODevice::OpenModeFlag>,
QFlags<QFileDevice::FileHandleFlag>)
                                                                                
                                        3. T 
QFile::open(QFlags<QIODevice::OpenModeFlag>)


Note the `__sFILE64*` instead of the `__sFILE*` that we'd like to use.

The following change avoids the link error:

diff -r deb553ac2c54 src/octave-svgconvert.cc
--- a/src/octave-svgconvert.cc  Tue Dec 06 15:45:27 2022 -0500
+++ b/src/octave-svgconvert.cc  Wed Dec 07 10:51:59 2022 +0100
@@ -27,6 +27,9 @@
 #  include "config.h"
 #endif
 
+#define __LARGE64_FILES
+
+#include <cstdio>
 #include <iostream>
 
 #if defined (OCTAVE_USE_WINDOWS_API)


I'm not proposing that this should be applied in Octave. Rather, it's just a
work-around to illustrate where there might be a regression in Cygwin 3.4.0.

This might be a regression from the following upstream change:
https://github.com/msys2/msys2-runtime/commit/2902b3a09e0a45c4971b59f78ab175b71b3c755e








    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?63480>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/




reply via email to

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