Steps for making a release
Please note: these instructions are out of date and should be revised.
From the mac terminal application, do an git fetch or pull, and then probably you'll need to qmake -spec macx-xcode. Make sure you delete the previous Fritzing release build (i.e. bundle). If you don't delete the old release build, the frameworks won't be correctly copied. If you have to build again for some reason, remember to delete the previous build first. Also delete the accompanying parts, bins, sketches, and translations folders.
Open up xcode, load the fritzing.xcodeproj file, and do a universal build in release mode. Make sure QT_NO_DEBUG is defined. These conditions are both set up in the current phoenix.pro. Best if it's a clean build (don't forget to delete phoenix/qrc_phoenixresources.cpp, since xcode doesn't seem to see this as part of the process).
In your build/release folder, you should now have a bundle-folder called "Fritzing". Copy README.txt, LICENSE.GPL3, and LICENSE.GPL2 into the release folder (not the bundle folder).
Also copy the Parts, Bins, Sketches and Translations folders into the release folder. Delete any .ts files from the translation folder, as well as any translations (.qm files) we're not ready to ship. So there should only be .qm files in the translations folder when you're done.
Now you have to copy the Qt frameworks and plugins into the bundle folder. But the frameworks can't just be copied, they have to be modified to point to the right addresses. This process is really tricky to do by hand, so I use a tool called macdeployqt, which is supplied by Trolltech (you have to build it). Once you've built deployqt, you can launch it something like this to copy the frameworks (the following is a single command line):
You can see the frameworks in the bundle, if you select the bundle and then choose the right-click option show package contents.
Now go back to the release folder, select all the items (there should be eight: Fritzing, bins, parts, sketches, translations, README.txt, LICENSE.GPL2, LICENSE.GPL3), and make an archive (right click, choose the Compress 8 items option). Rename the archive to something like Fritzing.yyyy.mm.dd.mac.zip.
That zip file is what you release.
On the PC, do the following (at least from Visual Studio):
Do a clean build, release version.
Somewhere make a folder, call it the release folder. Name it something likeFritzing.yyyy.mm.dd.pc. Copy Fritzing.exe, README.txt, LICENSE.GPL3, and LICENSE.GPL2 into the release folder. Copy the Parts, Bins, and Sketches, and Translations folders into the release folder. Don't forget to remove the .svn files (svn export is handy for this). Delete all the .ts files from the Translations folder, as well as any .qm files that aren't ready to release.
Now copy the Qt release dlls into the release folder: QtCore4.dll, QtGui4.dll, QtNetwork4.dll, QtSql4.dll, QtSvg4.dll, QtWebKit4.dll, QtXml4.dll, QtXmlPatterns4.dll, Phonon4.dll. You get the dlls from Qt's bin folder.
Now add the plugins to the release folder. You get the plugins from Qt's plugins folder; these all go inside a lib folder inside the release folder. The structure looks like this:
Now make a zip file from the release folder (from the folder not the individual contents--well it doesn't matter, but that's what we've done previously). Rename it something like Fritzing.yyyy.mm.dd.pc.zip.
That zip file is what you release.
For linux releases you will first need the required C++/Qt (installed in the /usr/local/Trolltech/Qt-[version] folder) and subversion (svn) build environment (at present: Qt 4.6.3 development libraries, a fairly recent linux distro with libc >= 2.6, and gcc with build tools). Then you will need this script: http://fritzing.googlecode.com/svn/trunk/fritzing/tools/linux_release_script/release.sh.
The script will automatically grab the latest svn update and compile the full release (including libraries) for your linux platform. It will package the binary into a tar.bz2 file, and afterward will clean up the download and compilation files.
- We should also make ask that our translators spend an hour checking for any changed strings and updating the files.
- This is an ongoing task. For each release we need to make sure that the version number and more important the version name (or even the version code name) are correctly set. The files to be touched are: