[MacPorts] #51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'.
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. ----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Keywords: | Port: ipe ----------------------+----------------------- After fixing #50704, ipe builds on 10.11 but fails on 10.10.5 with the following error {{{ Compiling ipeui_cocoa.cpp... /usr/bin/clang++ -arch x86_64 -mmacosx-version-min=10.8 -Wdeprecated- declarations -Wall -Wno-sign-conversion -g -Os -stdlib=libc++ -fPIC -x objective-c++ -fobjc-arc -DIPEUI_COCOA -std=c++11 -x objective-c++ -fobjc-arc -I/opt/local/include -c -o ../../build/obj/ipeui/ipeui_cocoa.o ipeui_cocoa.cpp ipeui_cocoa.cpp:89:5: error: use of undeclared identifier 'NSLayoutGuide'; did you mean 'layoutGuide'? NSLayoutGuide *g = [[NSLayoutGuide alloc] init]; ^~~~~~~~~~~~~ layoutGuide ipeui_cocoa.cpp:84:4: note: 'layoutGuide' declared here id layoutGuide(NSView *owner) ^ ipeui_cocoa.cpp:89:26: error: use of undeclared identifier 'NSLayoutGuide'; did you mean 'layoutGuide'? NSLayoutGuide *g = [[NSLayoutGuide alloc] init]; ^~~~~~~~~~~~~ layoutGuide ipeui_cocoa.cpp:84:4: note: 'layoutGuide' declared here id layoutGuide(NSView *owner) ^ ipeui_cocoa.cpp:89:26: error: bad receiver type 'id (*)(NSView *__strong)' NSLayoutGuide *g = [[NSLayoutGuide alloc] init]; ^~~~~~~~~~~~~ ipeui_cocoa.cpp:89:20: error: use of undeclared identifier 'g' NSLayoutGuide *g = [[NSLayoutGuide alloc] init]; ^ ipeui_cocoa.cpp:90:12: error: no visible @interface for 'NSView' declares the selector 'addLayoutGuide:' [owner addLayoutGuide:g]; ~~~~~ ^~~~~~~~~~~~~~ ipeui_cocoa.cpp:92:12: error: use of undeclared identifier 'g' return g; ^ ipeui_cocoa.cpp:142:15: error: no known instance method for selector 'owningView' return [a owningView]; // is a layout guide ^~~~~~~~~~ ipeui_cocoa.cpp:256:3: error: type arguments cannot be applied to non- parameterized class 'NSMutableArray' NSMutableArray <NSView *> *iViews; ^ ~~~~~~~~~~~ 8 errors generated. make[1]: *** [../../build/obj/ipeui/ipeui_cocoa.o] Error 1 make[1]: Leaving directory `/opt/local/var/macports/build/_opt_macports_trunk_dports_graphics_ipe/ipe/work/ipe-7.2.2/src/ipeui' }}} The problem is that NSLayoutGuide is a new class introduced with 10.11 and so is not available on 10.10 and earlier. See [https://developer.apple.com/library/mac/documentation/AppKit/Reference/NSLay... NSLayoutGuide Class Reference] for details. Full build log attached. -- Ticket URL: <https://trac.macports.org/ticket/51116> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by m7.thon@…): Reported upstream. So, as long as this is not fixed, I guess the +qt4 variant (which compiles the Qt4 interface and does not use Cocoa) should be the default / forced on OSX < 10.11. I will update the Portfile accordingly. -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:1> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by m7.thon@…): I attached a patch that should fix this issue and #51110, i.e., enabling compilation also on older versions of OSX. -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:2> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by devans@…): I applied this patch locally and tested on 10.11, 10.10 and 10.9. Builds fine on 10.11 but 10.10 and 10.9 both fail with same error as reported in here and in #51110. I'm thinking that MAC_OS_X_VERSION_10_11 and MAC_OS_X_VERSION_10_10 are probably not defined on earlier OS versions and should be replaced by their defined value to work correctly. For instance on 10.10.5, AvailabilityMacros.h only defines {{{ #define MAC_OS_X_VERSION_10_0 1000 #define MAC_OS_X_VERSION_10_1 1010 #define MAC_OS_X_VERSION_10_2 1020 #define MAC_OS_X_VERSION_10_3 1030 #define MAC_OS_X_VERSION_10_4 1040 #define MAC_OS_X_VERSION_10_5 1050 #define MAC_OS_X_VERSION_10_6 1060 #define MAC_OS_X_VERSION_10_7 1070 #define MAC_OS_X_VERSION_10_8 1080 #define MAC_OS_X_VERSION_10_9 1090 #define MAC_OS_X_VERSION_10_10 101000 #define MAC_OS_X_VERSION_10_10_2 101002 #define MAC_OS_X_VERSION_10_10_3 101003 }}} -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:3> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by m7.thon@…): Yes, you are of course correct. Sorry about that. -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:4> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by devans@…): OK, tried the build on 10.10 with the updated patch. It appears to have gotten past the reported problem but now fails in main_cocoa.cpp. {{{ Compiling main_cocoa.cpp... /usr/bin/clang++ -arch x86_64 -mmacosx-version-min=10.8 -Wdeprecated- declarations -Wall -Wno-sign-conversion -g -Os -stdlib=libc++ -DIPEUI_COCOA -std=c++11 -I../include -I../ipecanvas -I../ipecairo -I../ipelua -I../ipeui -I/opt/local/include -x objective-c++ -fobjc-arc -I/opt/local/include/cairo -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -I/opt/local/include/pixman-1 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -DIPEBUNDLE -c -o ../../build/obj/ipe/main_cocoa.o main_cocoa.cpp main_cocoa.cpp:75:3: error: type arguments cannot be applied to non- parameterized class 'NSArray' NSArray <NSString *> *args = [[NSProcessInfo processInfo] arguments]; ^ ~~~~~~~~~~~~~ 1 error generated. make[1]: *** [../../build/obj/ipe/main_cocoa.o] Error 1 }}} -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:5> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by m7.thon@…): I now removed all uses of "lightweight generics" from the code. Hope there are no more incompatibilities with older OSX SDK versions. -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:6> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by devans@…): Not quite yet. Build now fails as follows on 10.10 {{{ Compiling ipeui_common.cpp... /usr/bin/clang++ -arch x86_64 -mmacosx-version-min=10.8 -Wdeprecated- declarations -Wall -Wno-sign-conversion -g -Os -stdlib=libc++ -fPIC -x objective-c++ -fobjc-arc -DIPEUI_COCOA -std=c++11 -x objective-c++ -fobjc-arc -I/opt/local/include -c -o ../../build/obj/ipeui/ipeui_common.o ipeui_common.cpp Compiling ipeui_cocoa.cpp... /usr/bin/clang++ -arch x86_64 -mmacosx-version-min=10.8 -Wdeprecated- declarations -Wall -Wno-sign-conversion -g -Os -stdlib=libc++ -fPIC -x objective-c++ -fobjc-arc -DIPEUI_COCOA -std=c++11 -x objective-c++ -fobjc-arc -I/opt/local/include -c -o ../../build/obj/ipeui/ipeui_cocoa.o ipeui_cocoa.cpp ipeui_cocoa.cpp:143:15: error: no known instance method for selector 'owningView' return [a owningView]; // is a layout guide ^~~~~~~~~~ 1 error generated. make[1]: *** [../../build/obj/ipeui/ipeui_cocoa.o] Error 1 }}} Build on 10.9 continues to fail as described in #51110. Building with +qt4 is successful on all versions 10.9+ and seems to work as expected so that's always a fallback. -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:7> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by m7.thon@…): Ok, please give it another try. It is frustrating that I cannot test this myself. Thanks for your efforts! -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:8> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by devans@…): Replying to [comment:8 m7.thon@…]:
Ok, please give it another try. It is frustrating that I cannot test this myself. Thanks for your efforts! No problem. But I understand it is frustrating. Thanks for your patience.
Two more problems. On 10.10 {{{ :info:build Compiling appui_cocoa.cpp... :info:build /usr/bin/clang++ -arch x86_64 -mmacosx-version-min=10.8 -Wdeprecated-declarations -Wall -Wno-sign-conversion -g -Os -stdlib=libc++ -DIPEUI_COCOA -std=c++11 -I../include -I../ipecanvas -I../ipecairo -I../ipelua -I../ipeui -I/opt/local/include -x objective-c++ -fobjc-arc -I/opt/local/include/cairo -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -I/opt/local/include/pixman-1 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -DIPEBUNDLE -c -o ../../build/obj/ipe/appui_cocoa.o appui_cocoa.cpp :info:build appui_cocoa.cpp:588:45: error: property 'frame' not found on object of type 'id' :info:build NSRect layerFrame = iLayerBox.contentView.frame; :info:build ^ :info:build 1 error generated. :info:build make[1]: *** [../../build/obj/ipe/appui_cocoa.o] Error 1 }}} On 10.9, similar to the previous error but in ipeui_cocoa.cpp {{{ :info:build Compiling ipeui_cocoa.cpp... :info:build /usr/bin/clang++ -arch x86_64 -mmacosx-version-min=10.8 -Wdeprecated-declarations -Wall -Wno-sign-conversion -g -Os -stdlib=libc++ -fPIC -x objective-c++ -fobjc-arc -DIPEUI_COCOA -std=c++11 -x objective-c++ -fobjc-arc -I/opt/local/include -c -o ../../build/obj/ipeui/ipeui_cocoa.o ipeui_cocoa.cpp :info:build ipeui_cocoa.cpp:56:48: error: no visible @interface for 'NSGraphicsContext' declares the selector 'CGContext' :info:build return [[NSGraphicsContext currentContext] CGContext]; :info:build ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~ :info:build 1 error generated. :info:build make[1]: *** [../../build/obj/ipeui/ipeui_cocoa.o] Error 1 }}} -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:9> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by m7.thon@…): Thanks, more of the same kind of error. Should also be fixed. -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:10> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by devans@…): Partial success! 10.10 now builds without error and runs as expected under cursory testing. On 10.9, 5 similar errors in appui_cocoa.cpp {{{ :info:build Compiling appui_cocoa.cpp... :info:build /usr/bin/clang++ -arch x86_64 -mmacosx-version-min=10.8 -Wdeprecated-declarations -Wall -Wno-sign-conversion -g -Os -stdlib=libc++ -DIPEUI_COCOA -std=c++11 -I../include -I../ipecanvas -I../ipecairo -I../ipelua -I../ipeui -I/opt/local/include -x objective-c++ -fobjc-arc -I/opt/local/include/cairo -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -I/opt/local/include/pixman-1 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -DIPEBUNDLE -c -o ../../build/obj/ipe/appui_cocoa.o appui_cocoa.cpp :info:build appui_cocoa.cpp:958:27: error: no getter method for read from property :info:build item.title = iSnapBar.hidden ? @"Show Snap Toolbar" : :info:build ~~~~~~~~~^~~~~~ :info:build appui_cocoa.cpp:965:45: error: property 'visible' not found on object of type 'NSPanel *' :info:build s.state = (iNotesPanel && iNotesPanel.visible); :info:build ^ :info:build appui_cocoa.cpp:967:53: error: property 'visible' not found on object of type 'NSPanel *' :info:build s.state = (iBookmarksPanel && iBookmarksPanel.visible); :info:build ^ :info:build appui_cocoa.cpp:1027:31: error: no getter method for read from property :info:build iSnapBar.hidden = !iSnapBar.hidden; :info:build ~~~~~~~~~^~~~~~ :info:build appui_cocoa.cpp:1028:16: error: no getter method for read from property :info:build if (iSnapBar.hidden) { :info:build ~~~~~~~~~^~~~~~ :info:build 5 errors generated. :info:build make[1]: *** [../../build/obj/ipe/appui_cocoa.o] Error 1 }}} -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:11> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by m7.thon@…): I don't understand the most recent error messages, but I changed the code to call the getters explicitly and hope for the best. -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:12> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by devans@…): Your changes did, indeed, fix the previous problem on 10.9 but now `ibtool` fails {{{ :info:build ibtool --compile ../../build/Ipe.app/Contents/Resources/mainmenu.nib mainmenu.xib :info:build <?xml version="1.0" encoding="UTF-8"?> :info:build <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> :info:build <plist version="1.0"> :info:build <dict> :info:build <key>com.apple.ibtool.errors</key> :info:build <array> :info:build <dict> :info:build <key>description</key> :info:build <string>Compilation failed. Unable to write to path: /opt/local/var/macports/build/_Volumes_MiniHD_opt_macports_trunk_dports_graphics_ipe/ipe/work/ipe-7.2.2/build/Ipe.app/Contents/Resources/mainmenu.nib</string> :info:build <key>underlying-errors</key> :info:build <array> :info:build <dict> :info:build <key>description</key> :info:build <string>The file “mainmenu.nib” doesn’t exist.</string> :info:build <key>failure-reason</key> :info:build <string>The file doesn’t exist.</string> :info:build <key>underlying- errors</key> :info:build <array> :info:build <dict> :info:build <key>description</key> :info:build <string>The operation couldn’t be completed. No such file or directory</string> :info:build <key
failure-reason</key> :info:build <string>No such file or directory</string> :info:build </dict> :info:build </array> :info:build </dict> :info:build <dict> :info:build <key>description</key> :info:build <string>“mainmenu.nib” couldn’t be removed.</string> :info:build <key>failure-reason</key> :info:build <string>The file doesn’t exist.</string> :info:build <key>underlying- errors</key> :info:build <array> :info:build <dict> :info:build <key>description</key> :info:build <string>The operation couldn’t be completed. No such file or directory</string> :info:build <key failure-reason</key> :info:build <string>No such file or directory</string> :info:build </dict> :info:build </array> :info:build </dict> :info:build </array> :info:build </dict> :info:build </array> :info:build </dict> :info:build </plist> :info:build make[1]: *** [../../build/Ipe.app/Contents/Resources/mainmenu.nib] Error 1 }}}
-- Ticket URL: <https://trac.macports.org/ticket/51116#comment:13> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by m7.thon@…): Another simple fix should do the trick. It seem newer versions of ibtool create a target {{{path}}} if it does not exist, while older ones don't. -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:14> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by devans@…): That does it. ipe now builds and runs for me on 10.9, 10.10 and 10.11 so I think these changes are ready to commit. Thanks for all the updates. Are there any other changes you would like to make? I noticed that the About screen says that ipe relies on the following: * Pdftex, Xetex, or Luatex * Pdflatex Should any of these be included as run time dependencies? -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:15> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: ipe | -----------------------+----------------------- Comment (by m7.thon@…): Hurray! One of the main features of ipe is the ability to include LaTeX directly into drawings. For this to work, pdflatex (texlive-latex) needs to be installed. However, ipe works fine with the external MacTeX package, and is fully functional even without pdflatex except for LaTeX rendering, so I would not include this as a run-time dependency. It would be great if you could commit these patches. Thanks! -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:16> MacPorts <https://www.macports.org/> Ports system for OS X
#51116: ipe @7.2.2: build fails on Yosemite, undeclared identifier 'NSLayoutGuide'. -----------------------+----------------------- Reporter: devans@… | Owner: m7.thon@… Type: defect | Status: closed Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: fixed | Keywords: Port: ipe | -----------------------+----------------------- Changes (by devans@…): * status: new => closed * resolution: => fixed Comment: Patches committed in r147870. Build successful on 10.9, 10.10 buildbots. -- Ticket URL: <https://trac.macports.org/ticket/51116#comment:17> MacPorts <https://www.macports.org/> Ports system for OS X
participants (1)
-
MacPorts