diff --git a/flightgear b/flightgear index c2a3d24..5ec5c34 160000 --- a/flightgear +++ b/flightgear @@ -1 +1 @@ -Subproject commit c2a3d24ef3c77f4c1457f69c21ef7fc5091494b8 +Subproject commit 5ec5c34255d2488d5a7b255cf9c95520eccf3ac5 diff --git a/hudson_mac_package_release.rb b/hudson_mac_package_release.rb new file mode 100755 index 0000000..7cd2de0 --- /dev/null +++ b/hudson_mac_package_release.rb @@ -0,0 +1,113 @@ +#!/usr/bin/ruby + +require 'ERB' + +$osgLibs = ['osgFX', 'osgParticle', 'osg', 'osgGA', 'osgText', 'osgUtil', 'osgSim', 'osgViewer', 'osgDB'] +$osgPlugins = ['ac', 'osg', 'freetype', 'qt', 'imageio', 'rgb', 'txf', 'mdl', '3ds'] + +def runOsgVersion(option) + env = "export DYLD_LIBRARY_PATH=#{Dir.pwd}/dist/lib" + bin = Dir.pwd + "/dist/bin/osgversion" + return `#{env}; #{bin} --#{option}`.chomp +end + +osgVersion = runOsgVersion('version-number') +$osgSoVersion=runOsgVersion('so-number') +$openThreadsSoVersion=runOsgVersion('openthreads-soversion-number') + +puts "osgVersion=#{osgVersion}, so-number=#{$osgSoVersion}" + +$alutSourcePath='/Library/Frameworks/ALUT.framework' + +def fix_install_names(object) + #puts "fixing install names for #{object}" + + $osgLibs.each do |l| + oldName = "lib#{l}.#{$osgSoVersion}.dylib" + newName = "@executable_path/../Frameworks/#{oldName}" + `install_name_tool -change #{oldName} #{newName} #{object}` + end + + oldName = "libOpenThreads.#{$openThreadsSoVersion}.dylib" + newName= "@executable_path/../Frameworks/#{oldName}" + `install_name_tool -change #{oldName} #{newName} #{object}` + + alutBundlePath = "@executable_path/../Frameworks/Alut.framework" + alutLib = "Versions/A/ALUT" + `install_name_tool -change #{$alutSourcePath}/#{alutLib} #{alutBundlePath}/#{alutLib} #{object}` +end + +prefixDir=Dir.pwd + "/dist" +dmgDir=Dir.pwd + "/image" +srcDir=Dir.pwd + "/flightgear" + + +puts "Erasing previous image dir" +`rm -rf #{dmgDir}` + +bundle=dmgDir + "/FlightGear.app" +contents=bundle + "/Contents" +macosDir=contents + "/MacOS" +frameworksDir=contents +"/Frameworks" +resourcesDir=contents+"/Resources" +osgPluginsDir=contents+"/PlugIns/osgPlugins-#{osgVersion}" +volName="\"FlightGear #{VERSION}\"" + +VERSION = File.read("#{srcDir}/version").strip + +dmgPath = Dir.pwd + "/fg_mac_#{VERSION}.dmg" + +puts "Creating directory structure" +`mkdir -p #{macosDir}` +`mkdir -p #{frameworksDir}` +`mkdir -p #{resourcesDir}` +`mkdir -p #{osgPluginsDir}` + +puts "Copying binaries" +bins = ['fgfs', 'terrasync', 'fgjs'] +bins.each do |b| + `cp #{prefixDir}/bin/#{b} #{macosDir}/#{b}` + fix_install_names("#{macosDir}/#{b}") +end + +puts "copying libraries" +$osgLibs.each do |l| + libFile = "lib#{l}.#{$osgSoVersion}.dylib" + `cp #{prefixDir}/lib/#{libFile} #{frameworksDir}` + fix_install_names("#{frameworksDir}/#{libFile}") +end + +# and not forgetting OpenThreads +libFile = "libOpenThreads.#{$openThreadsSoVersion}.dylib" +`cp #{prefixDir}/lib/#{libFile} #{frameworksDir}` + +$osgPlugins.each do |p| + pluginFile = "osgdb_#{p}.so" + `cp #{prefixDir}/lib/osgPlugins-#{osgVersion}/#{pluginFile} #{osgPluginsDir}` + fix_install_names("#{osgPluginsDir}/#{pluginFile}") +end + +# custom ALUT +# must copy frameworks using ditto +`ditto #{$alutSourcePath} #{frameworksDir}/ALUT.framework` + +# Macflightgear launcher + + +# Info.plist +template = File.read("#{srcDir}/package/mac/nightly.plist.in") +output = ERB.new(template).result(binding) + +File.open("#{contents}/Info.plist", 'w') { |f| + f.write(output) +} + +`cp #{srcDir}/package/mac/FlightGear.icns #{resourcesDir}/FlightGear.icns` +`cp #{srcDir}/COPYING #{dmgDir}` + +puts "Creating DMG" + +createArgs = "-format UDBZ -imagekey bzip2-level=9 -quiet -volname #{volName}" + +`rm #{dmgPath}` +`hdiutil create -srcfolder #{dmgDir} #{createArgs} #{dmgPath}` diff --git a/simgear b/simgear index 1670f88..e988dc0 160000 --- a/simgear +++ b/simgear @@ -1 +1 @@ -Subproject commit 1670f88e54fcb7842913f874f0f308f551df102f +Subproject commit e988dc0e421744fe71b7cdc74b8ff081becfc31d