Update genversion to work with single-binary git
[quassel.git] / src / common / genversion.cpp
index e8e75f9..cf64461 100644 (file)
@@ -37,21 +37,21 @@ int main(int argc, char **argv) {
   }
   QString gitroot = argv[1];
   QString target = argv[2];
-  QString version;
+  QString version, commit, archivetime;
 
   if(QFile::exists(gitroot + "/.git")) {
     // try to execute git-describe to get a version string
     QProcess git;
     git.setWorkingDirectory(gitroot);
-    git.start("git-describe", QStringList("--long"));
+    git.start("git", QStringList() << "describe" << "--long");
     if(git.waitForFinished(10000)) {
       QString gitversion = git.readAllStandardOutput();
       if(!gitversion.isEmpty() && !gitversion.contains("fatal")) {
         // seems we have a valid version string, now prettify it...
         // check if the workdir is dirty first
         QString dirty;
-        QStringList params = QStringList() << "--name-only" << "HEAD";
-        git.start("git-diff-index", params);
+        QStringList params = QStringList() << "diff-index" << "--name-only" << "HEAD";
+        git.start("git", params);
         if(git.waitForFinished(10000)) {
           if(!git.readAllStandardOutput().isEmpty()) dirty = "*";
         }
@@ -68,19 +68,25 @@ int main(int argc, char **argv) {
     // hmm, Git failed... let's check for version.dist instead
     QFile dist(gitroot + "/version.dist");
     if(dist.open(QIODevice::ReadOnly | QIODevice::Text)) {
-      version = dist.readAll();
+      QRegExp rxCommit("(^[0-9a-f]+)");
+      QRegExp rxTimestamp("(^[0-9]+)");
+      if(rxCommit.indexIn(dist.readLine()) > -1) commit = rxCommit.cap(1);
+      if(rxTimestamp.indexIn(dist.readLine()) > -1) archivetime = rxTimestamp.cap(1);
       dist.close();
     }
   }
   // ok, create our version.gen now
   QFile gen(target);
   if(!gen.open(QIODevice::WriteOnly | QIODevice::Text)) {
-    qFatal(QString("Could not write %1!").arg(target).toAscii());
+    qFatal("%s", qPrintable(QString("Could not write %1!").arg(target)));
     return 255;
   }
   gen.write(QString("quasselGeneratedVersion = \"%1\";\n"
                     "quasselBuildDate = \"%2\";\n"
-                    "quasselBuildTime = \"%3\";\n").arg(version).arg(__DATE__).arg(__TIME__).toAscii());
+                    "quasselBuildTime = \"%3\";\n"
+                    "quasselCommit = \"%4\";\n"
+                    "quasselArchiveDate = %5;\n")
+                    .arg(version).arg(__DATE__).arg(__TIME__).arg(commit).arg(archivetime.toUInt()).toAscii());
   gen.close();
   return EXIT_SUCCESS;
 }