diff --git a/index.rst b/index.rst index a3ea21aab739338525bd83349e613d63dd4c6c52..c8c934732e3c7a99344530f7dafa5dedb70bbafe 100644 --- a/index.rst +++ b/index.rst @@ -88,6 +88,7 @@ daily life. oniro/fallback-devices-support oniro/debug-mode + oniro/update-tool .. toctree:: :caption: Contribute diff --git a/oniro/index.rst b/oniro/index.rst index df3f3a0c2f2b5c3aebf69001d4d351ddde938d65..c25d6c26e072325ed0e3cbb0139072b1f3dd485e 100644 --- a/oniro/index.rst +++ b/oniro/index.rst @@ -52,3 +52,4 @@ Build System Guide fallback-devices-support debug-mode + update-tool diff --git a/oniro/update-tool.rst b/oniro/update-tool.rst new file mode 100644 index 0000000000000000000000000000000000000000..03e7e1bb26df1b4fa7daa0239ffea4a8e1256dab --- /dev/null +++ b/oniro/update-tool.rst @@ -0,0 +1,116 @@ +.. SPDX-FileCopyrightText: Linaro Ltd +.. +.. SPDX-License-Identifier: CC-BY-4.0 + +.. include:: definitions.rst + +.. _UpdateTool: + +(EXPERIMENTAL) Update Tool +########################## + +While developing a product based on |main_project_name|, developers add layers, +configuration options and more. To make sure they follow the latest bugfixes and +security fixes, developers should have a way to easily update their development +to the latest |main_project_name| version. The update tool (currently experiemental) +allows exactly that. + +Assumptions +*********** + +The tool assumes that users do not modify upstream layers delivered +with |main_project_name|. Instead, they perform all changes in their own layers using +new recipes and .bbappend files. + +Users are expected to modify their bblayers.conf and local.conf, those files will be +updated, carrying forward changes done by the user. + +.. Note:: + + When using the update tool, all modifications done directly on layers delivered with + |main_project_name| will be overwritten. They are still available in the backup + created by the tool before the update. Please move them to additional layers. + Please refer to [the Yocto Project best practices](https://docs.yoctoproject.org/dev-manual/common-tasks.html#following-best-practices-when-creating-layers) + for more information how to create your own layers. + +Usage +***** + +The script includes help allowing to use different options: + +.. code-block:: console + + $ python3 ./oniro/scripts/upgrade_oniro/upgrade_oniro.py --help + usage: upgrade_oniro.py [-h] {build,upgrade,backup,restore} ... + + [WIP] A tool to upgrade to a newer version of Oniro + + positional arguments: + {build,upgrade,backup,restore} + build Build target with current Oniro setup. + upgrade Upgrade Oniro. + backup Backup Oniro manually. + restore Restore a local backup. + + options: + -h, --help show this help message and exit + + +Most users will use the `upgrade` command. It accepts a number of parameters. Out of +the list, the most important are `-tv` (target version) allowing to specify the target +branch or release (for example `kirkstone`), `-f` specifying the flavour (linux by default). +The user should also specify the build directory which will be used to collect the +configuration files and build the new version (if requested), and the |main_project_name| +repository path, without the `oniro` directory name. + +An example upgrade command log is shown below. It is an upgrade from `2.0.0-alpha2` +tag to the latest version of the `kirkstone` branch. The log includes a complete list of +files changed between the two versions. The script asks some interactive questions, +for example if the user wants to perform a build of the updated image. + +.. code-block:: console + + $ python3 ./oniro/scripts/upgrade_oniro/upgrade_oniro.py upgrade -tv kirkstone -f linux /home/oniro/oniro-to-update/build-oniro-linux/ /home/oniro/oniro-to-update/ + In case of errors in the procedure, or if you want to revert the update, it's possibile to restore a previous backup + .gitignore | 1 + + .gitlab-ci.yml | 638 +- + .gitlab/issue_templates/Bug.md | 2 +- + .oniro-ci/build-generic.yaml | 166 +- + .oniro-ci/containers/bitbake-builder/.gitconfig | 4 +- + [...] + scripts/cve-diff.py (new) | 322 + + scripts/cve-report.py (new) | 177 + + scripts/recipes-with-no-cves.py (new) | 125 + + scripts/upgrade_oniro/upgrade_oniro.py (new +x) | 901 + + scripts/upgrade_oniro/upgrade_oniro_utils.py (new) | 442 + + 337 files changed, 39981 insertions(+), 1422 deletions(-) + + The above changes will be applied, do you want to continue? [y/n] + y + Previous HEAD position was 47c36be Bump release to version 2.0.0-alpha2 + Switched to branch 'kirkstone' + + Your branch is up to date with 'origin/kirkstone'. + + Fetching: 100% (22/22), done in 35.843s + Garbage collecting: 100% (22/22), done in 0.311s + + Thank you for building a development version of Oniro Project. + This manifest file automatically follows changes in certain + layers and is suitable for development of Oniro Project itself. + + Check out Oniro Project documentation at https://docs.oniroproject.org + + Chat with community in Oniro online's IRC channel as explained at: + https://docs.oniroproject.org/en/latest/community-chat-platform.html + or directly join to the #oniro channel at https://libera.chat + + Do you wish to update the .bbappend files in your own custom layers? [y/n] + y + Updating bblayers...Done + Updating oniro.inc if necessary...Done + Removing build-oniro-linux/tmp + Would you like to build the target image? [y/n] + n + build-oniro-linux/conf/bblayers.conf has been updated + /home/oniro/oniro-to-update/oniro/meta-oniro-core/conf/distro/include/oniro.inc has been updated