Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

Building instructions for OSX not quite right #283

Closed
davidbuzz opened this Issue Feb 21, 2013 · 10 comments

Comments

Projects
None yet
3 participants

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.

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.

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

nobody uses ports anymore. homebrew all the way.

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.

Owner

kintel commented Mar 1, 2013

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.

@ghost ghost assigned kintel Mar 1, 2013

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

Owner

kintel commented Mar 3, 2013

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)

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
.

Owner

kintel commented Mar 5, 2013

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 andymatuschak/Sparkle#246

Owner

kintel commented May 9, 2013

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

@kintel kintel closed this May 9, 2013

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment