psi-plus / main

Main repository with patches and required resources
https://psi-plus.com/
GNU Lesser General Public License v2.1
68 stars 20 forks source link

Compile under OSX, Psi+.app is damaged or incomplete #677

Closed klou closed 7 years ago

klou commented 7 years ago

I'm attempting to compile a Qt5 version of Psi+, using HomeBrew to fill the dependencies. Unfortunately, it looks like webkit is not available (especially under Qt5), so "--enable-webkit" doesn't seem to work.

Anyways, the resulting Psi+.app (or psi-plus.app) won't launch, with the error message You can't open the application "Psi+" because it may be damaged or incomplete.

Any ideas on what the problem might be?

OSX 10.12.3 XCode 8.2.1 Qt 5.8.x from Home Brew QCA 2.1.1 from Home Brew

Configured with ./configure --enable-webkit --enable-whiteboarding.

After make, /psi-plus.app and src/psi+.app both show the same error when trying to launch.

Also, make -C mac/ dmg correctly creates a dmg, but the included app is still faulty.

Vitozz commented 7 years ago

Webkit is deprecated and it was removed from Qt5 since 5.6 version

Ri0n commented 7 years ago

It should fail even to compile. strange. for qt-5.8 a new version is in development, and I hope @stigger will help us when ready :)

klou commented 7 years ago

Well, it doesn't detect webkit, so that part isn't essential.

I went back and applied all of the patches/mac (some of these had to be done manually), but still the same result.

Ri0n commented 7 years ago

We need some Mac expert here. I have no idea. I believe @stigger compiled Psi for Mac just few days ago. Maybe w/o patches, but it doesn't matter.

klou commented 7 years ago

Well, I'm trying to get a pre-Haswell build (per #651), and also incorporate patch from #625.

wadealer commented 7 years ago

Apk produced with make is not ready for use. You need copy all the dependencies into apk. Instead you should use our scripts from maintanence repo.

klou commented 7 years ago

Quickly reading through macosx/psibuild, requires install Qt from source? Guess I'll get back to you guys in a few days ...

stigger commented 7 years ago

Here is the build of master with #625. Qt should be installed using brew install qt5 --with-qtwebkit, configuration is ./configure --qtdir=/usr/local/opt/qt5 --with-qca-lib=/usr/local/Cellar/qca/2.1.1/lib --enable-webkit --disable-qdbus --disable-xss --release.

The .app bundle was assembled manually, I'll take a look at the scripts later.

There seems to be a qt5-related issue where psi/psi+ cannot connect to the server. Switching offline/online several times usually helps. This does not reproduce when built with qt4.

klou commented 7 years ago

Thanks for uploading this, but it still has problems on < 2011 Macs. I'll try to assemble the app bundle with my binary later tonight (from a 2011 11" i7 MBA), as I recall there were some missing pieces like the Framework directory. The included log is from a White Unibody Macbook 2010 (C2D 2.4)

Process:               psi-plus [65624]
Path:                  /Volumes/VOLUME/*/psi-plus.app/Contents/MacOS/psi-plus
Identifier:            org.psi-im
Version:               Psi 0.16.571.637 [2017-02-15] (0.16.571.637 [2017-02-15])
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           psi-plus [65624]
User ID:               1362438137

Date/Time:             2017-02-16 09:42:25.150 -0800
OS Version:            Mac OS X 10.12.3 (16D32)
Report Version:        12
Anonymous UUID:        05C4D047-DA46-22D2-E337-5A1822FD48E1

Sleep/Wake UUID:       05FA201C-BB25-4E27-86AF-B960BEFF84AB

Time Awake Since Boot: 200000 seconds
Time Since Wake:       410 seconds

System Integrity Protection: enabled

Crashed Thread:        0

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    DYLD, [0x1] Library missing

Application Specific Information:
dyld: launch, loading dependent libraries

Dyld Error Message:
  Library not loaded: @rpath/libidn.11.dylib
  Referenced from: /Volumes/VOLUME/*/psi-plus.app/Contents/MacOS/psi-plus
  Reason: image not found

Binary Images:
       0x103e88000 -        0x104624ffb +org.psi-im (Psi 0.16.571.637 [2017-02-15] - 0.16.571.637 [2017-02-15]) <C379CB46-AA51-312E-9135-B87B667CCD8C> /var/folders/*/psi-plus.app/Contents/MacOS/psi-plus
       0x10491c000 -        0x1049b3ff7 + (??? - ???) <0049A3DA-32FB-3030-9230-AED98F9A2A10> /var/folders/*/psi-plus.app/Contents/Frameworks/qca-qt5.framework/Versions/2.1.1/qca-qt5
       0x1092fb000 -        0x109338267  dyld (421.2) <947FC440-80F9-32F7-A773-6FC418FE1AB7> /usr/lib/dyld
    0x7fffa12ba000 -     0x7fffa208cff3  com.apple.AppKit (6.9 - 1504.81.100) <0CCB2E18-076E-3D8A-A777-A6E57EF2570A> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
    0x7fffa2d26000 -     0x7fffa2d26fff  com.apple.Carbon (154 - 157) <1BF9C0EB-45A0-3584-85DC-F64A9914F40D> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
    0x7fffa374c000 -     0x7fffa3be0ff7  com.apple.CoreFoundation (6.9 - 1348.28) <0F1FAA52-1C06-327E-A170-382B48B1846D> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fffa5749000 -     0x7fffa57deff7  com.apple.framework.IOKit (2.0.2 - 1324.30.13) <163BE7FA-B29A-348F-8B5F-E301F2E8C964> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fffb84d7000 -     0x7fffb88ac127  libobjc.A.dylib (706) <47104A1B-13E8-369F-BC36-27FF465809FD> /usr/lib/libobjc.A.dylib
    0x7fffb8ccf000 -     0x7fffb8ce0ff3  libz.1.dylib (67) <46E3FFA2-4328-327A-8D34-A03E20BFFB8E> /usr/lib/libz.1.dylib

