openscad / openscad

OpenSCAD - The Programmers Solid 3D CAD Modeller
https://www.openscad.org
Other
7.08k stars 1.21k forks source link

Building instructions for OSX not quite right #283

Closed davidbuzz closed 11 years ago

davidbuzz commented 11 years ago

I followed OSX instructions here: https://github.com/openscad/openscad/blob/master/README.md

and all the prerequisites etc appeared to build fine apart from a minor issue at the end with regard to Sparkle.framework:

[snip] Touch "build/Release/Sparkle Test App.app" cd /Applications/reprap/libraries/src/Sparkle-0ed83cf9f2eeb425d4fdd141c01a29d843970c20 /usr/bin/touch -c "/Applications/reprap/libraries/src/Sparkle-0ed83cf9f2eeb425d4fdd141c01a29d843970c20/build/Release/Sparkle Test App.app"

\ BUILD SUCCEEDED **

rm: /Applications/reprap/openscad/../libraries/install/lib/Sparkle.framework: No such file or directory

I did a 'qmake' and then 'make' , and 'make' failed with this error:

src/SparkleAutoUpdater.mm:9:29: error: Sparkle/Sparkle.h: No such file or directory src/SparkleAutoUpdater.mm:16: error: ISO C++ forbids declaration of ‘SUUpdater’ with no type src/SparkleAutoUpdater.mm:16: error: expected ‘;’ before ‘’ token src/SparkleAutoUpdater.mm: In constructor ‘SparkleAutoUpdater::SparkleAutoUpdater()’: src/SparkleAutoUpdater.mm:23: error: ‘class SparkleAutoUpdater::Private’ has no member named ‘updater’ src/SparkleAutoUpdater.mm:23: error: ‘SUUpdater’ was not declared in this scope src/SparkleAutoUpdater.mm:24: error: ‘class SparkleAutoUpdater::Private’ has no member named ‘updater’ src/SparkleAutoUpdater.mm: In destructor ‘virtual SparkleAutoUpdater::~SparkleAutoUpdater()’: src/SparkleAutoUpdater.mm:31: error: ‘class SparkleAutoUpdater::Private’ has no member named ‘updater’ src/SparkleAutoUpdater.mm: In member function ‘virtual void SparkleAutoUpdater::checkForUpdates()’: src/SparkleAutoUpdater.mm:37: error: ‘class SparkleAutoUpdater::Private’ has no member named ‘updater’ src/SparkleAutoUpdater.mm: In member function ‘virtual void SparkleAutoUpdater::setAutomaticallyChecksForUpdates(bool)’: src/SparkleAutoUpdater.mm:42: error: ‘class SparkleAutoUpdater::Private’ has no member named ‘updater’ src/SparkleAutoUpdater.mm: In member function ‘virtual bool SparkleAutoUpdater::automaticallyChecksForUpdates()’: src/SparkleAutoUpdater.mm:47: error: ‘class SparkleAutoUpdater::Private’ has no member named ‘updater’ src/SparkleAutoUpdater.mm: In member function ‘virtual QString SparkleAutoUpdater::lastUpdateCheckDate()’: src/SparkleAutoUpdater.mm:63: error: ‘class SparkleAutoUpdater::Private’ has no member named ‘updater’ src/SparkleAutoUpdater.mm: In member function ‘void SparkleAutoUpdater::updateFeed()’: src/SparkleAutoUpdater.mm:71: error: ‘class SparkleAutoUpdater::Private’ has no member named ‘updater’ make: ** [objects/SparkleAutoUpdater.o] Error 1

( which means Sparkle.framework wasn't built or installed properly )

I searched around a bit, and found the compiled SParkle.framework files in: ../libraries/src/Sparkle-0ed83cf9f2eeb425d4fdd141c01a29d843970c20/build/Release/

so, I copied the Sparkle.framework folder from there into my main /Library/Frameworks folder on my mac. I also saw an app in hte same folder called "finish_installation.app" that I ran ( out of curiosity), but it didn't appear to do anything, so I don't think it's relevant.

... and I ran 'make' again. It worked that time, and I now have a new OpenSCAD.app as I expected. I should.

davidbuzz commented 11 years ago

Also, I find that when I try to run the resulting OpenSCAD.app, it fails ( complains of missing boost frameworks, so I looked inside the .app, and there were no frameworks inside. I discovered scripts/publish-macosx.sh which seems to do this, and it got tripped-up by the lack of Sparkle.framework too.

thinkyhead commented 11 years ago

The README needs an update regarding using the MacPorts version of OpenCSG. It actually does exist under 'port' now.

davidbuzz commented 11 years ago

nobody uses ports anymore. homebrew all the way.

thinkyhead commented 11 years ago

MacPorts is still being maintained. I use MacPorts. I'd like to see the notes updated to reflect the current state, it makes the project look more pro. Also I found an error in the check-dependencies.sh script wrt /opt/local, which I'll report and patch in my fork, along with the rest of the necessary patches to get better Mac support.

kintel commented 11 years ago

Sparkle is really only needed for deployment builds (plus that I haven't quite figured out how to make a stable scripted build of it), so I'll disable it for casual builds.

davidbuzz commented 11 years ago

I have recompiled from git from today, including a 'make clean', 'qmake', 'make', and I still get Sparkle issues: ( unless i manually copy sparkle.framework from ./libraries//src/Sparkle-0ed83cf9f2eeb425d4fdd141c01a29d843970c20/build/Release/Sparkle.framework /Library/Frameworks/ )

here's the make error: clang -c -pipe -O2 -arch x86_64 -Wall -W -DOPENSCAD_VERSION=2013.03.03 -DOPENSCAD_YEAR=2013.0 -DOPENSCAD_MONTH=03.0 -DOPENSCAD_DAY=03.0 -DDEBUG -DENABLE_MDI -DUSE_PROGRESSWIDGET -DENABLE_CGAL -DENABLE_OPENCSG -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Cellar/qt/4.8.4/mkspecs/unsupported/macx-clang -I. -I/usr/local/Cellar/qt/4.8.4/lib/QtCore.framework/Versions/4/Headers -I/opt/local/include/eigen2 -I/usr/local/Cellar/qt/4.8.4/lib/QtCore.framework/Versions/4/Headers -I/usr/local/Cellar/qt/4.8.4/lib/QtGui.framework/Versions/4/Headers -I/usr/local/Cellar/qt/4.8.4/lib/QtGui.framework/Versions/4/Headers -I/usr/local/Cellar/qt/4.8.4/lib/QtOpenGL.framework/Versions/4/Headers -I/usr/local/Cellar/qt/4.8.4/lib/QtOpenGL.framework/Versions/4/Headers -I/usr/local/Cellar/qt/4.8.4/include -Isrc -I/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/System/Library/Frameworks/AGL.framework/Headers -Iobjects -Iobjects -I/opt/local/include -F/usr/local/Cellar/qt/4.8.4/lib src/SparkleAutoUpdater.mm -o objects/SparkleAutoUpdater.o src/SparkleAutoUpdater.mm:9:10: fatal error: 'Sparkle/Sparkle.h' file not found

include <Sparkle/Sparkle.h>

     ^

1 error generated. make: *\ [objects/SparkleAutoUpdater.o] Error 1

here's the lasst few lines of output of the ./scripts/publish-macosx.sh script: [snip] Creating archive.. Binary created: OpenSCAD-2013.03.03.dmg Sanity check of the app bundle... Error: External dependency @loader_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle

kintel commented 11 years ago

Thanks - the reason you get the "External dependency" error is that the Sparkle build script doesn't finish properly, more concretely, this line: install_name_tool -id $DEPLOYDIR/lib/Sparkle.framework/Versions/A/Sparkle $DEPLOYDIR/lib/Sparkle.framework/Sparkle

Could you post the error message you get while building Sparkle? The first one you posted should have been fixed by now (rm -rf Sparkle-$version)

davidbuzz commented 11 years ago

I manually stepped through the relevant part of the macos_build_dependancies.sh script, running each line on the command-line and everything appears to have gone fine:, no errors were reported. I also tried it with the extra "-arch i386" as well, and that was fine too.

the last line ( the install_name_tool one ) gave no error .

504 unset CC 505 unset CXX 506 version=0ed83cf9f2eeb425d4fdd141c01a29d843970c20 507 echo "Building Sparkle" $version "..." 508 ls 509 pwd 510 BASEDIR=/Applications/reprap/libraries 511 cd $BASEDIR/src 512 pwd 513 rm -rf Sparkle-$version 514 curl -o Sparkle-$version.zip https://nodeload.github.com/andymatuschak/Sparkle/zip/$version 515 unzip -q Sparkle-$version.zip 516 cd Sparkle-$version 517 OPENSCADDIR=/Applications/reprap/openscad 518 patch -p1 < $OPENSCADDIR/patches/sparkle.patch 519 xcodebuild -project Sparkle.xcodeproj clean 520 xcodebuild -project Sparkle.xcodeproj -scheme Sparkle -configuration Release -arch x86_64 $SPARKLE_EXTRA_FLAGS 521 ls /Applications/reprap/libraries/install/ 522 DEPLOYDIR=/Applications/reprap/libraries/install/ 523 rm -rf $DEPLOYDIR/lib/Sparkle.framework 524 cp -Rf build/Release/Sparkle.framework $DEPLOYDIR/lib/ 525 install_name_tool -id $DEPLOYDIR/lib/Sparkle.framework/Versions/A/Sparkle $DEPLOYDIR/lib/Sparkle.framework/Sparkle

fyi, the last line expands to: install_name_tool -id /Applications/reprap/libraries/install//lib/Sparkle.framework/Versions/A/Sparkle /Applications/reprap/libraries/install//lib/Sparkle.framework/Sparkle

ideas?

Buzz.

On 3 March 2013 19:35, Marius Kintel notifications@github.com wrote:

Thanks - the reason you get the "External dependency" error is that the Sparkle build script doesn't finish properly, more concretely, this line: install_name_tool -id $DEPLOYDIR/lib/Sparkle.framework/Versions/A/Sparkle $DEPLOYDIR/lib/Sparkle.framework/Sparkle

Could you post the error message you get while building Sparkle? The first one you posted should have been fixed by now (rm -rf Sparkle-$version)

— Reply to this email directly or view it on GitHubhttps://github.com/openscad/openscad/issues/283#issuecomment-14344319 .

kintel commented 11 years ago

If the manual installation process succeeds, then you should be able to build OpenSCAD as well. Did you try rebuilding after your manual install?

Somehow, the Sparkle install script sometimes fail, but not always. I haven't figured that out yet, see https://github.com/andymatuschak/Sparkle/issues/246

kintel commented 11 years ago

This should be resolved now (Sparkle only built for deployment builds)