From 9db96af7bb437ac251d7bbf6531555b028d13357 Mon Sep 17 00:00:00 2001 From: Steven Hahn <hahnse@ornl.gov> Date: Wed, 21 Jan 2015 13:50:37 -0500 Subject: [PATCH] Refs #10840. Adding comments to ruby file creating app bundle --- Code/Mantid/MantidPlot/make_package.rb | 68 ++++++++++++-------------- 1 file changed, 30 insertions(+), 38 deletions(-) diff --git a/Code/Mantid/MantidPlot/make_package.rb b/Code/Mantid/MantidPlot/make_package.rb index 0a7887aea33..6182ae2f81f 100755 --- a/Code/Mantid/MantidPlot/make_package.rb +++ b/Code/Mantid/MantidPlot/make_package.rb @@ -3,13 +3,14 @@ require 'pathname' +#filenames with path for all shared libraries used by MantidPlot and its dependencies. library_filenames = ["/usr/local/lib/libboost_regex-mt.dylib", "/usr/local/lib/libboost_date_time-mt.dylib", "/usr/local/lib/libboost_python-mt.dylib", "/usr/local/lib/libgsl.0.dylib", "/usr/local/lib/libgslcblas.0.dylib", "/usr/local/lib/libjsoncpp.dylib", - "/usr/local/lib/libmuparser.2.dylib", + "/usr/local/lib/libmuparser.2.dylib", "/usr/local/lib/libNeXus.0.dylib", "/usr/local/lib/libNeXusCPP.0.dylib", "/usr/local/lib/libPocoFoundation.17.dylib", @@ -22,20 +23,20 @@ library_filenames = ["/usr/local/lib/libboost_regex-mt.dylib", "/usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib", "/usr/local/lib/libTKernel.9.dylib", "/usr/local/lib/libTKBO.9.dylib", - "/usr/local/lib/libTKernel.9.dylib", - "/usr/local/lib/libTKBO.9.dylib", - "/usr/local/lib/libTKPrim.9.dylib", - "/usr/local/lib/libTKMesh.9.dylib", - "/usr/local/lib/libTKBRep.9.dylib", - "/usr/local/lib/libTKGeomAlgo.9.dylib", - "/usr/local/lib/libTKTopAlgo.9.dylib", - "/usr/local/lib/libTKMath.9.dylib", - "/usr/local/lib/libTKG2d.9.dylib", - "/usr/local/lib/libTKG3d.9.dylib", - "/usr/local/lib/libTKGeomBase.9.dylib", - "/usr/local/lib/libqwt.5.dylib", - "/usr/local/lib/libqwtplot3d.0.dylib", - "/usr/local/lib/libqscintilla2.11.dylib", + "/usr/local/lib/libTKernel.9.dylib", + "/usr/local/lib/libTKBO.9.dylib", + "/usr/local/lib/libTKPrim.9.dylib", + "/usr/local/lib/libTKMesh.9.dylib", + "/usr/local/lib/libTKBRep.9.dylib", + "/usr/local/lib/libTKGeomAlgo.9.dylib", + "/usr/local/lib/libTKTopAlgo.9.dylib", + "/usr/local/lib/libTKMath.9.dylib", + "/usr/local/lib/libTKG2d.9.dylib", + "/usr/local/lib/libTKG3d.9.dylib", + "/usr/local/lib/libTKGeomBase.9.dylib", + "/usr/local/lib/libqwt.5.dylib", + "/usr/local/lib/libqwtplot3d.0.dylib", + "/usr/local/lib/libqscintilla2.11.dylib", "/usr/local/lib/libmxml.dylib", "/usr/local/lib/libhdf5.9.dylib", "/usr/local/lib/libhdf5_hl.9.dylib", @@ -45,6 +46,7 @@ library_filenames = ["/usr/local/lib/libboost_regex-mt.dylib", "/usr/local/lib/libjpeg.8.dylib" ] +#This copies the libraries over, then changes permissions and the id from /usr/local/lib to @rpath library_filenames.each do |filename| basename = File.basename(filename) `cp #{filename} Contents/MacOS/` @@ -52,28 +54,15 @@ library_filenames.each do |filename| `install_name_tool -id @rpath/#{basename} Contents/MacOS/#{basename}` end -library_filenames.push("/usr/local/Cellar/poco/1.4.7p1/lib/libPocoFoundation.17.dylib") -library_filenames.push("/usr/local/Cellar/openssl/1.0.1k/lib/libcrypto.1.0.0.dylib") -library_filenames.push("/usr/local/Cellar/poco/1.4.7p1/lib/libPocoNet.17.dylib") -library_filenames.push("/usr/local/Cellar/poco/1.4.7p1/lib/libPocoCrypto.17.dylib") -library_filenames.push("/usr/local/Cellar/poco/1.4.7p1/lib/libPocoUtil.17.dylib") -library_filenames.push("/usr/local/Cellar/hdf4/4.2.10/lib/libdf.4.2.10.dylib") -library_filenames.push("/usr/local/Cellar/hdf5/1.8.14/lib/libhdf5.9.dylib") -library_filenames.push("/usr/local/Cellar/nexusformat/4.3.3/lib/libNeXus.0.dylib") -library_filenames.push("/usr/local/Cellar/poco/1.4.7p1/lib/libPocoXML.17.dylib") - - +#use install_name_tool to change dependencies form /usr/local to libraries in the package. search_patterns = ["**/*.dylib","**/*.so","**/MantidPlot"] search_patterns.each do |pattern| Dir[pattern].each do |library| - p "library: #{library}" dependencies = `otool -L #{library}` dependencies.split("\n").each do |dependency| library_filenames.each do |filename| - if dependency.include? filename - basename = File.basename(filename) - #p filename - #p basename + basename = File.basename(filename) + if dependency.include? basename `install_name_tool -change #{filename} @rpath/#{basename} #{library}` end end @@ -81,8 +70,10 @@ search_patterns.each do |pattern| end end +#We'll use macdeployqt to fix qt dependencies. `macdeployqt ../MantidPlot.app` +#fix remaining QT linking issues `install_name_tool -change /usr/local/lib/Qt3Support.framework/Versions/4/Qt3Support @loader_path/../Frameworks/Qt3Support.framework/Versions/4/Qt3Support Contents/MacOS/mantidqtpython.so` `install_name_tool -change /usr/local/lib/QtOpenGL.framework/Versions/4/QtOpenGL @loader_path/../Frameworks/QtOpenGL.framework/Versions/4/QtOpenGL Contents/MacOS/mantidqtpython.so` `install_name_tool -change /usr/local/lib/QtSvg.framework/Versions/4/QtSvg @loader_path/../Frameworks/QtSvg.framework/Versions/4/QtSvg Contents/MacOS/mantidqtpython.so` @@ -106,16 +97,17 @@ end `install_name_tool -change /usr/local/lib/QtCore.framework/Versions/4/QtCore @loader_path/../Frameworks/QtCore.framework/Versions/4/QtCore Contents/MacOS/libqscintilla2.11.dylib` +#change id of all PyQt4 libraries pyqt4_patterns = ["**/PyQt4/*.so"] pyqt4_patterns.each do |pattern| Dir[pattern].each do |library| - p "library: #{library}" basename = File.basename(library) `chmod +w Contents/MacOS/PyQt4/#{basename}` `install_name_tool -id @rpath/#{basename} Contents/MacOS/PyQt4/#{basename}` end end +#fix PyQt4 and Qt4 linking issues `install_name_tool -change /usr/local/lib/QtCore.framework/Versions/4/QtCore @loader_path/../../Frameworks/QtCore.framework/Versions/4/QtCore Contents/MacOS/PyQt4/QtCore.so` `install_name_tool -change /usr/local/lib/QtGui.framework/Versions/4/QtGui @loader_path/../../Frameworks/QtGui.framework/Versions/4/QtGui Contents/MacOS/PyQt4/QtGui.so` @@ -136,6 +128,7 @@ end `install_name_tool -change /usr/local/lib/QtXml.framework/Versions/4/QtXml @loader_path/../../Frameworks/QtXml.framework/Versions/4/QtXml Contents/MacOS/PyQt4/QtXml.so` `install_name_tool -change /usr/local/lib/QtCore.framework/Versions/4/QtCore @loader_path/../../Frameworks/QtCore.framework/Versions/4/QtCore Contents/MacOS/PyQt4/QtXml.so` +#Copy over python libraries not included with OSX. `cp -r /Library/Python/2.7/site-packages/sphinx Contents/MacOS/` `cp -r /Library/Python/2.7/site-packages/sphinx_bootstrap_theme Contents/MacOS/` `cp -r /Library/Python/2.7/site-packages/IPython Contents/MacOS/` @@ -144,7 +137,6 @@ end #add other dependencies found in current package #currently missing epics - `cp /Library/Python/2.7/site-packages/gnureadline.so Contents/MacOS/` `cp /Library/Python/2.7/site-packages/readline.py Contents/MacOS/` `cp /Library/Python/2.7/site-packages/readline.pyc Contents/MacOS/` @@ -157,11 +149,14 @@ end `cp -r /Library/Python/2.7/site-packages/markupsafe Contents/MacOS/` `cp -r /Library/Python/2.7/site-packages/jinja2 Contents/MacOS/` `cp -r /usr/local/lib/python2.7/site-packages/nxs Contents/MacOS/` -`rm Contents/MacOS/nxs/*.pyc` `cp -r /Library/Python/2.7/site-packages/psutil Contents/MacOS/` `mkdir Contents/MacOS/bin` -`cp -r /usr/local/bin/ipython Contents/MacOS/bin/` +`cp /usr/local/bin/ipython Contents/MacOS/bin/` + +# current .pyc files have permissions issues. These files are recreated by CPack. +`rm Contents/MacOS/nxs/*.pyc` +#Lastly check for any libraries in the package linking against homebrew libraries. search_patterns.each do |pattern| Dir[pattern].each do |library| dependencies = `otool -L #{library}` @@ -169,9 +164,6 @@ search_patterns.each do |pattern| if dependency.include? "/usr/local/" p "issue with library: #{library} linked against: #{dependency}" end - if dependency.include? "libhdf5.9.dylib" - p "checkout #{library} #{dependency.strip}" - end end end end -- GitLab