Commit 88960240 authored by Klas Lindfors's avatar Klas Lindfors

Imported Upstream version 3.1.3

parent 8c2697a7
2012-12-21 Klas Lindfors <klas@yubico.com>
* do-source-release.sh: update do-source-release properly.
2012-12-21 Klas Lindfors <klas@yubico.com>
* NEWS: news and release for 3.1.3
2012-12-21 Klas Lindfors <klas@yubico.com>
* do-source-release.sh: remove USER
2012-12-21 Klas Lindfors <klas@yubico.com>
* do-source-release.sh: switch to gh-pages for releases
2012-12-21 Klas Lindfors <klas@yubico.com>
* build-homepage.sh: script to build the homepage in the gh-pages
branch
2012-12-21 Klas Lindfors <klas@yubico.com>
* README: change some formatting to match asciidoc better
2012-12-21 Klas Lindfors <klas@yubico.com>
* README: README updates
2012-12-21 Klas Lindfors <klas@yubico.com>
* YKPersonalization.pro.user.lin, YKPersonalization.pro.user.mac,
YKPersonalization.pro.user.win: drop files that we generate anyways
2012-12-21 Klas Lindfors <klas@yubico.com>
* README.binary_dists: some useful qmake invocations
2012-12-21 Klas Lindfors <klas@yubico.com>
* YKPersonalization.pro: add code for signing windows binaries as
part of the build
2012-12-20 Klas Lindfors <klas@yubico.com>
* YKPersonalization.pro: no $$ when checking isEmpty()
2012-12-20 Klas Lindfors <klas@yubico.com>
* YKPersonalization.pro: cleanup libraries and remove unused header
2012-12-20 Klas Lindfors <klas@yubico.com>
* src/ui/oathpage.h: mui should be unsigned
2012-12-20 Klas Lindfors <klas@yubico.com>
* src/ui/oathpage.cpp: make sure we zero-out mui on reset
2012-12-20 Klas Lindfors <klas@yubico.com>
* YKPersonalization.pro: fix release build for windows, cleanup.
2012-12-20 Klas Lindfors <klas@yubico.com>
* src/ui/oathpage.cpp, src/ui/oathpage.h: don't do fancy bcd tricks
with MUI, just keep it in an int
2012-12-20 Klas Lindfors <klas@yubico.com>
* YKPersonalization.pro: config for creating windows debug builds
2012-12-20 Klas Lindfors <klas@yubico.com>
* src/yubikeyfinder.cpp: fix a file descriptor leak that caused
windows to fail after 44 writes
2012-12-18 Klas Lindfors <klas@yubico.com>
* NEWS, src/common.h, src/yubikeywriter.cpp, src/yubikeywriter.h:
don't reuse the general error message for challenge-response
2012-12-18 Klas Lindfors <klas@yubico.com>
* YKPersonalization.pro: make compiling silent
2012-12-18 Klas Lindfors <klas@yubico.com>
* NEWS: add NEWS for 3.1.3
2012-12-18 Klas Lindfors <klas@yubico.com>
* src/common.h, src/ui/mainwindow.cpp, src/ui/mainwindow.h,
src/ui/mainwindow.ui: add support for stopping animation (and saving
that in settings)
2012-12-17 Klas Lindfors <klas@yubico.com>
* YKPersonalization.pro, installer/win-nsis/ykpers.nsi,
resources/images/README.mng, resources/resources.qrc,
src/ui/mainwindow.cpp: switch from gifs to mng
2012-12-17 Klas Lindfors <klas@yubico.com>
* : new pictures
2012-12-11 Klas Lindfors <klas@yubico.com>
* resources/resources.qrc, src/ui/mainwindow.cpp: new picture for
production neo
2012-11-20 Klas Lindfors <klas@yubico.com>
* src/ui/settingpage.ui: change wording for update to update
settings
2012-11-12 Klas Lindfors <klas@yubico.com>
* src/ui/settingpage.cpp: add forgotten save on selecting pacing
2012-11-12 Klas Lindfors <klas@yubico.com>
* src/yubikeywriter.cpp: fixup last commit that was broken, remove
correct ykst
2012-11-12 Klas Lindfors <klas@yubico.com>
* src/yubikeywriter.cpp: remove unnecessary status struct and call
yk_check_firmware2() when we have it
2012-11-12 Klas Lindfors <klas@yubico.com>
* src/ui/toolpage.cpp, src/ui/toolpage.ui, src/yubikeywriter.cpp,
src/yubikeywriter.h: support for writing SLOT_NDEF2 for production
neo
2012-11-12 Klas Lindfors <klas@yubico.com>
* src/ui/mainwindow.cpp: correct picture for production neo
2012-11-12 Klas Lindfors <klas@yubico.com>
* src/yubikeyfinder.cpp: features for yubikey 3.0 (neo)
2012-11-09 Klas Lindfors <klas@yubico.com>
* src/ui/otppage.cpp: run the editingFinished hook on public id
after setting it to serial
2012-11-07 Klas Lindfors <klas@yubico.com>
* NEWS, YKPersonalization.pro, src/version.h: bump versions to 3.1.3
2012-11-07 Klas Lindfors <klas@yubico.com>
* NEWS: release 3.1.2
......
yubikey-personalization-gui NEWS -- History of user-visible changes. -*- outline -*-
* Version 3.1.3 (released 2012-12-21)
** Bugfix for publidId as serial in multi-key writes.
** Correctly show and enable what the production NEO is capable of.
** Support for writing SLOT_NDEF2 for production NEO.
** Fix saving of pacing options.
** Switch animations to mng, higher quality.
** Create a setting for toggling animations on and off, accessible
from context menu.
** Different error message for challenge-response than configuring.
** Fix a resource leak when auto-programming keys.
** Fix oath identity increments.
* Version 3.1.2 (released 2012-11-07)
** Support for deleting YubiKey configurations.
......
Qt based Cross-Platform YubiKey Personalization Tool
====================================================
See the file COPYING for copyright and license statement.
==================================
Introduction
==================================
------------
The YubiKey Personalization Tool is a Qt based Cross-Platform utility
designed to facilitate re-configuration of YubiKeys on Windows, Linux
......@@ -23,12 +21,14 @@ main functions:
* Programming the YubiKey in "OATH-HOTP" mode
* Programming the YubiKey in "Static Password" mode
* Programming the YubiKey in "Challenge-Response" mode
* Programming the NDEF feature of the YubiKey NEO
* Testing the challenge-response functionality of a YubiKey
* Deleting the configuration of a YubiKey
* Checking type and firmware version of the YubiKey
==================================
Building from Git
==================================
-----------------
You may check out the sources using Git with the following command:
......@@ -43,18 +43,11 @@ directory:
$ cd yubikey-personalization-gui
-----------
There are three files "YKPersonalization.pro.user.win",
"YKPersonalization.pro.user.lin" and "YKPersonalization.pro.user.mac",
one for each of Windows, Linux and MAC platforms that are supported by
the tool. Depending upon your platform, rename the corresponding file
to "YKPersonalization.pro.user". (The instructions in this paragraph
appears to not be needed for command-line builds.)
============
Dependencies
============
------------
yubikey-personalization-gui depends on atleast version 1.8.0 of
yubikey-personalization-gui depends on version 1.10.0 or higher of
libykpers.
When building on Windows you will need binary releases of libykpers
......@@ -73,21 +66,31 @@ placed in deps/libusb-1.0.
You will need QT Creator and libusb-1.0 development files.
sudo apt-get install libusb-1.0-0-dev qtcreator
-----------
$ sudo apt-get install libusb-1.0-0-dev qtcreator
-----------
==================
Command-line build
==================
------------------
Run these commands:
qmake
make
-----------
$ qmake && make
-----------
An alternative way of building is to let pkg-config find the dependencies,
in that case you need development files for libyubikey and libykpers.
-----------
$ sudo apt-get install libyubikey-dev libykpers-1-dev
$ qmake "CONFIG += debian" && make
-----------
==========================
Cross Compiling from Linux
==========================
--------------------------
The project can be cross compiled from linux for osX and windows. As
a first step you need a cross-compiler chain for that OS, for windows
......@@ -113,9 +116,9 @@ To build installers you can add build_installer to the CONFIG variable
for qmake. This requires makensis to be in path for windows and
genisoimage and dmg (from libhfs-dmg) for mac.
==================================
Opening the project in Qt designer
==================================
----------------------------------
Locate the qtcreator executable file and click on it to open the Qt
Designer.
......@@ -128,9 +131,8 @@ To set the path of the "Build" diractory select "Projects" > "Build
Settings" Browse project folder path.
==================================
Building
==================================
~~~~~~~~
To generate the build system, select "Build" > "Clean Project
YKPersonalization" option from the tool bar. Then select "Build" >
......@@ -148,11 +150,13 @@ Personalization Tool.app" file on MAC.
Example on Linux:
To run the YubiKey Personalization Tool, open the command shell and
execute the following command:
# sudo sh "Yubico/YubiKey\ Personalization\ Tool.sh"
-----------
$ build/release/yubikey-personalization-gui
-----------
==================================
Questions?
==================================
----------
Talk to <yubico-devel@googlegroups.com>.
These are good-to-have qmake invocations for windows and osx binary distributions:
windows cross compiled with installer and signed binaries:
$ TARGET_ARCH=i686-w64-mingw32 QTDIR=$win_qt_location SPC_FILE=$spc_file PVK_FILE=$pvk_file qmake -spec win32-g++-4.6 "CONFIG+= cross build_installer sign_binaries"
os x native compile with installer and signed binaries:
$ qmake -spec macx-llvm "CONFIG += build_installer release"
os x cross compiled, just application:
TARGET_ARCH=x86_64-apple-darwin11 OSX_SDK=$sdk_location QT_LIBDIR=$qt_library_frameworks_location QT_PLUGINDIR=$qt_plugins_location qmake -spec macx-g++42 "CONFIG += cross"
#
# global definitions
#
VERSION = "3.1.2"
VERSION = "3.1.3"
APP_NAME = $$quote(YubiKey Personalization Tool)
#
# common configuration
#
QT += core gui
DEPLOYMENT_PLUGIN += qgif
DEPLOYMENT_PLUGIN += qmng
TEMPLATE = app
TARGET = yubikey-personalization-gui
DEFINES += VERSION=\\\"$${VERSION}\\\"
CONFIG += silent
CONFIG(debug, debug|release) {
TARGET_DIR = build/debug
message("Debug build")
TARGET_DIR = build$${DIR_SEPARATOR}debug
QT += testlib
CONFIG += console no_lflags_merge
} else {
message("Release build")
TARGET_DIR = build$${DIR_SEPARATOR}release
DEFINES += QT_NO_DEBUG_OUTPUT
......@@ -97,15 +103,11 @@ OTHER_FILES += \
!debian:!fedora {
HEADERS += \
deps/libykpers/ykpers.h \
deps/libykpers/ykpbkdf2.h \
deps/libykpers/ykcore/yktsd.h \
deps/libykpers/ykcore/ykstatus.h \
deps/libykpers/ykcore/ykdef.h \
deps/libykpers/ykcore/ykcore_lcl.h \
deps/libykpers/ykcore/ykcore_backend.h \
deps/libykpers/ykcore/ykcore.h \
deps/libykpers/rfc4634/sha.h \
deps/libykpers/rfc4634/sha-private.h \
deps/libyubikey/yubikey.h
INCLUDEPATH += . src src/ui deps/libusb-1.0 deps/libykpers deps/libykpers/ykcore deps/libyubikey
......@@ -179,22 +181,56 @@ win32 {
LIBS += $$quote(-L./libs/win64) -llibyubikey-0 -llibykpers-1-1
}
LIB_FILES += \
$$_QT_BINDIR$${DIR_SEPARATOR}QtCore4.dll \
$$_QT_BINDIR$${DIR_SEPARATOR}QtGui4.dll \
$$_QT_PLUGINDIR$${DIR_SEPARATOR}imageformats$${DIR_SEPARATOR}qgif4.dll \
$$_QT_BINDIR$${DIR_SEPARATOR}libgcc_s_dw2-1.dll \
$$_QT_BINDIR$${DIR_SEPARATOR}mingwm10.dll \
libs$${DIR_SEPARATOR}win32$${DIR_SEPARATOR}libyubikey-0.dll \
libs$${DIR_SEPARATOR}win32$${DIR_SEPARATOR}libykpers-1-1.dll
CONFIG(debug, debug|release) {
LIB_FILES += \
$$_QT_BINDIR$${DIR_SEPARATOR}QtCored4.dll \
$$_QT_BINDIR$${DIR_SEPARATOR}QtGuid4.dll \
$$_QT_BINDIR$${DIR_SEPARATOR}QtTestd4.dll \
$$_QT_PLUGINDIR$${DIR_SEPARATOR}imageformats$${DIR_SEPARATOR}qmngd4.dll
} else {
LIB_FILES += \
$$_QT_BINDIR$${DIR_SEPARATOR}QtCore4.dll \
$$_QT_BINDIR$${DIR_SEPARATOR}QtGui4.dll \
$$_QT_PLUGINDIR$${DIR_SEPARATOR}imageformats$${DIR_SEPARATOR}qmng4.dll
}
LIB_FILES += \
$$_QT_BINDIR$${DIR_SEPARATOR}libgcc_s_dw2-1.dll \
$$_QT_BINDIR$${DIR_SEPARATOR}mingwm10.dll \
libs$${DIR_SEPARATOR}win32$${DIR_SEPARATOR}libyubikey-0.dll \
libs$${DIR_SEPARATOR}win32$${DIR_SEPARATOR}libykpers-1-1.dll
isEmpty(TIMESTAMP_URL):TIMESTAMP_URL = 'http://timestamp.verisign.com/scripts/timstamp.dll'
LIB_FILES_WIN = $${LIB_FILES}
TARGET_DIR_WIN = $${DESTDIR}
for(FILE, LIB_FILES_WIN) {
QMAKE_POST_LINK +=$$quote($$QMAKE_COPY $${FILE} $${TARGET_DIR_WIN}$$escape_expand(\\n\\t))
}
sign_binaries {
_PVK_FILE = $$(PVK_FILE)
_SPC_FILE = $$(SPC_FILE)
isEmpty(_PVK_FILE) {
error("Must have a pvk file to sign (PVK_FILE env variable).")
}
isEmpty(_SPC_FILE) {
error("Must have a spc file to sign (SPC_FILE env variable).")
}
# sign all Yubico binaries
SIGN_FILES = $${TARGET}.exe \
libyubikey-0.dll \
libykpers-1-1.dll
for(FILE, SIGN_FILES) {
QMAKE_POST_LINK += $$quote("signcode -spc $$(SPC_FILE) -v $$(PVK_FILE) -a sha1 -$ commercial -n '$${APP_NAME}' -i 'http://www.yubico.com' -t $${TIMESTAMP_URL} $${TARGET_DIR_WIN}$${DIR_SEPARATOR}$${FILE}"$$escape_expand(\\n\\t))
}
}
build_installer {
QMAKE_POST_LINK += $$quote("makensis -DYKPERS_VERSION=$${VERSION} installer/win-nsis/ykpers.nsi")
QMAKE_POST_LINK += $$quote("makensis -DYKPERS_VERSION=$${VERSION} installer/win-nsis/ykpers.nsi"$$escape_expand(\\n\\t))
sign_binaries {
QMAKE_POST_LINK += $$quote("signcode -spc $$(SPC_FILE) -v $$(PVK_FILE) -a sha1 -$ commercial -n '$${APP_NAME} Installer' -i 'http://www.yubico.com' -t '$${TIMESTAMP_URL}' $${TARGET_DIR_WIN}$${DIR_SEPARATOR}$${TARGET}-$${VERSION}.exe"$$escape_expand(\\n\\t))
}
}
}
......@@ -261,7 +297,7 @@ unix:!macx {
LIB_FILES += \
$$[QT_INSTALL_LIBS]/libQtGui.so.4 \
$$[QT_INSTALL_LIBS]/libQtCore.so.4 \
$$[QT_INSTALL_PLUGINS]/imageformats/libqgif.so \
$$[QT_INSTALL_PLUGINS]/imageformats/libqmng.so \
libs/lin/libusb-1.0.so.0 \
resources/lin/$${TARGET_LIN}.sh
......@@ -350,13 +386,13 @@ macx {
mv $$_FRAMEWORKDIR/QtGui.framework/Versions/4/Resources/qt_menu.nib $$_BASEDIR/Resources/qt_menu.nib && \
rmdir $$_FRAMEWORKDIR/QtGui.framework/Versions/4/Resources && \
mkdir -p $$_PLUGINDIR/imageformats && \
cp -R $$_QT_PLUGINDIR/imageformats/libqgif.dylib $$_PLUGINDIR/imageformats)
cp -R $$_QT_PLUGINDIR/imageformats/libqmng.dylib $$_PLUGINDIR/imageformats)
# fixup all library paths..
_BASE = $$quote(@executable_path/../Frameworks)
_QTCORE = $$quote(QtCore.framework/Versions/4/QtCore)
_QTGUI = $$quote(QtGui.framework/Versions/4/QtGui)
isEmpty($$_TARGET_ARCH) {
isEmpty(_TARGET_ARCH) {
_INSTALL_NAME_TOOL = install_name_tool
} else {
_INSTALL_NAME_TOOL = $$(TARGET_ARCH)-install_name_tool
......@@ -364,8 +400,8 @@ macx {
QMAKE_POST_LINK += $$quote( && $$_INSTALL_NAME_TOOL -change $$_QTCORE $$_BASE/$$_QTCORE $$_BASEDIR/MacOS/$$TARGET_MAC && \
$$_INSTALL_NAME_TOOL -change $$_QTGUI $$_BASE/$$_QTGUI $$_BASEDIR/MacOS/$$TARGET_MAC && \
$$_INSTALL_NAME_TOOL -change $$_QTCORE $$_BASE/$$_QTCORE $$_FRAMEWORKDIR/$$_QTGUI && \
$$_INSTALL_NAME_TOOL -change $$_QTCORE $$_BASE/$$_QTCORE $$_PLUGINDIR/imageformats/libqgif.dylib && \
$$_INSTALL_NAME_TOOL -change $$_QTGUI $$_BASE/$$_QTGUI $$_PLUGINDIR/imageformats/libqgif.dylib)
$$_INSTALL_NAME_TOOL -change $$_QTCORE $$_BASE/$$_QTCORE $$_PLUGINDIR/imageformats/libqmng.dylib && \
$$_INSTALL_NAME_TOOL -change $$_QTGUI $$_BASE/$$_QTGUI $$_PLUGINDIR/imageformats/libqmng.dylib)
cross {
build_installer {
......@@ -438,7 +474,8 @@ win32 {
TARGET_DIR_WIN = $${DESTDIR}
QMAKE_CLEAN += $${TARGET_DIR_WIN}$${DIR_SEPARATOR}*.exe \
$${TARGET_DIR_WIN}$${DIR_SEPARATOR}*.dll
$${TARGET_DIR_WIN}$${DIR_SEPARATOR}*.dll \
$${TARGET_DIR_WIN}$${DIR_SEPARATOR}*.exe.bak
} else:macx {
QMAKE_CLEAN += -r $${DESTDIR}/*.app $${DESTDIR}/*.pkg $${DESTDIR}/*.dmg $${DESTDIR}/temp
} else {
......
<!DOCTYPE QtCreatorProject>
<qtcreator>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value key="EditorConfiguration.Codec" type="QByteArray">System</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Desktop</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Target.DesktopTarget</value>
<value key="ProjectExplorer.Target.ActiveBuildConfiguration" type="int">1</value>
<value key="ProjectExplorer.Target.ActiveRunConfiguration" type="int">0</value>
<valuemap key="ProjectExplorer.Target.BuildConfiguration.0" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
<valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
</valuemap>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">2</value>
<valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
<value type="QString">clean</value>
</valuelist>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
<value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
<valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Debug</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/data/qtsdk-2010.05/projects/YKPersonalization/trunk</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
</valuemap>
<valuemap key="ProjectExplorer.Target.BuildConfiguration.1" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
<valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
</valuemap>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
<value type="QString">tarball</value>
</valuelist>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">2</value>
<valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
<value type="QString">clean</value>
</valuelist>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
<value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
<valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Release</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">0</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/data/qtsdk-2010.05/projects/YKPersonalization/trunk</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
</valuemap>
<value key="ProjectExplorer.Target.BuildConfigurationCount" type="int">2</value>
<valuemap key="ProjectExplorer.Target.RunConfiguration.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">YKPersonalization</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase" type="int">2</value>
<valuelist key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments" type="QVariantList"/>
<value key="Qt4ProjectManager.Qt4RunConfiguration.ProFile" type="QString">YKPersonalization.pro</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix" type="bool">false</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal" type="bool">false</value>
<valuelist key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UserSetName" type="bool">false</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UserSetWorkingDirectory" type="bool">false</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.Target.RunConfigurationCount" type="int">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">4</value>
</data>
</qtcreator>
This diff is collapsed.
<!DOCTYPE QtCreatorProject>
<qtcreator>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value key="EditorConfiguration.Codec" type="QByteArray">UTF-8</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Desktop</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Target.DesktopTarget</value>
<value key="ProjectExplorer.Target.ActiveBuildConfiguration" type="int">1</value>
<value key="ProjectExplorer.Target.ActiveRunConfiguration" type="int">0</value>
<valuemap key="ProjectExplorer.Target.BuildConfiguration.0" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
<valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList">
<value type="QString">-spec</value>
<value type="QString">D:/Qt/2010.05/qt/mkspecs/win32-g++</value>
</valuelist>
</valuemap>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">2</value>
<valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
<value type="QString">clean</value>
</valuelist>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
<value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
<valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">4.7.0 Debug</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">10</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">D:/Qt/2010.05/projects/YKPersonalization/trunk</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
</valuemap>
<valuemap key="ProjectExplorer.Target.BuildConfiguration.1" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
<valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList">
<value type="QString">-spec</value>
<value type="QString">D:/qt/2010.05/qt/mkspecs/win32-g++</value>
</valuelist>
</valuemap>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">2</value>
<valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
<value type="QString">clean</value>
</valuelist>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
<value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
<valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">4.7.0 Release</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">8</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">D:/Qt/2010.05/projects/YKPersonalization/trunk</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
</valuemap>
<value key="ProjectExplorer.Target.BuildConfigurationCount" type="int">2</value>
<valuemap key="ProjectExplorer.Target.RunConfiguration.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">YKPersonalization</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase" type="int">2</value>
<valuelist key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments" type="QVariantList"/>
<value key="Qt4ProjectManager.Qt4RunConfiguration.ProFile" type="QString">YKPersonalization.pro</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix" type="bool">false</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal" type="bool">false</value>
<valuelist key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UserSetName" type="bool">false</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UserSetWorkingDirectory" type="bool">false</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.Target.RunConfigurationCount" type="int">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">4</value>
</data>
</qtcreator>
#!/bin/sh
set -e
README_FILE=`mktemp '/tmp/README.XXXXXX'`
asciidoc -s -o $README_FILE README
git checkout gh-pages
cat index.html.in $README_FILE > index.html
echo "</div></body></html>" >> index.html
rm $README_FILE
git add index.html
git commit -m "updated page with new README"
git checkout master