root/build-tools/stx/patch
Dostoievski Batista 323a9d45b7 Add name option when building the patch
This change add option '--name' to the patch builder
script allowing user to select the desired file name for the
patch file. If the 'name' option is not provided, file name will
default to patch id from the recipe.

Test plan:
    PASS: Build patch with --name option
    e.g: python3 patch_builder --recipe recipe.xml --name filename.patch

    PASS: Build patch without --name option
    e.g: python3 patch_builder --recipe recipe.xml

Story: 2010676
Task: 49858

Change-Id: Ia9b936d44ef83e6ff3d9561b22ae045fb2891f33
Signed-off-by: Dostoievski Batista <dostoievski.albinobatista@windriver.com>
2024-04-11 20:02:40 -03:00
..
EXAMPLES Add pre-check script to the patch 2023-10-27 14:50:31 -03:00
config Add pre-check script to the patch 2023-10-27 14:50:31 -03:00
scripts Add pre-check script to the patch 2023-10-27 14:50:31 -03:00
signing Add patch builder utility 2023-09-29 13:33:46 -04:00
README.md Update patch xml schema to use id and sw_version 2023-10-12 15:26:34 -04:00
fetch_debs.py Add patch builder utility 2023-09-29 13:33:46 -04:00
metadata.py Fix "reboot_required" and "unremovable" values inside metadata 2024-02-05 15:26:05 -03:00
patch_builder.py Add name option when building the patch 2024-04-11 20:02:40 -03:00
requirements.txt Add patch builder utility 2023-09-29 13:33:46 -04:00

README.md

Patch Builder Utility

This utility will build patches based on .deb packages.

Pre reqs

  • Setup a build environment and build all packages/image
  • Make code changes to your packages and build them

Patch recipe schema

The patch builder requires the following tags in the input xml (or patch recipe)

<patch_recipe>
    <!-- Software Version -->
    <sw_version>1.0.0</sw_version>
    <!-- Component -->
    <component>starlingx</component>
    <!-- Summary: Short text to give a summary about the patch -->
    <summary>sample patch test</summary>
    <!-- Description: Patch description. Usually it has a list of fixes -->
    <description>Sample description</description>
    <!-- Install Instructions: Any instructions to be done before the patch installation -->
    <install_instructions>Sample instructions</install_instructions>
    <!-- Warnings: Any warnings that this patch can trigger -->
    <warnings>Sample warning</warnings>
    <!-- Reboot required: Y (Yes) or N (No) for in service patch -->
    <reboot_required>Y</reboot_required>
    <!-- Unremovable: Y (Yes)/ N (No), specifices if the patch can be removed -->
    <unremovable>N</unremovable>
    <!-- Patch Status: Supported values are DEV (development) and REL (released) -->
    <status>DEV</status>
    <!-- Requires: List of patches that are required by this patch -->
    <requires>
        <!--
        <id>PATCH_XYZ_01</id>
        <id>PATCH_XYZ_02</id>
        -->
    </requires>
    <semantics></semantics>
    <!--
        Pre and Post install hook scripts that are executed before/after patch installation.
        Leave if blank if no scripts are required.
    -->
    <pre_install>scripts/pre-install.sh</pre_install>
    <post_install>scripts/post-install.sh</post_install>
    <!-- List Packages to be included in the patch -->
    <stx_packages>
        <!-- Starlingx packages list -->
        <package>sysvinv</package>
        <package>linux</package>
        <package>linux-rt</package>
    </stx_packages>
    <!-- Binary packages list to be included in the patch (Packages that we download from 3rd party sources) -->
    <binary_packages>
        <!-- 3rd party packages list -->
        <package>curl</package>
    </binary_packages>
</patch_recipe>

How to build a patch

  • Enter the builder container
$ stx shell
$ cd $MY_REPO/build-tools/stx/patch
  • Install py requirements
$ pip install -r requirements.txt
  • Update the patch-recipe file. For examples please refer to the EXAMPLES folder.

  • Update any pre/post script. For examples check refer to the scripts folder.

  • Build your patch:

$ ./patch_builder.py --recipe EXAMPLES\patch-recipe-sample.xml