qt5: Add instructions for updating and patching

+81
+81
pkgs/development/libraries/qt-5/README.md
··· 1 + # Qt 5 Maintainer's Notes 2 + 3 + ## Minor Updates 4 + 5 + Let `$major` be the major version number, e.g. `5.9`. 6 + 7 + 1. Change the version number in the `$major/fetch.sh`. 8 + 2. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/development/qt-5/$major` 9 + from the top of the Nixpkgs tree. 10 + 11 + See below if it is necessary to update any patches. 12 + 13 + ## Major Updates 14 + 15 + Let `$major` be the new major version number, e.g. `5.10`. 16 + 17 + 1. Copy the subdirectory from the previous major version to `$major`. 18 + 2. Change the version number in `$major/fetch.sh`. 19 + 3. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/development/qt-5/$major` 20 + from the top of the Nixpkgs tree. 21 + 4. Add a top-level attribute in `pkgs/top-level/all-packages.nix` for the new 22 + major version. 23 + 5. Change the `qt5` top-level attribute to point to the new major version. 24 + 6. If the previous major version is _not_ a long-term support release, 25 + remove it from Nixpkgs. 26 + 27 + See below if it is necessary to update any patches. 28 + 29 + ## Patches 30 + 31 + Nixpkgs maintains several patches for Qt which cannot be submitted upstream. To 32 + facilitate maintenance, a fork of the upstream repository is created for each patched module: 33 + 34 + - [qtbase](https://github.com/ttuegel/qtbase) 35 + - [qtwebkit](https://github.com/ttuegel/qtwebkit) 36 + - [qttools](https://github.com/ttuegel/qttools) 37 + - [qtscript](https://github.com/ttuegel/qtscript) 38 + - [qtserialport](https://github.com/ttuegel/qtserialport) 39 + - [qtdeclarative](https://github.com/ttuegel/qtdeclarative) 40 + - [qtwebengine](https://github.com/ttuegel/qtwebengine) 41 + 42 + In each repository, the patches are contained in a branch named `nixpkgs/$major` 43 + for each major version. Please make a pull request to add or update any patch 44 + which will be maintained in Nixpkgs. 45 + 46 + The forked repository for each module is used to create a single patch in 47 + Nixpkgs. To recreate the patch for module `$module` (e.g. `qtbase`) at version 48 + `$version` (e.g. `5.9.1`) in the branch `$major` (e.g. `5.9`), 49 + 50 + 1. Clone the fork for `$module` from the list above. 51 + 2. Checkout the active branch, `git checkout nixpkgs/$major`. 52 + 3. Compare the patched branch to the release tag, 53 + `git diff v$version > $module.patch`. 54 + 4. Copy `$module.patch` into the Nixpkgs tree. 55 + 56 + ### Minor Version Updates 57 + 58 + To update module `$module` to version `$version` from an older version in the 59 + same branch `$major`, 60 + 61 + 1. Clone the fork for `$module` from the list above. 62 + 2. Checkout the active branch, `git checkout nixpkgs/$major`. 63 + 3. Merge the new version into the active branch, 64 + `git merge --no-ff v$version`. 65 + 4. Fix any conflicts. 66 + 5. Open a pull request for the changes. 67 + 6. Follow the instructions above to recreate the module patch in Nixpkgs. 68 + 69 + ### Major Version Updates 70 + 71 + To update module `$module` from `$oldversion` in branch `$oldmajor` to version 72 + `$version` in branch `$major`, 73 + 74 + 1. Clone the fork for `$module` from the list above. 75 + 2. Checkout a new branch for the new major version, 76 + `git checkout -b nixpkgs/$major nixpkgs/$oldmajor`. 77 + 3. Rebase the patches from `$oldversion` onto the new branch, 78 + `git rebase v$oldversion --onto v$version`. 79 + 4. Fix any conflicts. 80 + 5. Open a pull request for the changes. 81 + 6. Follow the instructions above to recreate the module patch in Nixpkgs.