Model: MacBook7,1, BootROM MB71.0039.B0E, 2 processors, Intel Core 2 Duo, 2.4 GHz, 4 GB, SMC 1.60f6
Graphics: NVIDIA GeForce 320M, NVIDIA GeForce 320M, PCI, 256 MB
Memory Module: BANK 0/DIMM0, 2 GB, DDR3, 1067 MHz, 0x80CE, 0x4D34373142353637334648302D4346382020
Memory Module: BANK 1/DIMM0, 2 GB, DDR3, 1067 MHz, 0x80CE, 0x4D34373142353637334648302D4346382020
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x93), Broadcom BCM43xx 1.0 (5.106.98.100.24)
Bluetooth: Version 5.0.3f1, 3 services, 27 devices, 1 incoming serial ports
Network Service: Ethernet, Ethernet, en0
Serial ATA Device: Crucial_CT128MX100SSD1, 128.04 GB
Serial ATA Device: MATSHITADVD-R   UJ-898
USB Device: USB 2.0 Bus
USB Device: USB 2.0 Bus
USB Device: Built-in iSight
USB Device: USB Bus
USB Device: USB Bus
USB Device: BRCM2070 Hub
USB Device: Bluetooth USB Host Controller
USB Device: Apple Internal Keyboard / Trackpad
Thunderbolt Bus: 

(I can install libidn from homebrew on this test C2D machine, but I kind of think that it should be included.)

stigger commented 7 years ago

Sorry, I forgot to include it. Just copy the binary into psi-plus.app/Contents/Frameworks and you should be good to go.

klou commented 7 years ago

Thanks. This app bundle (with libidn) works at home when I have all of the external dependencies already installed (though I needed to rip out and re-install qt5 from homebrew to get it to also install QtWebkit).

However, it still looks for QtCore in /usr/local/opt/qt5/lib/QtCore.framework/Versions/5/QtCore even though it exists within psi-plus.app/Contents/Frameworks on my test machine w/o homebrew dependencies.

Is there a conflict between installed libraries and bundled ones?

wadealer commented 7 years ago

Sorry, I forgot to include it. Just copy the binary into psi-plus.app/Contents/Frameworks and you should be good to go.

Its not enough. You should change dependencies inside apk with install_name_tool. Also, apk should include ALL the dependencies, including Qt Frameworks, plugins etc. Look at our script and you will see the work you should do to make standalone package. This is not so easy

wadealer commented 7 years ago

Here is the link from Qt documentation http://doc.qt.io/qt-5/osx-deployment.html Its a good place to start

stigger commented 7 years ago

@wadealer Yes, I know that and I did that:

$ otool -L psi-plus                                                                                                                                                                                   
psi-plus:
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1348.28.0)
    /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 157.0.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1504.75.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
    @rpath/qca-qt5.framework/qca-qt5 (compatibility version 2.0.0, current version 2.1.1)
    @rpath/libidn.11.dylib (compatibility version 18.0.0, current version 18.16.0)
    @rpath/QtNetwork.framework/QtNetwork (compatibility version 5.8.0, current version 5.8.0)
    @rpath/QtCore.framework/QtCore (compatibility version 5.8.0, current version 5.8.0)
    /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
    @rpath/QtGui.framework/QtGui (compatibility version 5.8.0, current version 5.8.0)
    @rpath/QtXml.framework/QtXml (compatibility version 5.8.0, current version 5.8.0)
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
    @rpath/QtWebKitWidgets.framework/QtWebKitWidgets (compatibility version 5.8.0, current version 5.8.0)
    @rpath/QtWidgets.framework/QtWidgets (compatibility version 5.8.0, current version 5.8.0)
    @rpath/QtWebKit.framework/QtWebKit (compatibility version 5.8.0, current version 5.8.0)
    @rpath/QtMultimedia.framework/QtMultimedia (compatibility version 5.8.0, current version 5.8.0)
    @rpath/QtConcurrent.framework/QtConcurrent (compatibility version 5.8.0, current version 5.8.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.4.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
    /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 775.9.7)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1349.25.0)

What I forgot to do is to perform the same manipulations on qca-qt5.framework.

Ri0n commented 7 years ago

Ok. it's proven we can compile for mac and it works. our maintenance repo now has scripts for that. An experimental build is here https://sourceforge.net/projects/psiplus/files/Mac-OS-X/psi-plus-1.0.9.835-webkit-qt5-git-2017-06-11-macosx.dmg/download It has some other probems so.. for other bug reports..