diff options
-rw-r--r-- | BUILDING.md | 51 | ||||
-rwxr-xr-x | mach | 19 | ||||
-rw-r--r-- | smolbote.qbs | 28 | ||||
-rw-r--r-- | src/browser.cpp | 9 | ||||
-rw-r--r-- | src/browser.h | 6 | ||||
-rw-r--r-- | src/main.cpp | 7 | ||||
-rw-r--r-- | src/mainwindow.cpp | 11 |
7 files changed, 89 insertions, 42 deletions
diff --git a/BUILDING.md b/BUILDING.md index 2af8d4b..8118420 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -14,73 +14,74 @@ qbs setup-qt /usr/bin/qmake-qt5 qt5 For more information on qbs, refer to the [Qbs manual][1], sections Configuring and Managing Qt versions. -### Steps +### Compiling * Create a build folder ``` -[smolbote repo]$ mkdir build +[smolbote repo]$ mkdir ../build ``` * Run qbs ``` -[smolbote repo]$ qbs build --build-directory build profile:qt5 release +[smolbote repo]$ qbs build -d ../build profile:qt5 release ``` -Shortened: -``` -[smolbote repo]$ qbs build -d build profile:qt5 release -``` -This installs the files to build/release/install-root. +This installs the files to ../build/release/install-root. -* Test run using the specified Qt profile (optional) +* Test run (optional) ``` -[smolbote repo]$ qbs run --build-directory build --file src/smolbote.qbs --products poi profile:qt5 release +[smolbote repo]$ qbs run -d ../build -p poi profile:qt5 release ``` -Shortened: + +### Installing +* With qbs ``` -[smolbote repo]$ qbs run -d build -f src/smolbote.qbs -p poi profile:qt5 release +[smolbote repo]$ sudo qbs install -d build --no-build --install-root /usr/local --settings-dir /home/usr/.config/QtProject/qbs/1.7.1 profile:qt5 release" ``` ### Notes * Windows: MSVC compiler is required because of QtWebEngine dependency * Windows: Passing the -v or -h parameters creates a dialog box instead of writing the output to stdout. This is Qt behaviour. +* Windows: Use windeployqt.exe to collect the libraries +``` +QT_DIR\QT_VER\msvc2015_64\windeployqt.exe build-PROFILE\release\qtbrowser.exe +``` * grsecurity: You may need to exception qbs. ## Packaging ### Tarball -Creating a tarball: +* Creating a tarball: ``` -tar -I "lzip -9" -cf build.tar.lz release-folder/* +tar -I"lzip -9" -cf smolbote-$(git describe --tags).tar.lz --directory=../build/release/install-root . --owner=user:1000 --group=users:1000 ``` -Signing a tarball: +* Signing a tarball: ``` -gpg -u $FINGERPRINT -b $FILENAME +gpg -u $email -b --armor $tarball ``` -u, --local-user name > Use name as the user ID to sign. This option is silently ignored for the list commands, so that it can be used in an options file. - -b, --detach-sign > Make a detached signature. +--armor +> Create a human-readable signature -Creating checksum: +* Verify signature: ``` -sha512sum --binary build.tar.lz > checksum.sha512 +gpg --verify $signature $tarball ``` -Verifying checksum: +* Creating checksum: ``` -sha512sum --check checksum.sha512 +sha512sum --binary $tarball* > $tarball.sha512 ``` -### Windows -Collect the required libraries using - +* Verifying checksum: ``` -QT_DIR\QT_VER\msvc2015_64\windeployqt.exe build-PROFILE\release\qtbrowser.exe +sha512sum --check $tarball.sha512 ``` [1]: https://doc.qt.io/qbs/index.html @@ -7,7 +7,8 @@ options = { :settings => "#{ENV['HOME']}/.config/QtProject/qbs/1.7.1", :profile => 'qt5', :buildDir => '../build', - :installDir => '/usr/local' + :installDir => '/usr/local', + :email => 'xian.nox@gmail.com' } OptionParser.new do |opts| @@ -16,7 +17,7 @@ OptionParser.new do |opts| opts.on("-h", "--help", "Prints this help") do puts opts puts "Options: #{options}" - puts 'Commands: build, install' + puts 'Commands: run, clean, build, install, tarball' exit end @@ -37,10 +38,20 @@ end.parse! if not ARGV.empty? then ARGV.each do|arg| case arg + when 'run' + system "qbs run -d #{options[:buildDir]} -p poi profile:#{options[:profile]} release" + when 'clean' + system "qbs clean -d #{options[:buildDir]} profile:#{options[:profile]} release" when 'build' - system "qbs build -d #{options[:buildDir]} profile:#{options[:profile]} release" + system "qbs build -d #{options[:buildDir]} --force-probe-execution profile:#{options[:profile]} release" when 'install' - system "sudo qbs install -d #{options[:buildDir]} --install-root #{options[:installDir]} --settings-dir #{options[:settings]} profile:#{options[:profile]} release" + system "sudo qbs install -d #{options[:buildDir]} --no-build --install-root #{options[:installDir]} --settings-dir #{options[:settings]} profile:#{options[:profile]} release" + when 'tarball' + filename = "smolbote-#{`git describe --tags`}.tar.lz".gsub("\n", '') + system "tar -I\"lzip -9\" -cf #{filename} --directory=#{options[:buildDir]}/release/install-root . --owner=user:1000 --group=users:1000" + system "gpg -u #{options[:email]} -b #{filename}" + system "gpg -u #{options[:email]} -b --armor #{filename}" + system "sha512sum --binary #{filename}* > #{filename}.sha512" else puts "Unknown argument #{a}; use ./mach -h for more details" end diff --git a/smolbote.qbs b/smolbote.qbs index 5ad9008..829faaa 100644 --- a/smolbote.qbs +++ b/smolbote.qbs @@ -25,28 +25,43 @@ Project { Probe { id: git - property string version: "1.0.0" - property string describe: "1.0.0-0-00000000" + property string version: "" + property string describe: "" configure: { if(project.gitVersion) { var meta = GitRepo.read(project.sourceDirectory); version = meta.version; describe = meta.describe; + found = true; } - found = true; } } + // global includes cpp.includePaths: ['src', 'src/3rd-party'] + // global defines cpp.defines: { if(project.deprecatedWarnings) defines.push("QT_DEPRECATED_WARNINGS", "QT_DISABLE_DEPRECATED_BEFORE="+project.deprecatedBefore); - if(git.found) - defines.push('VERSION="'+git.version+'"', 'DESCRIBE="'+git.describe+'"'); return defines; } + Depends { name: "Qt"; submodules: ["core", "widgets", "webengine", "webenginewidgets"] } + Group { + name: "main" + files: [ + "src/browser.cpp", + "src/browser.h", + "src/main.cpp" + ] + cpp.defines: { + if(git.found) + defines.push('GIT_VERSION="'+git.version+'"', 'GIT_DESCRIBE="'+git.describe+'"'); + return defines; + } + } + files: [ "data/resources.qrc", "src/blocker/blockermanager.cpp", @@ -59,8 +74,6 @@ Project { "src/blocker/regexp.h", "src/blocker/subscriptiondialog.ui", "src/blocker/subscriptionform.ui", - "src/browser.cpp", - "src/browser.h", "src/forms/bookmarksdialog.cpp", "src/forms/bookmarksdialog.h", "src/forms/bookmarksdialog.ui", @@ -70,7 +83,6 @@ Project { "src/forms/profiledialog.cpp", "src/forms/profiledialog.h", "src/forms/profiledialog.ui", - "src/main.cpp", "src/mainwindow.cpp", "src/mainwindow.h", "src/mainwindow.ui", diff --git a/src/browser.cpp b/src/browser.cpp index 41c6355..2c7115d 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -42,6 +42,15 @@ Browser::~Browser() delete m_downloadManager; } +QString Browser::applicationLongVersion() const +{ +#ifdef GIT_DESCRIBE + return QString(GIT_DESCRIBE); +#else + return applicationVersion(); +#endif +} + /*! * Check if the settings are empty */ diff --git a/src/browser.h b/src/browser.h index aa7c605..a6820c8 100644 --- a/src/browser.h +++ b/src/browser.h @@ -29,6 +29,10 @@ #include "settings.h" #include <QNetworkAccessManager> +#ifdef qApp +#undef qApp +#define qApp Browser::instance() +#endif #define sSettings Browser::instance()->settings() #define sNetwork Browser::instance()->network() @@ -41,6 +45,8 @@ public: Browser(int &argc, char *argv[]); ~Browser(); + QString applicationLongVersion() const; + void firstRun(); bool preLaunch(QStringList urls); diff --git a/src/main.cpp b/src/main.cpp index b787caf..a99e5de 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,9 +26,12 @@ int main(int argc, char *argv[]) { Browser app(argc, argv); -#ifdef VERSION - app.setApplicationVersion(VERSION); +#ifdef GIT_VERSION + app.setApplicationVersion(GIT_VERSION); +#else + app.setApplicationVersion("1.0.0"); #endif + app.setWindowIcon(QIcon(QLatin1String(":/icon.svg"))); QCommandLineParser parser; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 087c5f8..bab0520 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -155,13 +155,18 @@ void MainWindow::closeEvent(QCloseEvent *event) void MainWindow::about() { - QMessageBox::about(this, tr("About"), tr("<h3>smolbote %1</h3>" + QMessageBox::about(this, tr("About"), tr("<h2>smolbote %1</h2>" "<p><i>yet another Qute browser</i></p>" "<p>Copyright (C) 2017 Xian Nox</p>" "<p>This program comes with ABSOLUTELY NO WARRANTY. " "This is free software, and you are welcome to redistribute it under the conditions set by the GNU GPLv3.</p>" - "<p>Configuration lives in: %2</p>") - .arg(DESCRIBE).arg(sSettings->filePath())); + "<p>" + "Version: %2<br>" + "Configuration: %3" + "</p>") + .arg(qApp->applicationVersion()) + .arg(qApp->applicationLongVersion()) + .arg(sSettings->filePath())); } void MainWindow::loadProfile(const QString &name) |