Compare commits

...

17 Commits

Author SHA1 Message Date
James Turner
65605d175f Bump release heads 2015-09-20 09:21:56 -05:00
James Turner
f00e4910e8 Archive PDB files inside the build script. 2015-09-02 22:55:57 +01:00
James Turner
d4df1c7cba Windows: Clean output dir
avoid old output builds being archived or uploaded.
2015-09-02 22:55:57 +01:00
James Turner
6a202a495f Windows packaging tweaks.
- adjust shortcut working dirs so default data path works
(should really be fixed by improving the code)

- fix paths referring to fgdata
2015-09-02 14:32:14 +01:00
James Turner
4b3e09deec Fix data destination on Windows
- ensures default path logic works.
2015-09-02 08:48:29 +01:00
James Turner
e4282ff85b Don’t include SCM entries in base package. 2015-09-02 08:42:04 +01:00
James Turner
866b67d036 Fix typo breaking nightly builds 2015-08-31 23:25:57 +01:00
James Turner
5417456b05 Linux-relase: fix base tarball creation 2015-08-31 23:24:15 +01:00
James Turner
5212ea7bdc Adjust base package creation
- include aircraft for 3.6
2015-08-31 16:22:34 +01:00
James Turner
e3eb2aa347 Win & Mac package fixes. 2015-08-31 16:13:25 +01:00
James Turner
bc58ece69a Tweaks to release DMG creation on Mac. 2015-08-31 11:18:16 +01:00
James Turner
802e9dbc28 Different packaging for Mac RC builds.
Set FG_IS_RELEASE=1 to control (for now)
2015-08-31 09:19:52 +01:00
James Turner
3f6504eb81 Post-upload tweaks to support RC builds.
(merge to next once done)
2015-08-31 08:39:30 +01:00
James Turner
03999ef343 FGRun release version 2015-08-30 21:18:04 +01:00
James Turner
4a9d8e58d2 Submodule branches for release. 2015-08-30 21:17:26 +01:00
James Turner
ced4855c65 Update subproject heads on release branch. 2015-08-30 21:15:49 +01:00
Torsten Dreyer
75c35a49b3 Correct version numbers for start menu entries
Patch submitted by Alessandro Menti
2015-08-02 20:55:16 +02:00
13 changed files with 166 additions and 63 deletions

2
.gitignore vendored
View File

@ -20,3 +20,5 @@ archivebuild
osgbuild
CMakeCache.txt
*.pyc
base_package
extended-data

10
.gitmodules vendored
View File

@ -1,20 +1,20 @@
[submodule "simgear"]
path = simgear
url = git://git.code.sf.net/p/flightgear/simgear
branch = next
branch = release/3.6.0
[submodule "flightgear"]
path = flightgear
url = git://git.code.sf.net/p/flightgear/flightgear
branch = next
branch = release/3.6.0
[submodule "fgrun"]
path = fgrun
url = git://git.code.sf.net/p/flightgear/fgrun
branch = next
branch = release/3.6.0
[submodule "fgdata"]
path = fgdata
url = git://git.code.sf.net/p/flightgear/fgdata
branch = next
branch = release/3.6.0
[submodule "windows-3rd-party"]
path = windows-3rd-party
url = git://git.code.sf.net/p/flightgear/windows-3rd-party
branch = master
branch = release/3.6.0

View File

@ -45,6 +45,7 @@ AppUpdatesURL=http://www.flightgear.org
DefaultDirName={pf}\FlightGear {#FGVersion}
UsePreviousAppDir=no
DefaultGroupName=FlightGear {#FGVersion}
UsePreviousGroup=no
LicenseFile=X:\flightgear\COPYING
Uninstallable=yes
SetupIconFile=X:\flightgear\package\flightgear.ico
@ -100,9 +101,11 @@ Source: "{#VCInstallDir}\redist\x64\Microsoft.VC100.CRT\*.dll"; DestDir: "{app}\
Source: "X:\install\msvc100\FlightGear\bin\fgpanel.exe"; DestDir: "{app}\bin"; Flags: ignoreversion
Source: "X:\3rdParty\bin\oalinst.exe"; DestDir: "{app}\bin"; Flags: ignoreversion skipifsourcedoesntexist
; Include the base package
; Include the base package
#if IncludeData == "TRUE"
Source: "X:\fgdata\*.*"; DestDir: "{app}\fgdata"; Flags: ignoreversion recursesubdirs skipifsourcedoesntexist
Source: "X:\fgdata\*.*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs skipifsourcedoesntexist
; work-around for 3.6: look for additional aircraft data
Source: "X:\extended-data\*.*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs skipifsourcedoesntexist
#endif
; 32 bits install
@ -188,14 +191,13 @@ Name: "{userdocs}\FlightGear\TerraSync"; Permissions: everyone-modify; Check: no
Name: "{userdocs}\FlightGear\Custom Scenery"; Permissions: everyone-modify; Check: not DirExists(ExpandConstant('{userdocs}\FlightGear\Custom Scenery'))
[Icons]
Name: "{userdesktop}\FlightGear {#FGVersion}"; Filename: "{app}\bin\fgfs.exe"; Parameters: "--launcher"; WorkingDir: "{app}"; Tasks: desktopicon;
Name: "{group}\FlightGear Launcher"; Filename: "{app}\bin\fgfs.exe"; Parameters: "--launcher"; WorkingDir: "{app}";
Name: "{group}\FlightGear Manual"; Filename: "{app}\fgdata\Docs\getstart.pdf"
Name: "{group}\FlightGear Documentation"; Filename: "{app}\fgdata\Docs\index.html"
Name: "{userdesktop}\FlightGear {#FGVersion}"; Filename: "{app}\bin\fgfs.exe"; Parameters: "--launcher"; WorkingDir: "{app}\bin"; Tasks: desktopicon;
Name: "{group}\FlightGear"; Filename: "{app}\bin\fgfs.exe"; Parameters: "--launcher"; WorkingDir: "{app}\bin";
Name: "{group}\FlightGear Manual"; Filename: "{app}\data\Docs\getstart.pdf"
Name: "{group}\FlightGear Documentation"; Filename: "{app}\data\Docs\index.html"
Name: "{group}\Flightgear Wiki"; Filename: "http://wiki.flightgear.org"
Name: "{group}\Tools\FGRun"; Filename: "{app}\bin\fgrun.exe"; WorkingDir: "{app}";
Name: "{group}\Tools\Install & Uninstall Scenery"; Filename: "{app}\bin\fgadmin.exe"; WorkingDir: "{app}"
Name: "{group}\Tools\TerraSync"; Filename: "{app}\bin\terrasync.exe"; Parameters: "-S -p 5505 -d ""{userdocs}\FlightGear\TerraSync"""; WorkingDir: "{app}"
Name: "{group}\Tools\Uninstall FlightGear"; Filename: "{uninstallexe}"
Name: "{group}\Tools\js_demo"; Filename: "{app}\bin\js_demo.exe"
Name: "{group}\Tools\fgjs"; Filename: "cmd"; Parameters: "/k fgjs.exe ""--fg-root={app}\fgdata"""; WorkingDir: "{app}\bin"
@ -207,7 +209,7 @@ Name: "{group}\Tools\yasim"; Filename: "cmd"; Parameters: "/k ""{app}\bin\yasim.
Name: "{group}\Tools\fgpanel"; Filename: "cmd"; Parameters: "/k ""{app}\bin\fgpanel.exe"" -h"; WorkingDir: "{app}\bin"
Name: "{group}\Tools\FGCom"; Filename: "{app}\bin\fgcom.exe"; WorkingDir: "{app}\bin"
Name: "{group}\Tools\FGCom-testing"; Filename: "{app}\bin\fgcom.exe"; Parameters: "--frequency=910"; WorkingDir: "{app}\bin"
Name: "{group}\Tools\Explore Documentation Folder"; Filename: "{app}\fgdata\Docs"
Name: "{group}\Tools\Explore Documentation Folder"; Filename: "{app}\data\Docs"
[Run]
filename: "cmd.exe"; WorkingDir: "{app}\bin"; Parameters: "/C del msvc*.dll"; Check: FileExists(ExpandConstant('{app}\bin\vcredist_x86.exe'))
@ -216,7 +218,7 @@ filename: "{app}\bin\vcredist_x86.exe"; WorkingDir: "{app}\bin"; Parameters: "/p
filename: "{app}\bin\vcredist_x64.exe"; WorkingDir: "{app}\bin"; Parameters: "/passive /norestart"; Description: "Installing MS Visual C++ runtime components"; Check: Is64BitInstallMode and FileExists(ExpandConstant('{app}\bin\vcredist_x64.exe'))
filename: "{app}\bin\oalinst.exe"; WorkingDir: "{app}\bin"; Description: "Installing OpenAL"; Check: IsTaskSelected('insoal') and FileExists(ExpandConstant('{app}\bin\oalinst.exe'))
; Put installation directory into the fgrun.prefs
filename: "{app}\bin\fgrun.exe"; WorkingDir: "{app}\bin"; Parameters: "--silent ""--fg-exe={app}\bin\fgfs.exe"" ""--fg-root={app}\fgdata"" ""--fg-scenery={userdocs}\FlightGear\Custom Scenery;{app}\fgdata\Scenery;{userdocs}\FlightGear\TerraSync"" ""--fg-aircraft={userdocs}\FlightGear\Aircraft"" ""--terrasync-dir={userdocs}\FlightGear\TerraSync"" --version={#FGVersion}"
filename: "{app}\bin\fgrun.exe"; WorkingDir: "{app}\bin"; Parameters: "--silent ""--fg-exe={app}\bin\fgfs.exe"" ""--fg-root={app}\data"" ""--fg-scenery={userdocs}\FlightGear\Custom Scenery;{app}\fgdata\Scenery;{userdocs}\FlightGear\TerraSync"" ""--fg-aircraft={userdocs}\FlightGear\Aircraft"" ""--terrasync-dir={userdocs}\FlightGear\TerraSync"" --version={#FGVersion}"
; Put installation and source directories into the fgadmin.prefs
filename: "{app}\bin\fgadmin.exe"; WorkingDir: "{app}\bin"; Parameters: "--silent ""--install-source={src}\..\Scenery"" ""--scenery-dest={userdocs}\FlightGear\Custom Scenery"""

17
aircraft.rules Normal file
View File

@ -0,0 +1,17 @@
+ /Aircraft
+ /Aircraft/777
+ /Aircraft/777-200
+ /Aircraft/b1900d
+ /Aircraft/CitationX
+ /Aircraft/ZLT-NT
+ /Aircraft/dhc2
+ /Aircraft/Cub
+ /Aircraft/sopwithCamel
+ /Aircraft/f-14b
+ /Aircraft/ASK13
+ /Aircraft/bo105
+ /Aircraft/Dragonfly
+ /Aircraft/SenecaII
+ /Aircraft/A6M2
- /Aircraft/*
- .svn

10
base-package.rules Normal file
View File

@ -0,0 +1,10 @@
- .git
- *.xcf
- *.tex
- .svn
- /fgdata/Textures/Unused
- /fgdata/Textures/*.orig
- /fgdata/Docs/source
- /fgdata/Models/Airspace
- /fgdata/Models/MNUAV

View File

@ -59,5 +59,25 @@ cp flightgear-*.tar.bz2 ../output/.
echo "Assembling base package"
cd $WORKSPACE
tar cjf output/FlightGear-$VERSION-data.tar.bz2 fgdata/
rm -rf base_package
# a: archive mode
# z: compress
# delete: 'delete extraneous files from dest dirs'; avoid bug 1344
# filter: use the rules in our rules file
echo "Copying FGData files"
rsync -a --delete \
--filter 'merge base-package.rules' \
fgdata base_package
echo "Syncing aircraft data"
rsync -a --delete --filter 'merge aircraft.rules' /home/jenkins/fgaddon-3.6.0/ extended-data
echo "Copying aircraft data"
rsync -a extended-data/ base_package/fgdata
echo "Creating tar archive"
pushd base_package
tar cjf $WORKSPACE/output/FlightGear-$VERSION-data.tar.bz2 fgdata/
popd

View File

@ -78,6 +78,13 @@ ECHO Packaging root is %WORKSPACE%
subst X: /D
subst X: %WORKSPACE%.
REM ensure output dir is clean since we upload the entirety of it
rmdir /S /Q output
REM archiving PDB files
copy %WORKSPACE%\build-fg32\src\Main\RelWithDebInfo\fgfs.pdb %WORKSPACE%\Output\fgfs-x86-%BUILD_NUMBER%.pdb
copy %WORKSPACE%\build-fg64\src\Main\RelWithDebInfo\fgfs.pdb %WORKSPACE%\Output\fgfs-x64-%BUILD_NUMBER%.pdb
REM indirect way to get command output into an environment variable
set PATH=%WORKSPACE%\install\msvc100\OpenSceneGraph\bin;%PATH%
osgversion --so-number > %TEMP%\osg-so-number.txt

2
fgdata

@ -1 +1 @@
Subproject commit 7b53516a9619f598721d7ee34d6a446367e9d9cd
Subproject commit d01b9bb1c7b8c1a4b0dd4b6c0088921bae21eeff

2
fgrun

@ -1 +1 @@
Subproject commit a9b036105a7c519090dc8324f5a43ba89810451e
Subproject commit c67c2ee07a34b43f9a3c06b20a7fa4e68dc30c25

@ -1 +1 @@
Subproject commit 1898a5fef8d4895c9b8e53b51083b03418c11f9d
Subproject commit 38e5a2a0eb3f3a15bbb2d94260d9c4d5274057c6

View File

@ -7,6 +7,19 @@ include FileUtils
$osgLibs = ['osgFX', 'osgParticle', 'osg', 'osgGA', 'osgText', 'osgUtil', 'osgSim', 'osgViewer', 'osgDB']
$osgPlugins = ['ac', 'osg', 'freetype', 'imageio', 'rgb', 'txf', 'mdl', '3ds']
# from http://drawingablank.me/blog/ruby-boolean-typecasting.html
class String
def to_bool
return true if self == true || self =~ (/^(true|t|yes|y|1)$/i)
return false if self == false || self.blank? || self =~ (/^(false|f|no|n|0)$/i)
raise ArgumentError.new("invalid value for Boolean: \"#{self}\"")
end
end
class NilClass
def to_bool; false; end
end
def runOsgVersion(option)
env = "export DYLD_LIBRARY_PATH=#{Dir.pwd}/dist/lib"
bin = Dir.pwd + "/dist/bin/osgversion"
@ -21,6 +34,9 @@ $codeSignIdentity = ENV['FG_CODESIGN_IDENTITY']
puts "Code signing identity is #{$codeSignIdentity}"
puts "osgVersion=#{osgVersion}, so-number=#{$osgSoVersion}"
$isRelease = ENV['FG_IS_RELEASE'].to_bool
puts "Is-release? : ##{$isRelease}"
$prefixDir=Dir.pwd + "/dist"
dmgDir=Dir.pwd + "/image"
srcDir=Dir.pwd + "/flightgear"
@ -53,8 +69,13 @@ fgCurrentYear = t.year
fgVersion = File.read("#{srcDir}/version").strip
volName="\"FlightGear #{fgVersion}\""
dmgPath = Dir.pwd + "/output/FlightGear-#{fgVersion}-nightly.dmg"
dmgFullPath = Dir.pwd + "/output/FlightGear-#{fgVersion}-nightly-full.dmg"
if $isRelease
dmgPath = "" # no 'lite' build for release candidates
dmgFullPath = Dir.pwd + "/output/FlightGear-#{fgVersion}.dmg"
else
dmgPath = Dir.pwd + "/output/FlightGear-#{fgVersion}-nightly.dmg"
dmgFullPath = Dir.pwd + "/output/FlightGear-#{fgVersion}-nightly-full.dmg"
end
puts "Creating directory structure"
`mkdir -p #{macosDir}`
@ -106,24 +127,27 @@ File.open("#{contents}/Info.plist", 'w') { |f|
`cp #{srcDir}/COPYING #{dmgDir}`
# move documentation to a public place
`mv fgdata/Docs/FGShortRef.pdf "#{dmgDir}/Quick Reference.pdf"`
`mv fgdata/Docs/getstart.pdf "#{dmgDir}/Getting Started.pdf"`
# create the 'lite' DMG without the base files
# code sign the entire bundle once complete - v2 code-signing
puts "Signing #{bundle}"
`codesign --deep -s "#{$codeSignIdentity}" #{bundle}`
puts "Creating DMG"
`cp fgdata/Docs/FGShortRef.pdf "#{dmgDir}/Quick Reference.pdf"`
`cp fgdata/Docs/getstart.pdf "#{dmgDir}/Getting Started.pdf"`
createArgs = "-format UDBZ -imagekey bzip2-level=9 -quiet -volname #{volName}"
`rm #{dmgPath}`
`hdiutil create -srcfolder #{dmgDir} #{createArgs} #{dmgPath}`
# work-around for 3.6: copy aircraft files too
`rsync -a extended-data/ #{resourcesDir}/data`
if !$isRelease
# create the 'lite' DMG without the base files
puts "Creatign full image with data"
# code sign the entire bundle once complete - v2 code-signing
puts "Signing #{bundle}"
`codesign --deep -s "#{$codeSignIdentity}" #{bundle}`
puts "Creating DMG"
`rm #{dmgPath}`
`hdiutil create -srcfolder #{dmgDir} #{createArgs} #{dmgPath}`
end
puts "Creating full image with data"
puts "Copying base package files into the image"
`rsync -a fgdata/ #{resourcesDir}/data`

View File

@ -6,19 +6,30 @@ from subprocess import call
suffix = '.dmg'
if sys.argv[1] == 'windows':
suffix = '.exe'
if sys.argv[1] == 'linux':
suffix = '.tar.bz2'
isReleaseCandidate = False
if len(sys.argv) > 2 and sys.argv[2] == 'release':
isReleaseCandidate = True
allSuffix = '*' + suffix
print "Wildcard pattern is:" + allSuffix
pattern = r'FlightGear-(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)-([\w-]+)' + suffix
publicNightlyRoot = "/var/www/html/builds/nightly"
incomingDir = "/home/jenkins/nightly-incoming"
sourceForgePath = "/home/frs/project/f/fl/flightgear/unstable/"
pattern = r'\w+-(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)([\w-]*)' + suffix
sourceForgeUserHost = "jmturner@frs.sourceforge.net"
sftpCommandFile = "sftp-commands"
os.chdir(publicNightlyRoot)
if isReleaseCandidate:
publicRoot = "/var/www/html/builds/rc"
incomingDir = "/home/jenkins/incoming"
sourceForgePath = "/home/frs/project/f/fl/flightgear/release-candidate/"
else:
publicRoot = "/var/www/html/builds/nightly"
incomingDir = "/home/jenkins/nightly-incoming"
sourceForgePath = "/home/frs/project/f/fl/flightgear/unstable/"
os.chdir(publicRoot)
def findFileVersion(dir):
for file in os.listdir(dir):
@ -26,14 +37,14 @@ def findFileVersion(dir):
m = re.match(pattern, file)
if (m is not None):
return (m.group('major'), m.group('minor'), m.group('patch'))
return None
incomingVer = findFileVersion(incomingDir)
if incomingVer is None:
print "No incoming files found matching " + allSuffix
exit()
existingVer = findFileVersion('.')
# if files in dest location mis-match the version, archive them
@ -42,11 +53,12 @@ existingVer = findFileVersion('.')
versionChange = (existingVer != incomingVer)
oldFiles = []
incomingFiles = []
newFiles = []
if versionChange:
print "Version number changing"
for file in os.listdir('.'):
if fnmatch.fnmatch(file, allSuffix):
if not os.path.islink(file):
@ -55,22 +67,33 @@ if versionChange:
for file in os.listdir(incomingDir):
if fnmatch.fnmatch(file, allSuffix):
newFiles.append(file)
incomingFiles.append(file)
# copy and symlink
for file in newFiles:
for file in incomingFiles:
# move it to the public location
srcFile = os.path.join(incomingDir, file)
os.rename(srcFile, file)
# symlink for stable web URL
m = re.match(r'FlightGear-\d+\.\d+\.\d+-([\w-]+)' + suffix, file)
latestName = 'FlightGear-latest-' + m.group(1) + suffix
if os.path.exists(latestName):
os.remove(latestName)
os.symlink(file, latestName)
outFile = file
# insert -rc before suffix
if isReleaseCandidate:
m = re.match(r'(\w+-\d+\.\d+\.\d+[\w-]*)' + suffix, file)
outFile = m.group(1) + '-rc' + suffix
print "RC out name is " + outFile
os.rename(srcFile, outFile)
newFiles.append(outFile)
if not isReleaseCandidate:
# symlink for stable web URL
m = re.match(r'(\w+)-\d+\.\d+\.\d+-([\w-]+)' + suffix, file)
latestName = m.group(1) + '-latest-' + m.group(2) + suffix
if os.path.exists(latestName):
os.remove(latestName)
os.symlink(file, latestName)
# remove files from SF
if len(oldFiles) > 0:
f = open(sftpCommandFile, 'w')
@ -80,13 +103,11 @@ if len(oldFiles) > 0:
f.write("rm " + file + '\n')
f.write("bye\n")
f.close()
call(["sftp", "-b", sftpCommandFile, sourceForgeUserHost])
os.remove(sftpCommandFile)
# upload to SourceForge
for file in newFiles:
for file in newFiles:
print "Uploading " + file + " to SourceForge"
call(["scp", file, sourceForgeUserHost + ":" + sourceForgePath + file])

@ -1 +1 @@
Subproject commit e5995208a9e8e5b152147e1ec22d5a5ea45fbfd0
Subproject commit a52d3540a04d353a05f9c79c403332369b80db4c