From 1b4ff96e902a8a4192b6044168ed033c0c1700b1 Mon Sep 17 00:00:00 2001 From: Robert Spiegel Date: Wed, 19 Apr 2023 19:24:15 +0200 Subject: [PATCH 1/6] Updated non-code files in QEverCloud directory (mainly changelog and README) --- src/qevercloud/.appveyor.yml | 67 ----------- src/qevercloud/.travis.yml | 132 --------------------- src/qevercloud/API_breaks_3_to_4.md | 81 ------------- src/qevercloud/CHANGELOG.md | 121 ++++++++++++++++++- src/qevercloud/CodingStyle.md | 172 ---------------------------- src/qevercloud/README.md | 121 +++++++------------ src/qevercloud/appveyor.yml | 93 --------------- 7 files changed, 162 insertions(+), 625 deletions(-) delete mode 100644 src/qevercloud/.appveyor.yml delete mode 100644 src/qevercloud/.travis.yml delete mode 100644 src/qevercloud/API_breaks_3_to_4.md delete mode 100644 src/qevercloud/CodingStyle.md delete mode 100644 src/qevercloud/appveyor.yml diff --git a/src/qevercloud/.appveyor.yml b/src/qevercloud/.appveyor.yml deleted file mode 100644 index 117f3b0b..00000000 --- a/src/qevercloud/.appveyor.yml +++ /dev/null @@ -1,67 +0,0 @@ -version: '3.0.2-{build}' - -branches: - only: - - development - - master - -environment: - matrix: - - name: win32 - platform: amd64_x86 - qt: msvc2015 - - name: win64 - platform: amd64 - qt: msvc2015_64 - - name: win32 - platform: mingw - qt: mingw492_32 - -clone_folder: c:\dev\qevercloud - -init: - - if %platform%==mingw set PATH=C:\Qt\5.5\%qt%\bin;%PATH% - - if not %platform%==mingw set PATH=C:\Qt\5.7\%qt%\bin;%PATH% - - set ORIGPATH=%PATH% - - if %platform%==mingw (set DEPLOYMENT_TARGET=qevercloud-qt55-%qt%-%APPVEYOR_BUILD_VERSION%_%APPVEYOR_REPO_COMMIT:~0,7%.zip) else (set DEPLOYMENT_TARGET=qevercloud-qt57-%qt%-%APPVEYOR_BUILD_VERSION%_%APPVEYOR_REPO_COMMIT:~0,7%.zip) - - if not %platform%==mingw call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %platform% - - if not %platform%==mingw (set makefiles="NMake Makefiles") else (set makefiles="MinGW Makefiles") - - if %platform%==mingw (set use_webkit=1) else (set use_webkit=0) - -before_build: - - cd c:\dev\qevercloud - - md build - -build_script: - - if %platform%==mingw set PATH=C:\Qt\5.5\%qt%\bin;C:\Qt\Tools\mingw492_32\bin;C:\Program Files (x86)\CMake\bin - - cd build - - if %platform%==mingw cmake .. -G %makefiles% -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="c:/dev/install" -DUSE_QT5_WEBKIT=%use_webkit% -DCMAKE_PREFIX_PATH="C:/Qt/55" - - if not %platform%==mingw cmake .. -G %makefiles% -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="c:/dev/install" -DUSE_QT5_WEBKIT=%use_webkit% -DCMAKE_PREFIX_PATH="C:/Qt/57" - - if not %platform%==mingw (nmake) else (mingw32-make) - - if not %platform%==mingw (nmake install) else (mingw32-make install) - - if %platform%==mingw set PATH=%ORIGPATH% - -after_build: - - cd c:\dev - - 7z a %DEPLOYMENT_TARGET% c:\dev\install\* - - cp %DEPLOYMENT_TARGET% %APPVEYOR_BUILD_FOLDER% - -artifacts: - - path: '*.zip' - name: archive - -deploy: - - provider: GitHub - artifact: archive - draft: false - prerelease: false - on: - branch: master # release from master branch only - appveyor_repo_tag: true # deploy on tag push only - -test_script: - - cd c:\dev\install\bin - - ..\..\qevercloud\build\QEverCloud\test_QEverCloud.exe - -matrix: - fast_finish: true diff --git a/src/qevercloud/.travis.yml b/src/qevercloud/.travis.yml deleted file mode 100644 index c5ec9b30..00000000 --- a/src/qevercloud/.travis.yml +++ /dev/null @@ -1,132 +0,0 @@ -language: cpp - -sudo: required -dist: xenial -services: - - xvfb - -branches: - only: - - master - - development - - /^v\d+\.\d+(\.\d+)?(-\S*)?$/ - -matrix: - include: - - os: linux - env: QT_BASE=48 COMPILER=g++-5.4 CMAKE_BUILD_TYPE=Debug - - - os: linux - env: QT_BASE=48 COMPILER=clang++ CMAKE_BUILD_TYPE=Debug - - - os: linux - env: QT_BASE=5123 COMPILER=g++-5.4 CMAKE_BUILD_TYPE=RelWithDebInfo - - - os: linux - env: QT_BASE=5123 COMPILER=clang++ CMAKE_BUILD_TYPE=Debug - - - os: osx - env: CMAKE_BUILD_TYPE=RelWithDebInfo - compiler: clang - -before_install: - - | - export CHANGED_FILES=($(git diff --name-only ${TRAVIS_COMMIT_RANGE})) && - echo "Changed files: ${CHANGED_FILES}" && - export DETECTED_CHANGES_AFFECTING_BUILD=False && - for CHANGED_FILE in ${CHANGED_FILES}; do - echo "Checking file ${CHANGED_FILE}" && - if ! [[ ${CHANGED_FILE} =~ "*.md" ]] && [[ "${CHANGED_FILE}" != "LICENSE" ]]; then - echo "Detected changes affecting build: file ${CHANGED_FILE}" && - DETECTED_CHANGES_AFFECTING_BUILD=True && - break - fi - done - - | - if [[ ${DETECTED_CHANGES_AFFECTING_BUILD} == False ]]; then - echo "No changes affecting build detected, exiting" && - travis_terminate 0 && - exit 1 - fi - -install: - - | - if [ "${TRAVIS_OS_NAME}" = "linux" ]; then - wget http://www.cmake.org/files/v3.2/cmake-3.2.0-Linux-x86_64.tar.gz && - tar -xzf cmake-3.2.0-Linux-x86_64.tar.gz && - sudo cp -fR cmake-3.2.0-Linux-x86_64/* /usr && - sudo apt-get -qq install p7zip-full coreutils curl && - sudo apt-add-repository -y ppa:ubuntu-toolchain-r/test && - if [ "${QT_BASE}" = "5123" ]; then - sudo apt-add-repository -y ppa:beineri/opt-qt-5.12.3-xenial && - sudo apt-get -qq update && - sudo apt-get -qq install qt512tools qt512base qt512webchannel qt512webengine qt512websockets mesa-common-dev libgl1-mesa-dev && - if [ "${COMPILER}" = "clang++" ]; then - export CXX="clang++" && - export CC="clang" - fi - else - export DISPLAY=:99.0 && - sudo apt-get -qq update && - sudo apt-get -qq install libqt4-dev libqt4-dev-bin libqt4-network libqtwebkit-dev && - if [ "${COMPILER}" = "clang++" ]; then - export CXX="clang++" && - export CC="clang" - fi - fi - else - brew update && - brew unlink cmake && - brew install cmake && - brew link cmake && - brew install p7zip && - brew install qt5 && - chmod -R 755 /usr/local/opt/qt5/* - fi - -before_script: - - export QEVERCLOUD_DIR=$(pwd) - - mkdir build - - cd build - - cmake --version - - | - if [ "${QT_BASE}" = "5123" ]; then - source /opt/qt512/bin/qt512-env.sh && - cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/installdir .. - elif [ "${TRAVIS_OS_NAME}" = "osx" ]; then - cmake -DCMAKE_PREFIX_PATH=/usr/local/opt/qt5/lib/cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/installdir .. - else - cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/installdir -DBUILD_WITH_QT4=1 .. - fi - -script: - - make - - make check - - make install - - | - if [ "${TRAVIS_OS_NAME}" = "linux" ] && [ "${QT_BASE}" = "592" ] && [ "${COMPILER}" = "g++-4.8" ] && [ "${TRAVIS_BRANCH}" = "development" ]; then - echo "Triggering build at OpenSUSE build service for development branch" && - curl -X POST -H "Authorization: Token $OSC_TOKEN" https://api.opensuse.org/trigger/runservice?project=home%3Ad1vanov%3Aquentier-development&package=qevercloud-development - fi - -after_success: - - | - if [ "${TRAVIS_OS_NAME}" = "linux" ] && [ "${QT_BASE}" = "5123" ] && [ "${COMPILER}" = "g++-5.4" ]; then - if [ "${TRAVIS_BRANCH}" = "master" ] || [ "${TRAVIS_BRANCH}" = "development" ]; then - cd $QEVERCLOUD_DIR/build/installdir && - 7z a qevercloud_linux_qt_${QT_BASE}_x86_64.zip * && - wget https://github.com/d1vanov/ciuploadtool/releases/download/continuous-master/ciuploadtool_linux.zip && - unzip ciuploadtool_linux.zip && - chmod 755 ciuploadtool && - ./ciuploadtool -suffix="$TRAVIS_BRANCH" qevercloud_linux_qt_${QT_BASE}_x86_64.zip - fi - elif [ "${TRAVIS_OS_NAME}" = "osx" ]; then - if [ "${TRAVIS_BRANCH}" = "master" ] || [ "${TRAVIS_BRANCH}" = "development" ]; then - cd $QEVERCLOUD_DIR/build/installdir && - 7z a qevercloud_mac_x86_64.zip * && - wget https://github.com/d1vanov/ciuploadtool/releases/download/continuous-master/ciuploadtool_mac.zip && - unzip ciuploadtool_mac.zip && - chmod 755 ciuploadtool && - ./ciuploadtool -suffix="$TRAVIS_BRANCH" qevercloud_mac_x86_64.zip - fi - fi diff --git a/src/qevercloud/API_breaks_3_to_4.md b/src/qevercloud/API_breaks_3_to_4.md deleted file mode 100644 index 9b51ddad..00000000 --- a/src/qevercloud/API_breaks_3_to_4.md +++ /dev/null @@ -1,81 +0,0 @@ -# QEverCloud API breaks from major version 3 to major version 4 - -The API breaks of QEverCloud between major versions 3 and 4 are caused by the migration from Evernote API 1.25 to Evernote API 1.28. -This document attempts to build a comprehensive list of QEverCloud API breaks, however, this list might be incomplete since -Evernote themselves haven't provided any changelog for their API update so far. - -## struct User - * added fields: - * `serviceLevel` of `ServiceLevel::type` (new enumeration) - * `photoUrl` of `QString` type - * `photoUrlLastUpdated` of `Timestamp` type - * `accountLimits` of `AccountLimits` type (new struct) - * removed fields: - * `premiumInfo` - it appears the `PremiumInfo` should now be requested from Evernote API separately, if needed - -## struct UserAttributes - * added fields: - * `emailAddressLastConfirmed` of `Timestamp` type - * `passwordUpdated` of `Timestamp` type - * `salesforcePushEnabled` of `bool` type - * `shouldLogClientEvent` of `bool` type - * removed fields: - * `taxExempt` - -## struct Accounting - * added fields: - * `availablePoints` of `qint32` type - not documented, no clue what it does, probably it just occasionally got to the public API - but only really used by the official Evernote client apps. - * removed fields: - * `uploadLimit` - use that from `User`'s `accountLimits` field instead - * deprecated fields (still present in the API but should not be used): - * `businessId` - use that from `User`'s `businessUserInfo` field instead - * `businessName` - use that from `User`'s `businessUserInfo` field instead - * `businessRole` - use that from `User`'s `businessUserInfo` field instead - -## struct LinkedNotebook - * renamed fields: - * `shareKey` was renamed to `sharedNotebookGlobalId` - -## struct Notebook - * added fields: - * `recipientSettings` of `SharedNotebookRecipientSettings` type (new struct) - -## struct NotebookRestrictions - * added fields: - * `noShareNotesWithBusiness` of `bool` type - * `noRenameNotebook` of `bool` type - -## struct SharedNotebookInstanceRestrictions - * renamed enum items: - * `ONLY_JOINED_OR_PREVIEW` was renamed to `ASSIGNED` - -## struct SharedNotebook - * added fields: - * `recipientIdentityId` of `IdentityID` type (new typedef for `qint64` type) - * `globalId` of `QString` type - * `sharerUserId` of `UserID` type - * `recipientUsername` of `QString` type - * `recipientUserId` of `UserID` type - * `serviceAssigned` of `Timestamp` type - * removed fields: - * `shareKey` - use `globalId` instead - -## struct Note - * added fields: - * `sharedNotes` of `QList` type (`SharedNote` is a new struct) - * `restrictions` of `NoteRestrictions` type (new struct) - * `limits` of `NoteLimits` type (new struct) - -## struct NoteAttributes - * added fields: - * `sharedWithBusiness` of `bool` type - * `conflictSourceNoteGuid` of `QString` type - * `noteTitleQuality` of `qint32` type - -## struct ClientUsageMetrics - * this struct was completely removed from Evernote API and seemingly has no replacement. It was not really much useful - for Evernote client apps so it shouldn't be a big loss. - -## class UserStore - * Methods `refreshAuthentication` and `refreshAuthenticatonAsync` were removed as their counterparts were removed from Evernote API. It is not a big loss since these methods were available only to Evernote internal applications anyway. diff --git a/src/qevercloud/CHANGELOG.md b/src/qevercloud/CHANGELOG.md index a60b26bc..49b885c0 100644 --- a/src/qevercloud/CHANGELOG.md +++ b/src/qevercloud/CHANGELOG.md @@ -1,7 +1,118 @@ # Changelog +## 6.2.0 + * Fix OAuth with Qt5WebKit with a hack + * Implement OAuth via system browser so that neither Qt5WebKir nor Qt5WebEngine could be required + +## 6.1.0 + * Add ability to retrieve cookies set by Evernote during OAuth procedure and add + ability to specify cookies in request context for Evernote API calls. These cookies + suddenly became required in order to execute UserStore API calls. + +## 6.0.0 + * Replaced evernoteNetworkAccessManager function with several functions which + allow to set up network proxy settings. The motivation was the necessity to + stop using global static instance of QNetworkAccessManager as it started to lead + to crashes with recent versions of Qt, at least on Windows. + +## 5.1.0 + * Restricted the scope of `Q_NAMESPACE` and `Q_ENUM_NS` usage to a single header + file containing the declarations of EDAM error codes to avoid moc failures with + recent Qt versions. + +## 5.0.0 + * **A lot of new features were added in this release which unfortunately + required to introduce several API breaks.** + * Network requests sent to Evernote service via `NoteStore` and `UserStore` + method calls are now automatically retried if network occasionally fails. + Retry logic can be parametrized on `NoteStore` or `UserStore` level + or per each particular method call. + * `IRequestContext` interface was introduced and added to all methods of + `NoteStore` and `UserStore` as well as to their constructors. This interface + allows to specify and track various parameters for each request done from + QEverCloud to Evernote service: each such request (i.e. each `NoteStore` and + `UserStore` method call) now has a unique identifier, timeout, parameters + controlling automatic retry of requests which failed due to network problems. + Authentication token used for requests to Evernote service is also a part of + `IRequestContext` interface so it can be conveniently specified for `NoteStore` + and `UserStore` on their construction and overridden for individual requests + if necessary. + * Due to the introduction of request contexts global functions `connectionTimeout` + and `setConnectionTimeout` were removed. Their names were misleading as they + were actually request timeouts. + * Enumerations were migrated to strongly typed ones of modern C++, i.e. they + are `enum class` now and require explicit cast for conversion to/from integer + types. There is also no `structs` wrapping enums called `type` anymore so e.g. + `EDAMErrorCode::type` values are now simply `EDAMErrorCode` ones. + * Enumerations were also marked with [Q_ENUM_NS](https://doc.qt.io/qt-5/qobject.html#Q_ENUM_NS) + macro if QEverCloud is built with Qt >= 5.8 and if the corresponding CMake + option is enabled. This macro adds some introspection capabilities for + the bespoke enumerations. + * A dedicated exception class representing network failures was added - + `NetworkException`. As other QEverCloud's exceptions, it is a subclass of + `EverCloudException`. By default QEverCloud catches such exceptions on its + own and retries the request up to several times. + * Some introspection capabilities were added to QEverCloud types: they now have + [Q_GADGET](https://doc.qt.io/qt-5/qobject.html#Q_GADGET) macro and each of + their attributes is registered as a [Q_PROPERTY](https://doc.qt.io/qt-5/qobject.html#Q_PROPERTY). + * In order to support the above mentioned introspection of QEverCloud types + `Optional` template class implementation was changed: `operator==` and + `operator!=` accepting another `Optional` were added to it. Unfortunately, it + has lead to some complications: you can no longer do comparisons like + ``` + Optional a = 42; + double b = 1.0; + bool res = (a == b); + ``` + Instead you need to cast the right hand side expression to proper type: + ``` + Optional a = 42; + double b = 1.0; + bool res = (a == static_cast(b)); + ``` + * Each QEverCloud type corresponding to Evernote API's type now has a member + called `localData` of class `EverCloudLocalData`. That class encapsulates some + attributes which are not present within Evernote API's types and thus do not + take part in communication with Evernote but they nevertheless can be useful + for implementation of rich Evernote client applications performing full and + partial synchronization of data with Evernote. `EverCloudLocalData` + contains: + * `id` string which by default is generated as a `QUuid` but can be substituted + with any string value + * `dirty`, `local` and `favorited` boolean flags + * `dict` which is a collection of arbitrary data in the form of `QVariant`s + indexed by strings + * Logging system was added to QEverCloud. It exists as `ILogger` interface + which you can implement and thus integrate QEverCloud's logging into your + application's logging system whatever that is. For convenience in debugging + QEverCloud also provides an option to dump log messages to stderr. + * For proper support of logging all QEverCloud's types, enumerations and + exceptions were made printable i.e. they can now be used with `QTextStream` + and `QDebug` to produce human readable representation of their values. + * `NoteStore` and `UserStore` classes were converted to `INoteStore` and + `IUserStore` abstract interfaces. It made the implementation of request retrying + logic simpler and it is now possible to substitute your own implementations + of `INoteStore` and/or `IUserStore`, for example, for unit tests of your code + using QEverCloud. + * Implementation of `NoteStore` and `UserStore` servers was added to QEverCloud. + These classes can be used to implement your own backend substituting real Evernote + service. + * Unit tests using the functionality of the above mentioned servers were added + to QEverCloud. Unit tests ensure the correctness of transport layer's implementation + i.e. the correctness of packing requests to Thrift format and unpacking the + responses ensuring that no data is lost or corrupted on either step. Hundreds + of tests covering literally every single method of `NoteStore` and `UserStore` + were added. + * Some header files were renamed so that they all start from capital letters + now. + * Support for Qt < 5.5 as well as support for building QEverCloud with older + compilers has been dropped. QEverCloud is now built with C++14 standard + although it does not use much of its features so even some not fully compliant + compilers can still build QEverCloud. Minimal supported gcc version is 5.4, + minimal supported Visual Studio version is 2017. + ## 4.1.0 - * Migrate to Evernote API 1.29 to 1.28. The changes are incremental and API is not broken. ABI is changed though, + * Migrate to Evernote API 1.29 from 1.28. The changes are incremental and API is not broken. ABI is changed though, hence minor version number increase. The changes in API include: * Extension of `EDAMErrorCode` enumeration with new error codes * Extension of `NoteFilter`, `NoteList`, `NotesMetadataList`, `RelatedResult`, `RelatedResultSpec`, `UserAttributes`, @@ -9,6 +120,10 @@ * Extension of SystemLevel enumeration with the item for business users * `NoteStore.createNotebook` method can now throw `EDAMNotFoundException` exception * Addition of some new constants, enumerations and structs + * Switch to building with Qt5 by default from building with Qt4 by default: now for building with Qt4 CMake option `BUILD_WITH_QT4` should be enabled and CMake option `USE_QT5` is deprecated and no longer required + * A possibility to build QEverCloud with enabled sanitizers was added + * Fixed a bug related to network request timeout processing: API requests never timed out in case of network problems. Now API requests have timeout which by default is 180 seconds. It can be changed through calling `setConnectionTimeout` value. + ## 4.0.0 * Migrate to Evernote API 1.28 from 1.25. Unfortunately, the changes in Evernote API are quite sufficient and hence @@ -54,7 +169,7 @@ ## 2.0 * Qt 4 is no longer supported. - * Asynchronous API is introdused. + * Asynchronous API is introduced. * Various non-critical fixes and improvements. ## 1.2 @@ -69,4 +184,4 @@ ## 1.0 * Initial release. - + diff --git a/src/qevercloud/CodingStyle.md b/src/qevercloud/CodingStyle.md deleted file mode 100644 index 3f066769..00000000 --- a/src/qevercloud/CodingStyle.md +++ /dev/null @@ -1,172 +0,0 @@ -This document outlines some coding style rules used in QEverCloud project. - -## Use common sense - -This is the absolute number one rule which *might* override any of the below mentioned rules should the need for that arise. Follow the rules mentioned below *unless* they don’t seem to play nicely with some specific piece of code. You’d need common sense to identify such a piece of code. - -Also note that some of these rules are not applied to some existing places of QEverCloud codebase for various legacy reasons. Some of them are easily fixable, others are not. - -## Indentation - -QEverCloud uses spaces for indentation, not tabs. Tabs width and shift width should be exactly 4 spaces. - -## Curly braces usage - -**Always** use curly braces in conditional and loop operators, even if their bodies occupy just the single line of code. The rationale is to avoid the possibility of mistakes when extending the loop or conditional operator body in future: suppose you had `if` operator like this: - - if (a > b) - a = b; - -Then suppose in future some additional action becomes needed. It’s unfortunately quite common to make a mistake like this: - - if (a > b) - a = b; - b = c; - -See the issue? Even though the code is formatted as if `b = c` is executed inside the conditional operator’s body, in reality it is executed *after* the conditional operator’s body: - - if (a > b) - a = b; - - b = c; - -In order to avoid that, please **always** use curly braces to clearly define the scope of the operator’s body: - - if (a > b) { - a = b; - } - - if (a > b) { - a = b; - b = c; - } - -Another point about curly braces usage is where to put the opening curly brace: at the end of the first line of the conditional operator or loop operator or at the beginning of the next line. The best approach seems to be using both options as appropriate: for small enough operator bodies it seems better to leave the opening curly brace at the end of the operator' first line. However, if the operator's body involves many lines, say, more than 6 or 7, it looks better with the opening curly brace put at the beginning of the next line. - -One exception from this rule is the one for class declarations: please always put the opening curvy brace for the class content on the next line after the class declaration: - - class MyClass - { - // < class contents > - }; - -Another exception is for function/method implementations: please always put the opening curvy brace for the function/method content on the next line after the function/method definition: - - void MyClass::myFunction - { - // < method implementation contents > - } - -Finally, please let the closing curly brace fully occupy its line of code, don’t append anything to it. For example, do this: - - if (a > b) { - a = b; - } - else { - b = a; - } - -but not this: - - if (a > b) { - a = b; - } else { - b = a; - } - -## Line endings - -The «native» line endings for headers and sources of QEverCloud are considered to be Unix-style single LFs. If you are using Windows or OS X / macOS and want to contribute some code changes to QEverCloud, please [configure git](https://help.github.com/articles/dealing-with-line-endings/) to convert the line endings to LF on commit or on push. - -## Source file names - -The name of a header/source file should reflect the name of the class declared/implemented in the file. In case when the header/source file contains declarations/implementations for more than one class, the file name should be either the most important class’ name or some name encompassing the nature of those multiple classes. If the header/source file doesn’t contain C++ classes at all, the file name should just provide some reasonable hint about the contents of the file. - -C++ header files have `.h` extension and source files have `.cpp` extension. - -## Namespace - -All of the public code of QEverCloud code should reside in `qevercloud` namespace. It’s also a good rule of thumb to keep the library’s private code in the same namespace as well. - -## Class names - -Class names should be capitalized. If the class name consists of several words, each word should be capitalized and there should be no underscore between the words. Like this: - - class MyClass - { - // < class contents > - }; - -## Class/struct member variable naming - -Private class/struct member variable names should start with `m_` followed by a word in the lower case. If the name of the member variable consists of multiple words, all the words but the first one should be capitalized, without underscores in between. For example: - - class MyClass - { - private: - double m_averageCounter; - bool m_countingEnabled; - }; - -Public class/struct member variables may skip this convention. - -Also, not a strict rule but a rule of thumb: use tabular indentation to keep the names of several member variables starting at the same column. That makes them slightly more readable. - -## Class methods / functions naming - -The first word in the name of a class method or a function should start from the lower case. If the name of method/function consists of just one word, the entire word should appear in the lower case. If the name of the method/function consists of several words, all the words but the first one should be capitalized, without underscores in between. For example: - - class MyClass - { - public: - void do(); - void doThis(); - void doThisAndThat(); - - }; - -The obvious exceptions from this rule are constructors and destructor of the class, since their names must match the class names in which the first word is capitalized. - -## Doxygen documentation for public class methods and functions - -For all public class methods or functions of QEverCloud the Doxygen documentation is required. If you add new classes or class methods or functions, please document them in Doxygen format and ensure the documentation can be built properly: first do `make doc` in your build directory and **then** go to `doc/latex` folder inside it and do `make` there. That would attempt to build a pdf from latex documentation. It can fail if, for example, there is some non-ASCII symbol within the Doxygen comments. - -## Comments inside the source code - -This paragraph is about non-Doxygen comments inside the source code. A good rule of thumb is to try making the code so explicit that it doesn’t require commenting. However, it is not always possible/feasible due to various reasons: optimization, workarounds for some framework bugs etc. In such cases the tricky code should have a comment nearby explaining what it does and why does it have to be so incomprehensible. - -Also, please don’t comment out portions of code «just in case, to have it around should it ever be needed again». Having the unused code around is the task of the version control system. - -## Classes layout - -Try to stick with the following layout of class contents: - -- `Q_OBJECT` macro, if required for the class -- inner classes, if any -- typedefs, if any -- contructors - the default one, if present, comes first, then non-default constructors, if any, then copy-constructor, if present. -- assignment operators, if any -- destructor, if present -- Qt signals, if any -- public methods, including Qt slots -- protected methods, including Qt slots -- private methods, including Qt slots -- member variables - -## Preferred method/function implementation layout - -- In the beginning of the method/function implementation it is wise to check the validity of input parameters values and possibly any other conditions and return with error if something is wrong and the method cannot do its job. Try to avoid multiple return points from the method/function unless these are the returns with error in the beginning of the method/function body. -- Try to make the bodies of methods/functions as small as possible. Ideally, the body of a method/function should fit a single screen or at least 2-3 screens. If it’s larger, consider refactoring the single method into a series of methods. - -## Signal/slot signatures - -- Use `Q_SIGNALS` macro instead of `signals` and `Q_SLOTS` instead of `slots`, especially in the public interfaces of QEverCloud. The reason is that there are 3rdparty libraries which use `signals` and `slots` keyword in their own code and interfaces and the name clashing can create problems for library users. -- Pass signal/slot parameters by value, not by const reference, unless you are certain that the objects interacting via the particular signals/slots would live in the same thread. The power and convenience of Qt’s signals/slots comes from their flexibility to the thread affinity of the connected objects but unless you pass parameters by value in signals/slots, it would be your job to provide the proper thread safety guarantees. There’s no reason to do this yourself when Qt can do it for you. - -## C++11/14/17 features and Qt4 support - -The library does not use any C++11/14/17 features directly but only through macros such as `Q_DECL_OVERRIDE`, `Q_STATIC_ASSERT_X`, `QStringLiteral` and the like. These macros expand to proper C++ features if the compiler supports it or to nothing otherwise. - -As long as most of these macros exist only in Qt5 but not in Qt4, QEverCloud defines them on its own when building with Qt4. - -Building with Qt4 is still supported by QEverCloud. Yes, Qt4 may be dead and unsupported by the upstream. However, there are still LTS Linux distributions around which use and ship Qt4 and QEverCloud strives to be compatible with them. diff --git a/src/qevercloud/README.md b/src/qevercloud/README.md index 7cbe1835..d8939221 100644 --- a/src/qevercloud/README.md +++ b/src/qevercloud/README.md @@ -3,9 +3,7 @@ QEverCloud **Unofficial Evernote Cloud API for Qt** -Travis CI (Linux, OS X): [![Build Status](https://travis-ci.org/d1vanov/QEverCloud.svg?branch=master)](https://travis-ci.org/d1vanov/QEverCloud) - -AppVeyor CI (Windows): [![Build status](https://ci.appveyor.com/api/projects/status/75vtxm2o18u4atw0/branch/master?svg=true)](https://ci.appveyor.com/project/d1vanov/qevercloud/branch/master) +![master](https://github.com/d1vanov/QEverCloud/workflows/Build/badge.svg?branch=master) ## What's this @@ -20,7 +18,7 @@ your copy of Qt Creator to have context-sensitive help. See below for more detai ## How to contribute -Please see the [contribution guide](CONTRIBUTING.md) for detailed info. +See [contribution guide](CONTRIBUTING.md) for detailed info. ## Downloads @@ -28,37 +26,20 @@ Prebuilt versions of the library can be downloaded from the following locations: * Stable version: * Windows binaries: - * [MSVC 2015 32 bit Qt 5.10](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/qevercloud-windows-qt510-VS2015_x86.zip) - * [MSVC 2017 64 bit Qt 5.10](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/qevercloud-windows-qt510-VS2017_x64.zip) - * [MinGW 32 bit Qt 5.5](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/qevercloud-windows-qt55-MinGW_x86.zip) - * [Mac binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/qevercloud_mac_x86_64.zip) (built with latest Qt from Homebrew) - * [Linux binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/qevercloud_linux_qt_592_x86_64.zip) built on Ubuntu 14.04 with Qt 5.9.2 + * [MSVC 2019 32 bit Qt 5.15.2](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/QEverCloud_windows_x86.zip) + * [MSVC 2019 64 bit Qt 5.15.2](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/QEverCloud_windows_x64.zip) + * [Mac binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/QEverCloud_macos_x86_64.zip) (built with Qt 5.15.2) + * [Linux binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/QEverCloud_linux_x86_64.zip) built on Ubuntu 20.04 with Qt 5.12.8 * Unstable version: * Windows binaries: - * [MSVC 2015 32 bit Qt 5.10](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/qevercloud-windows-qt510-VS2015_x86.zip) - * [MSVC 2017 64 bit Qt 5.10](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/qevercloud-windows-qt510-VS2017_x64.zip) - * [MinGW 32 bit Qt 5.5](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/qevercloud-windows-qt55-MinGW_x86.zip) - * [Mac binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/qevercloud_mac_x86_64.zip) (built with latest Qt from Homebrew) - * [Linux binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/qevercloud_linux_qt_592_x86_64.zip) built on Ubuntu 14.04 with Qt 5.9.2 + * [MSVC 2019 32 bit Qt 5.15.2](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/QEverCloud_windows_x86.zip) + * [MSVC 2019 64 bit Qt 5.15.2](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/QEverCloud_windows_x64.zip) + * [Mac binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/QEverCloud_macos_x86_64.zip) (built with Qt 5.15.2) + * [Linux binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/QEverCloud_linux_x86_64.zip) built on Ubuntu 20.04 with Qt 5.12.8 ## How to build -The project can be built and shipped as either static library or shared library. Dll export/import symbols necessary for Windows platform are supported. - -Dependencies include the following Qt components: - * For Qt4: QtCore, QtGui, QtNetwork and, if the library is built with OAuth support, QtWebKit - * For Qt5: Qt5Core, Qt5Widgets, Qt5Network and, if the library is built with OAuth support, either: - * Qt5WebKit and Qt5WebKitWidgets - for Qt < 5.4 - * Qt5WebEngine and Qt5WebEngineWidgets - for Qt < 5.6 - * Qt5WebEngineCore and Qt5WebEngineWidgets - for Qt >= 5.6 - -Since QEverCloud 3.0.2 it is possible to choose Qt5WebKit over Qt5WebEngine using CMake option `USE_QT5_WEBKIT`. - -Since QEverCloud 4.0.0 it is possible to build the library without OAuth support and thus without QtWebKit or QtWebEngine dependencies, for this use CMake option `BUILD_WITH_OAUTH_SUPPORT=NO`. - -Also, if Qt4's QtTest or Qt5's Qt5Test modules are found during the pre-build configuration, the unit tests are enabled and can be run with `make test` command. - -The project uses CMake build system which can be used as simply as follows (on Unix platforms): +QEverCloud uses CMake build system which can be used as simply as follows (on Unix platforms): ``` mkdir build cd build @@ -67,72 +48,58 @@ make make install ``` -Please note that installing the library somewhere is mandatory because it puts the library's headers into the subfolder dependent on used Qt version: either *qt4qevercloud* or *qt5qevercloud*. The intended use of library's headers is something like this: -``` -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) -#include -#else -#include -#endif -``` +The library can be built and shipped either as a static library or a shared library. Dll export/import symbols necessary for Windows platform are supported. -If you just need to use the only one Qt version, you can skip the check and just include the header file you need. +QEverCloud uses C++14 standard. CMake automatically checks whether the compiler is capable enough of building QEverCloud so if the pre-build configuration step was successful, the build step should be successful as well. Known capable compilers are g++ 9 or later and Visual Studio 2019 or later. -More CMake configurations options available: +The recommended version of Qt5 for building the library is the latest Qt 5.15. However, it is also known to build and work with Qt 5.12. -*BUILD_DOCUMENTATION* - when *ON*, attempts to find Doxygen and in case of success adds *doc* target so the documentation can be built using `make doc` command after the `cmake ../` step. By default this option is on. +QEverCloud depends on the following Qt components: + * Qt5Core + * Qt5Widgets + * Qt5Network + * (Optional) Qt5WebKit an Qt5WebKitWidgets + * (Optional) Qt5WebEngine and Qt5WebEngineWidgets -*BUILD_QCH_DOCUMENTATION* - when *ON*, passes instructions on to Doxygen to build the documentation in *qch* format. This option only has any meaning if *BUILD_DOCUMENTATION* option is on. By default this option is off. - -*BUILD_SHARED* - when *ON*, CMake configures the build for the shared library. By default this option is on. +The dependencies on Qt5WebKit or Qt5WebEngine are only actual if the library is built with OAuth support. But even then there is an option to build the library with OAuth support but without the dependency on either of these components. More on this below. -If *BUILD_SHARED* is *ON*, `make install` would install the CMake module necessary for applications using CMake's `find_package` command to find the installation of the library. +By default the library is built with OAuth support and uses Qt5WebEngine for it. The following cmake parameters are available to alter this behaviour: + * `-DBUILD_WITH_OAUTH_SUPPORT=NO` would disable building with OAuth support entirely. + * `-DUSE_QT5_WEBKIT=ON` would build the library with OAuth using Qt5WebKit for web page rendering. + * `-DQEVERCLOUD_USE_SYSTEM_BROWSER=ON` would build the library with OAuth not using either Qt5WebKit or Qt5WebEngine but instead delegating some portion of OAuth procedure to the system browser. -If *MAJOR_VERSION_LIB_NAME_SUFFIX* is on, `make install` would add the major version as a suffix to the library's name. +If Qt5's Qt5Test module is found during the pre-build configuration step, the unit tests are enabled and can be run with `make test` and more verbose `make check` commands. -If *MAJOR_VERSION_DEV_HEADERS_FOLDER_NAME_SUFFIX* is on, `make install` would install the development headers into the folder which name would end with the major version of QEverCloud. +Other available CMake configurations options: -The two latter options are intended to allow for easier installation of multiple major versions of QEverCloud. +*BUILD_DOCUMENTATION* - when *ON*, attempts to find Doxygen and in case of success adds *doc* target so the documentation can be built using `make doc` command after the pre-build configuration step. By default this option is on. -## Compatibility - -The library can be built with both Qt4 and Qt5 versions of the framework. Since QEverCloud 4.1.0 the default one is Qt5. In order to force building with Qt4 version pass `-DBUILD_WITH_QT4=ON` option to CMake. Prior to QEverCloud 4.1.0 version of Qt used by default was Qt4. For those old versions in order to force building with Qt5 one needs to pass `-DUSE_QT5=1` option to CMake. - -### API breaks from 2.x to 3.0 +*BUILD_QCH_DOCUMENTATION* - when *ON*, passes instructions on to Doxygen to build the documentation in *qch* format. This option only has any meaning if *BUILD_DOCUMENTATION* option is on. By default this option is off. -The API breaks only include the relocation of header files required in order to use the library: in 2.x one could simply do -``` -#include -``` -while since 3.0 the intended way to use the installed shared library is the following: -``` -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) -#include -#else -#include -#endif -``` +*BUILD_SHARED* - when *ON*, CMake configures the build for the shared library. By default this option is on. -### API breaks from 3.x to 4.0 +*BUILD_WITH_Q_NAMESPACE* - when *ON*, `Q_NAMESPACE` and `Q_ENUM_NS` macros are used to add introspection capabilities to enumerations within `qevercloud` namespace. Qt >= 5.8 is required to enable this option. By default this option is enabled. -Tha API breaks in 4.0 inlcude a few changes caused by migration from Evernote API 1.25 to Evernote API 1.28. The breaks are listed in a [separate document](API_breaks_3_to_4.md). +*BUILD_TRANSLATIONS* - when *ON*, builds and installs translation files for translatable strings from QEverCloud. -### QtWebKit vs QWebEngine +If *BUILD_SHARED* is *ON*, `make install` installs CMake module necessary for applications using CMake's `find_package` command to find the installation of QEverCloud. -The library uses Qt's web facilities for OAuth authentication. These can be based on either QtWebKit (for Qt4 and older versions of Qt5) or QWebEngine (for more recent versions of Qt5). With CMake build system the choice happens automatically during the pre-build configuration based on the used version of Qt. One can also choose to use QtWebKit even with newer versions of Qt via CMake option `USE_QT5_WEBKIT`. +It is possible to build the library with enabled sanitizers using additional CMake options: + * `-DSANITIZE_ADDRESS=ON` to enable address sanitizer + * `-DSANITIZE_MEMORY=ON` to enable memory sanitizer + * `-DSANITIZE_THREAD=ON` to enable thread sanitizer + * `-DSANITIZE_UNDEFINED=ON` to enable undefined behaviour sanitizer -### C++11/14/17 features +## Include files for applications using the library -The library does not use any C++11/14/17 features directly but only through macros like `Q_DECL_OVERRIDE`, `Q_STATIC_ASSERT_X`, `QStringLiteral` and others. Some of these macros are also "backported" to Qt4 version of the library i.e. they are defined by the library itself for Qt4 version. So the library should be buildable even with not C++11/14/17-compliant compiler. +Two "cumulative" headers - *QEverCloud.h* or *QEverCloudOAuth.h* - include everything needed for the general and OAuth functionality correspondingly. More "fine-grained" headers can also be used if needed. -## Include files for applications using the library +## Seeding random numbers generator for Qt < 5.10 -Two "cumulative" headers - *QEverCloud.h* or *QEverCloudOAuth.h* - include everything needed for the general and OAuth functionality correspondingly. More "fine-grained" headers are available within the same subfolder if needed. +QEverCloud requires random numbers generator for OAuth procedure. When QEverCloud is built against Qt >= 5.10, it uses `QRandomGenerator` which is cryptographically secure on supported platforms and is seeded by Qt internals. With Qt < 5.10 QEverCloud uses `qrand`. It requires the client application to call `qsrand` with seed value before using OAuth calls of QEverCloud. So if you are using QEverCloud built with Qt < 5.10, make sure to call `qsrand` before using QEverCloud's OAuth. ## Related projects -* [NotePoster](https://github.com/d1vanov/QEverCloud-example-NotePoster) is an example app using QEverCloud library to post notes to Evernote. -* [QEverCloud packaging](https://github.com/d1vanov/QEverCloud-packaging) repository contains various files and scripts required for building QEverCloud packages for various platforms and distributions. -* [QEverCloudGenerator](https://github.com/d1vanov/QEverCloudGenerator) repository contains the parser of [Evernote Thrift IDL files](https://github.com/evernote/evernote-thrift) generating headers and sources for QEverCloud library. -* [libquentier](https://github.com/d1vanov/libquentier) is a library for creating of feature rich full sync Evernote clients built on top of QEverCloud +* [QEverCloudGenerator](https://github.com/d1vanov/QEverCloudGenerator) repository hosts code generating parser of [Evernote Thrift IDL files](https://github.com/evernote/evernote-thrift). This parser is used to autogenerate a portion of QEverCloud's headers and sources. +* [libquentier](https://github.com/d1vanov/libquentier) is a library for creating feature rich full sync Evernote clients built on top of QEverCloud * [Quentier](https://github.com/d1vanov/quentier) is an open source desktop note taking app capable of working as Evernote client built on top of libquentier and QEverCloud diff --git a/src/qevercloud/appveyor.yml b/src/qevercloud/appveyor.yml deleted file mode 100644 index ca208ac5..00000000 --- a/src/qevercloud/appveyor.yml +++ /dev/null @@ -1,93 +0,0 @@ -version: '4.1.0-{build}' - -branches: - only: - - master - - development - - /^v\d+\.\d+(\.\d+)?(-\S*)?$/ - -skip_commits: - files: - - '*.md' - - LICENSE - -environment: - auth_token: - secure: rLuHhO0prerqoGCYmfOoyxqcwwamCXtuZtl4Jzqeu3aGgflk0mnX1fogLq68YcRW - matrix: - - prepare_mode: YES - name: win32-prepare - platform: amd64_x86 - qt: msvc2015 - - prepare_mode: NO - name: win32 - platform: amd64_x86 - qt: msvc2015 - - prepare_mode: NO - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - name: win64 - platform: amd64 - qt: msvc2017_64 - - prepare_mode: NO - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013 - name: win32 - platform: mingw - qt: mingw492_32 - -clone_folder: c:\dev\qevercloud - -init: - - if not %platform%==mingw set PATH=C:\Qt\5.10\%qt%\bin;%PATH% - - if %platform%==mingw set PATH=C:\MinGW\bin;C:\Program Files (x86)\CMake\bin;C:\Qt\5.5\%qt%\bin;%PATH% - - if %platform%==mingw set ORIGPATH=%PATH% - - if %platform%==mingw set PATH=%PATH:C:\Program Files\Git\usr\bin;=% - - if %qt%==msvc2017_64 set BUILD_SUITE=VS2017_x64 - - if %qt%==msvc2015 set BUILD_SUITE=VS2015_x86 - - if %platform%==mingw set BUILD_SUITE=MinGW_x86 - - if %platform%==mingw set DEPLOYMENT_TARGET=qevercloud-windows-qt55-%BUILD_SUITE%.zip - - if not %platform%==mingw set DEPLOYMENT_TARGET=qevercloud-windows-qt510-%BUILD_SUITE%.zip - - if %platform%==amd64 call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" - - if %platform%==amd64_x86 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %platform% - - if not %platform%==mingw (set makefiles="NMake Makefiles") else (set makefiles="MinGW Makefiles") - - if %platform%==mingw (set use_webkit=1) else (set use_webkit=0) - - if %qt%==msvc2017_64 set PATH="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin";%PATH% - - if %qt%==msvc2015 set PATH="C:\Program Files (x86)\MSBuild\14.0\Bin";%PATH% - -install: - - echo "Downloading ciuploadtool" - - md c:\dev\ciuploadtool - - cd c:\dev\ciuploadtool - - curl -fsSL https://github.com/d1vanov/ciuploadtool/releases/download/continuous-master/ciuploadtool_windows_x86.zip -o ciuploadtool_windows_x86.zip - - 7z x ciuploadtool_windows_x86.zip - - if %prepare_mode%==YES c:\dev\ciuploadtool\ciuploadtool.exe -preponly -suffix="%APPVEYOR_REPO_BRANCH%" - - ps: if ($env:prepare_mode -eq "YES") { throw "Failing in order to stop the current build matrix job early" } - -before_build: - - cd c:\dev\qevercloud - - md build - -build_script: - - cd build - - if %platform%==mingw cmake .. -G %makefiles% -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="c:/dev/qevercloud/build/installdir" -DUSE_QT5_WEBKIT=%use_webkit% -DCMAKE_PREFIX_PATH="C:/Qt/5.5/%qt%" - - if not %platform%==mingw cmake .. -G %makefiles% -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="c:/dev/qevercloud/build/installdir" -DUSE_QT5_WEBKIT=%use_webkit% -DCMAKE_PREFIX_PATH="C:/Qt/5.10/%cd%" - - cmake --build . --target all - - cmake --build . --target check - - cmake --build . --target install - - if %platform%==mingw set PATH=%ORIGPATH% - -after_build: - - cd c:\dev\qevercloud\build\installdir - - 7z a %DEPLOYMENT_TARGET% * - - cp %DEPLOYMENT_TARGET% %APPVEYOR_BUILD_FOLDER% - - cd %APPVEYOR_BUILD_FOLDER% - - c:\dev\ciuploadtool\ciuploadtool.exe -suffix="%APPVEYOR_REPO_BRANCH%" %DEPLOYMENT_TARGET% - -artifacts: - - path: '*.zip' - name: archive - -matrix: - allow_failures: - - prepare_mode: YES - # Disable until https://github.com/appveyor/ci/issues/1231 is fixed - # fast_finish: true From 7c4ed03907602ae7415b6a6b46ee0e923d1159e8 Mon Sep 17 00:00:00 2001 From: Robert Spiegel Date: Wed, 19 Apr 2023 19:33:40 +0200 Subject: [PATCH 2/6] Updated changelog for v.2.1.10 --- changelog.txt | 13 +++++++++++++ debian/changelog | 14 ++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/changelog.txt b/changelog.txt index d21c0efd..d426b550 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,14 @@ +NixNote (2.1.10) stable; urgency=low + * Authentication (Evernote login) now uses system browser which fixes login problems and also enables to use all + login variants provided by Evernote (multifactor, login by Google etc.) + * AppImage is now built on Ubuntu 20.04 (focal) - i.e. will not run on older distribution that Ubuntu 20.04, + should of course run on all newer systems + * AppImage is now created by linuxdeploy tool (instead of linuxdeployqt) + * Removed the usage of custom built tidy-html5 in favour of the package provided by distribution + * Updated Evernote client - QEverCloud version 4.1.0 to 6.2.0 + * All changes thanks to https://github.com/d1vanov + -- Robert Spiegel Wed, 19 Apr 2023 19:11:10 +0200 + NixNote (2.1.9) stable; urgency=low * Added a new dark theme. * Optimised the sql statements of note creating and updating. @@ -12,6 +23,7 @@ NixNote (2.1.9) stable; urgency=low * RAM usage optimizations. * Fixed file downloading under Windows. * Made the editor not render the note content when Key_Up or Key_Down keeps being pressed. + * All changes thanks to https://github.com/boo-yee -- Robert Spiegel Sat, 15 Apr 2023 12:15:22 +0200 NixNote (2.1.8) stable; urgency=low @@ -24,6 +36,7 @@ NixNote (2.1.8) stable; urgency=low * Fixed: Nixnote2 exits when network gets disconnected - issue #189 * Fixed: Import all notes, tag issue - issue #153 * Fixed: Local images cannot be pasted, images in notes cannot be saved. + * All changes thanks to https://github.com/boo-yee -- Robert Spiegel Sat, 10 Sep 2022 10:00:00 +0200 NixNote (2.1.7) stable; urgency=low diff --git a/debian/changelog b/debian/changelog index 31531315..d426b550 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +NixNote (2.1.10) stable; urgency=low + * Authentication (Evernote login) now uses system browser which fixes login problems and also enables to use all + login variants provided by Evernote (multifactor, login by Google etc.) + * AppImage is now built on Ubuntu 20.04 (focal) - i.e. will not run on older distribution that Ubuntu 20.04, + should of course run on all newer systems + * AppImage is now created by linuxdeploy tool (instead of linuxdeployqt) + * Removed the usage of custom built tidy-html5 in favour of the package provided by distribution + * Updated Evernote client - QEverCloud version 4.1.0 to 6.2.0 + * All changes thanks to https://github.com/d1vanov + -- Robert Spiegel Wed, 19 Apr 2023 19:11:10 +0200 + NixNote (2.1.9) stable; urgency=low * Added a new dark theme. * Optimised the sql statements of note creating and updating. @@ -12,6 +23,7 @@ NixNote (2.1.9) stable; urgency=low * RAM usage optimizations. * Fixed file downloading under Windows. * Made the editor not render the note content when Key_Up or Key_Down keeps being pressed. + * All changes thanks to https://github.com/boo-yee -- Robert Spiegel Sat, 15 Apr 2023 12:15:22 +0200 NixNote (2.1.8) stable; urgency=low @@ -24,6 +36,7 @@ NixNote (2.1.8) stable; urgency=low * Fixed: Nixnote2 exits when network gets disconnected - issue #189 * Fixed: Import all notes, tag issue - issue #153 * Fixed: Local images cannot be pasted, images in notes cannot be saved. + * All changes thanks to https://github.com/boo-yee -- Robert Spiegel Sat, 10 Sep 2022 10:00:00 +0200 NixNote (2.1.7) stable; urgency=low @@ -449,3 +462,4 @@ NixNote (2.0-beta-3) stable; urgency=low NixNote (2.0-beta-2) stable; urgency=low * Beta 2. Lots of bug fixes and removal of Thrift. -- Randy Baumgarte Sat, 26 Apr 2014 14:00:00 -0400 + From c5389becbf03830196a4b52d1f96f616a57c0e89 Mon Sep 17 00:00:00 2001 From: Robert Spiegel Date: Wed, 19 Apr 2023 19:42:13 +0200 Subject: [PATCH 3/6] Updated changelog for v.2.1.10 --- changelog.txt | 2 +- debian/changelog | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.txt b/changelog.txt index d426b550..ceb203a3 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,6 @@ NixNote (2.1.10) stable; urgency=low * Authentication (Evernote login) now uses system browser which fixes login problems and also enables to use all - login variants provided by Evernote (multifactor, login by Google etc.) + login options supported by Evernote (multifactor authentication, login by Google etc.) * AppImage is now built on Ubuntu 20.04 (focal) - i.e. will not run on older distribution that Ubuntu 20.04, should of course run on all newer systems * AppImage is now created by linuxdeploy tool (instead of linuxdeployqt) diff --git a/debian/changelog b/debian/changelog index d426b550..ceb203a3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,6 @@ NixNote (2.1.10) stable; urgency=low * Authentication (Evernote login) now uses system browser which fixes login problems and also enables to use all - login variants provided by Evernote (multifactor, login by Google etc.) + login options supported by Evernote (multifactor authentication, login by Google etc.) * AppImage is now built on Ubuntu 20.04 (focal) - i.e. will not run on older distribution that Ubuntu 20.04, should of course run on all newer systems * AppImage is now created by linuxdeploy tool (instead of linuxdeployqt) From 302bbbbc9b0ab4f5179eb42bd9a8b117b7b35655 Mon Sep 17 00:00:00 2001 From: Robert Spiegel Date: Wed, 19 Apr 2023 19:54:16 +0200 Subject: [PATCH 4/6] Removed obsolete docker files --- development/docker/Dockerfile.ubuntu_trusty | 67 ------------------- development/docker/Dockerfile.ubuntu_xenial | 47 ------------- .../docker/Dockerfile.ubuntu_xenial_qt510 | 33 --------- .../docker/Dockerfile.ubuntu_xenial_qt511 | 32 --------- .../docker/Dockerfile.ubuntu_xenial_qt562 | 33 --------- .../docker/Dockerfile.ubuntu_xenial_qt59 | 33 --------- 6 files changed, 245 deletions(-) delete mode 100644 development/docker/Dockerfile.ubuntu_trusty delete mode 100644 development/docker/Dockerfile.ubuntu_xenial delete mode 100644 development/docker/Dockerfile.ubuntu_xenial_qt510 delete mode 100644 development/docker/Dockerfile.ubuntu_xenial_qt511 delete mode 100644 development/docker/Dockerfile.ubuntu_xenial_qt562 delete mode 100644 development/docker/Dockerfile.ubuntu_xenial_qt59 diff --git a/development/docker/Dockerfile.ubuntu_trusty b/development/docker/Dockerfile.ubuntu_trusty deleted file mode 100644 index b0b14614..00000000 --- a/development/docker/Dockerfile.ubuntu_trusty +++ /dev/null @@ -1,67 +0,0 @@ -FROM ubuntu:trusty - -# -# unfortunately this doesn't work -# ..but, as "trusty" is reaching "end of life" I never bothered to fix the build -# so I only leave it for reference -# currently the AppImage build with "xenial" -# - -ARG wdir="/opt" -WORKDIR $wdir - -ARG cmake_ver="cmake-3.8.0-Linux-x86_64" -ARG make_core=4 -ENV PATH="${wdir}/${cmake_ver}/bin:${PATH}" -ENV PATH="${wdir}/linuxdeployqt:${PATH}" - -RUN apt-get update && apt-get install -y software-properties-common - -# install Qt 5.5 from PPA - https://launchpad.net/~beineri/+archive/ubuntu/opt-qt551-trusty -# note: trusty would have 5.3 per default -ENV PATH="/opt/qt55/bin:${PATH}" -RUN add-apt-repository ppa:beineri/opt-qt551-trusty -y -RUN add-apt-repository ppa:beineri/opt-qt551-trusty -y && apt-get update - -RUN apt-get update && apt-get install -y git-core build-essential \ - wget curl make \ - libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev libcurl4-openssl-dev \ - qt55base \ - libpoppler-qt5-dev \ - qttools5-dev-tools \ - qt55tools qt55script qt55quick1 qt55webengine qt55webkit-examples qt55quickcontrols qt553d - -# install cmake -RUN wget -nv "https://cmake.org/files/v3.8/${cmake_ver}.tar.gz" && \ - tar -xf "${cmake_ver}.tar.gz" - -# install linuxdeployqt -RUN wget -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" && \ - chmod a+x ./linuxdeployqt-continuous-x86_64.AppImage && \ - ./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract && \ - mv squashfs-root linuxdeployqt && \ - mv linuxdeployqt/AppRun linuxdeployqt/linuxdeployqt - -# compile tidy -ARG git_rev_tidy="HEAD" -ARG git_branch_tidy="master" -RUN cd $wdir && git clone -b $git_branch_tidy "https://github.com/htacg/tidy-html5.git" && \ - cd tidy-html5 && \ - git checkout $git_rev_tidy && \ - cd build/cmake && \ - cmake ../.. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ - make -j $make_core && \ - make install - -# use git_rev to make sure the last layers are run again, if there are new commits -ARG git_rev1="HEAD" -ARG git_rev="HEAD" -ARG git_branch="feature/rs-9-alfa" -RUN cd $wdir && git clone -b $git_branch "https://github.com/robert7/nixnote2.git" && \ - cd nixnote2 && \ - git checkout $git_rev - -# TODO: fix compile... - -CMD /bin/bash - diff --git a/development/docker/Dockerfile.ubuntu_xenial b/development/docker/Dockerfile.ubuntu_xenial deleted file mode 100644 index 55b5aaae..00000000 --- a/development/docker/Dockerfile.ubuntu_xenial +++ /dev/null @@ -1,47 +0,0 @@ -FROM ubuntu:xenial - -ARG wdir="/opt" -WORKDIR $wdir - -#ARG cmake_ver="cmake-3.8.0-Linux-x86_64" -#ENV PATH="${wdir}/${cmake_ver}/bin:${PATH}" - -ARG make_core=4 -ENV PATH="${wdir}/linuxdeployqt:${PATH}" - -RUN apt-get update && apt-get install -y software-properties-common -RUN add-apt-repository ppa:nixnote/nixnote2-stable -y && apt-get update -qq -RUN apt-get update && apt-get install -y git-core qt5-default build-essential \ - wget curl make pkg-config \ - libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev libcurl4-openssl-dev \ - libpoppler-qt5-dev libqt5webkit5-dev qt5-qmake qttools5-dev-tools libhunspell-dev nixnote2-tidy - - -# now not needed anymore -# install cmake -#RUN wget -nv "https://cmake.org/files/v3.8/${cmake_ver}.tar.gz" && \ -# tar -xf "${cmake_ver}.tar.gz" - -# install linuxdeployqt -RUN wget -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" && \ - chmod a+x ./linuxdeployqt-continuous-x86_64.AppImage && \ - ./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract && \ - mv squashfs-root linuxdeployqt && \ - mv linuxdeployqt/AppRun linuxdeployqt/linuxdeployqt - -# now not needed anymore (installed as package) -# compile tidy -#ARG GIT_REV_TIDY="HEAD" -#ARG GIT_BRANCH_TIDY="master" -#RUN cd $wdir && git clone -b $GIT_BRANCH_TIDY "https://github.com/htacg/tidy-html5.git" && \ -# cd tidy-html5 && \ -# git checkout $GIT_REV_TIDY && \ -# cd build/cmake && \ -# cmake ../.. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ -# make -j $make_core && \ -# make install - -RUN cd $wdir && git clone "https://github.com/robert7/nixnote2.git" && cd nixnote2 && git checkout master - -CMD /bin/bash - diff --git a/development/docker/Dockerfile.ubuntu_xenial_qt510 b/development/docker/Dockerfile.ubuntu_xenial_qt510 deleted file mode 100644 index be270ef4..00000000 --- a/development/docker/Dockerfile.ubuntu_xenial_qt510 +++ /dev/null @@ -1,33 +0,0 @@ -FROM ubuntu:xenial - -ARG wdir="/opt" -WORKDIR $wdir - -ARG make_core=4 -ENV PATH="${wdir}/linuxdeployqt:${PATH}" - -RUN apt-get update && apt-get install -y software-properties-common -RUN add-apt-repository ppa:nixnote/nixnote2-stable -y && \ - add-apt-repository ppa:beineri/opt-qt-5.10.1-xenial -y && \ - apt-get update -qq - -# last line is for webkit build from source -RUN apt-get update && apt-get install -y git-core build-essential \ - qt510-meta-full \ - wget curl make pkg-config \ - libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev libcurl4-openssl-dev \ - libpoppler-qt5-dev libhunspell-dev nixnote2-tidy \ - cmake build-essential perl python ruby flex gperf bison cmake ninja-build libfontconfig1-dev libicu-dev libsqlite3-dev zlib1g-dev libpng-dev libjpeg-dev libxslt1-dev libxml2-dev libhyphen-dev libxcomposite-dev libxrender-dev libglib2.0-dev libgstreamer-plugins-base1.0-dev - - -# install linuxdeployqt -RUN wget -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" && \ - chmod a+x ./linuxdeployqt-continuous-x86_64.AppImage && \ - ./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract && \ - mv squashfs-root linuxdeployqt && \ - mv linuxdeployqt/AppRun linuxdeployqt/linuxdeployqt - -RUN cd $wdir && git clone "https://github.com/robert7/nixnote2.git" && cd nixnote2 && git checkout master - -CMD /bin/bash - diff --git a/development/docker/Dockerfile.ubuntu_xenial_qt511 b/development/docker/Dockerfile.ubuntu_xenial_qt511 deleted file mode 100644 index 68e86781..00000000 --- a/development/docker/Dockerfile.ubuntu_xenial_qt511 +++ /dev/null @@ -1,32 +0,0 @@ -FROM ubuntu:xenial - -ARG wdir="/opt" -WORKDIR $wdir -ENV PATH="${wdir}/linuxdeployqt:${PATH}" - -RUN apt-get update && apt-get install -y software-properties-common -RUN add-apt-repository ppa:nixnote/nixnote2-stable -y && \ - add-apt-repository ppa:beineri/opt-qt-5.11.0-xenial -y && \ - apt-get update -qq - -# last line is for webkit build from source -# qt pkg names: https://askubuntu.com/questions/508503/whats-the-development-package-for-qt5-in-14-04 -RUN apt-get update && apt-get install -y git-core build-essential \ - qt511base qt511tools qt511webchannel qt511script qt511translations qt511websockets qt511xmlpatterns qt511declarative qt511location qt511sensors \ - wget curl make pkg-config \ - libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev libcurl4-openssl-dev \ - libpoppler-qt5-dev libhunspell-dev nixnote2-tidy \ - cmake build-essential perl python ruby flex gperf bison cmake ninja-build libfontconfig1-dev libicu-dev libsqlite3-dev zlib1g-dev libpng-dev libjpeg-dev libxslt1-dev libxml2-dev libhyphen-dev libxcomposite-dev libxrender-dev libglib2.0-dev libgstreamer-plugins-base1.0-dev - - -# install linuxdeployqt -RUN wget -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" && \ - chmod a+x ./linuxdeployqt-continuous-x86_64.AppImage && \ - ./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract && \ - mv squashfs-root linuxdeployqt && \ - mv linuxdeployqt/AppRun linuxdeployqt/linuxdeployqt - -RUN cd $wdir && git clone "https://github.com/robert7/nixnote2.git" && cd nixnote2 && git checkout master - -CMD /bin/bash - diff --git a/development/docker/Dockerfile.ubuntu_xenial_qt562 b/development/docker/Dockerfile.ubuntu_xenial_qt562 deleted file mode 100644 index d028aeb2..00000000 --- a/development/docker/Dockerfile.ubuntu_xenial_qt562 +++ /dev/null @@ -1,33 +0,0 @@ -FROM ubuntu:xenial - -ARG wdir="/opt" -WORKDIR $wdir - -ARG make_core=4 -ENV PATH="${wdir}/linuxdeployqt:${PATH}" - -RUN apt-get update && apt-get install -y software-properties-common -RUN add-apt-repository ppa:nixnote/nixnote2-stable -y && \ - add-apt-repository ppa:beineri/opt-qt562-xenial -y && \ - apt-get update -qq - -# last line is for webkit build from source -RUN apt-get update && apt-get install -y git-core build-essential \ - qt56-meta-full qt56-meta-dbg-full qt56webengine qt56webchannel \ - wget curl make pkg-config \ - libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev libcurl4-openssl-dev \ - libpoppler-qt5-dev libhunspell-dev nixnote2-tidy \ - cmake build-essential perl python ruby flex gperf bison cmake ninja-build libfontconfig1-dev libicu-dev libsqlite3-dev zlib1g-dev libpng-dev libjpeg-dev libxslt1-dev libxml2-dev libhyphen-dev libxcomposite-dev libxrender-dev libglib2.0-dev libgstreamer-plugins-base1.0-dev - - -# install linuxdeployqt -RUN wget -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" && \ - chmod a+x ./linuxdeployqt-continuous-x86_64.AppImage && \ - ./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract && \ - mv squashfs-root linuxdeployqt && \ - mv linuxdeployqt/AppRun linuxdeployqt/linuxdeployqt - -RUN cd $wdir && git clone "https://github.com/robert7/nixnote2.git" && cd nixnote2 && git checkout master - -CMD /bin/bash - diff --git a/development/docker/Dockerfile.ubuntu_xenial_qt59 b/development/docker/Dockerfile.ubuntu_xenial_qt59 deleted file mode 100644 index 8681529d..00000000 --- a/development/docker/Dockerfile.ubuntu_xenial_qt59 +++ /dev/null @@ -1,33 +0,0 @@ -FROM ubuntu:xenial - -ARG wdir="/opt" -WORKDIR $wdir - -ARG make_core=4 -ENV PATH="${wdir}/linuxdeployqt:${PATH}" - -RUN apt-get update && apt-get install -y software-properties-common -RUN add-apt-repository ppa:nixnote/nixnote2-stable -y && \ - add-apt-repository ppa:beineri/opt-qt59-xenial -y && \ - apt-get update -qq - -# last line is for webkit build from source -RUN apt-get update && apt-get install -y git-core build-essential \ - qt59-meta-full qt59webengine qt59webchannel \ - wget curl make pkg-config \ - libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev libcurl4-openssl-dev \ - libpoppler-qt5-dev libhunspell-dev nixnote2-tidy \ - cmake build-essential perl python ruby flex gperf bison cmake ninja-build libfontconfig1-dev libicu-dev libsqlite3-dev zlib1g-dev libpng-dev libjpeg-dev libxslt1-dev libxml2-dev libhyphen-dev libxcomposite-dev libxrender-dev libglib2.0-dev libgstreamer-plugins-base1.0-dev - - -# install linuxdeployqt -RUN wget -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" && \ - chmod a+x ./linuxdeployqt-continuous-x86_64.AppImage && \ - ./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract && \ - mv squashfs-root linuxdeployqt && \ - mv linuxdeployqt/AppRun linuxdeployqt/linuxdeployqt - -RUN cd $wdir && git clone "https://github.com/robert7/nixnote2.git" && cd nixnote2 && git checkout master - -CMD /bin/bash - From a3a975af0a23dc28c18c000b37b8aaccbdf925e3 Mon Sep 17 00:00:00 2001 From: Robert Spiegel Date: Wed, 19 Apr 2023 19:59:38 +0200 Subject: [PATCH 5/6] Updated build scripts --- development/build-dependencies-ubuntu-2004.sh | 3 +++ development/build-with-docker.sh | 2 +- development/docker/Dockerfile.ubuntu_focal | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/development/build-dependencies-ubuntu-2004.sh b/development/build-dependencies-ubuntu-2004.sh index 44a6fcaa..bb094cb3 100755 --- a/development/build-dependencies-ubuntu-2004.sh +++ b/development/build-dependencies-ubuntu-2004.sh @@ -1,5 +1,8 @@ #!/bin/bash +## 2023.04: this file is not updated see docker/Dockerfile.ubuntu_focal + + # preparation # sudo apt update # sudo apt upgrade diff --git a/development/build-with-docker.sh b/development/build-with-docker.sh index 76d5b381..face4cad 100755 --- a/development/build-with-docker.sh +++ b/development/build-with-docker.sh @@ -49,7 +49,7 @@ time docker run \ -v $PROJECTDIR/docker-build-${BUILD_TYPE}:/opt/nixnote2/qmake-build-${BUILD_TYPE} \ -v $PROJECTDIR/docker-build-${BUILD_TYPE}-t:/opt/nixnote2/qmake-build-${BUILD_TYPE}-t \ -it ${DOCKERTAG} \ - /bin/bash -c "cd nixnote2 && git fetch && git checkout --track origin/$PROJECTBRANCH && git reset --hard origin/$PROJECTBRANCH && ./development/build-with-qmake.sh ${BUILD_TYPE} noclean /usr/lib/nixnote2/tidy browser && ./development/run-tests.sh ${BUILD_TYPE} noclean /usr/lib/nixnote2/tidy && ./development/create-AppImage-linuxdeploy.sh && mv *.AppImage appdir && chmod -R a+rwx appdir/*.AppImage" + /bin/bash -c "cd nixnote2 && git fetch && git checkout --track origin/$PROJECTBRANCH && git reset --hard origin/$PROJECTBRANCH && ./development/build-with-qmake.sh ${BUILD_TYPE} noclean /usr/lib browser && ./development/run-tests.sh ${BUILD_TYPE} noclean /usr/lib/nixnote2/tidy && ./development/create-AppImage-linuxdeploy.sh && mv *.AppImage appdir && chmod -R a+rwx appdir/*.AppImage" ls appdir/*.AppImage echo "If all got well then AppImage file in appdir is your binary" diff --git a/development/docker/Dockerfile.ubuntu_focal b/development/docker/Dockerfile.ubuntu_focal index 17ffc493..a5fd432e 100644 --- a/development/docker/Dockerfile.ubuntu_focal +++ b/development/docker/Dockerfile.ubuntu_focal @@ -8,12 +8,12 @@ ENV PATH="${wdir}/linuxdeploy:${wdir}/linuxdeploy-plugin-qt:${wdir}/appimagetool ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y software-properties-common -RUN add-apt-repository ppa:nixnote/nixnote2-stable -y && apt-get update -qq +#RUN add-apt-repository ppa:nixnote/nixnote2-stable -y && apt-get update -qq RUN apt-get update && apt-get install -y git-core qt5-default build-essential ccache p7zip-full libssl1.1 libcrypt1 libnss3 \ wget curl make pkg-config \ qtwebengine5-dev qtwebengine5-dev-tools \ libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev libcurl4-openssl-dev \ - libpoppler-qt5-dev libqt5webkit5-dev qt5-qmake qttools5-dev-tools libhunspell-dev nixnote2-tidy + libpoppler-qt5-dev libqt5webkit5-dev qt5-qmake qttools5-dev-tools libhunspell-dev libtidy-dev libqt5positioning5-plugins # install linuxdeploy RUN wget -nv "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" && \ From bcd3e9f5d86d82a3b7e3dee1c456de3e6eea2c6c Mon Sep 17 00:00:00 2001 From: Robert Spiegel Date: Wed, 19 Apr 2023 20:33:06 +0200 Subject: [PATCH 6/6] Updated build scripts --- development/build-with-docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/development/build-with-docker.sh b/development/build-with-docker.sh index face4cad..83abf8aa 100755 --- a/development/build-with-docker.sh +++ b/development/build-with-docker.sh @@ -49,7 +49,7 @@ time docker run \ -v $PROJECTDIR/docker-build-${BUILD_TYPE}:/opt/nixnote2/qmake-build-${BUILD_TYPE} \ -v $PROJECTDIR/docker-build-${BUILD_TYPE}-t:/opt/nixnote2/qmake-build-${BUILD_TYPE}-t \ -it ${DOCKERTAG} \ - /bin/bash -c "cd nixnote2 && git fetch && git checkout --track origin/$PROJECTBRANCH && git reset --hard origin/$PROJECTBRANCH && ./development/build-with-qmake.sh ${BUILD_TYPE} noclean /usr/lib browser && ./development/run-tests.sh ${BUILD_TYPE} noclean /usr/lib/nixnote2/tidy && ./development/create-AppImage-linuxdeploy.sh && mv *.AppImage appdir && chmod -R a+rwx appdir/*.AppImage" + /bin/bash -c "cd nixnote2 && git fetch && git checkout --track origin/$PROJECTBRANCH && git reset --hard origin/$PROJECTBRANCH && ./development/build-with-qmake.sh ${BUILD_TYPE} noclean /usr/lib browser && ./development/run-tests.sh ${BUILD_TYPE} noclean /usr/lib && ./development/create-AppImage-linuxdeploy.sh && mv *.AppImage appdir && chmod -R a+rwx appdir/*.AppImage" ls appdir/*.AppImage echo "If all got well then AppImage file in appdir is your binary"