From e3a94b4074522429b517e3610a517139a92edfdd Mon Sep 17 00:00:00 2001 From: Thomas Walzer Date: Wed, 13 Jan 2021 12:45:36 +0100 Subject: [PATCH] Added Create a Custom Recipe Signed-off-by: Thomas Walzer Change-Id: Ice9a0c4bf385e4a2af5c0e88a1c0d18a1c6ceb74 Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/documentation/+/25899 Reviewed-by: Jan-Simon Moeller Tested-by: Jan-Simon Moeller Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/documentation/+/26223 --- .../4_Creating_a_custom_recipe.md | 49 +++++++++++++++++++++ docs/3_Developer_Guides/images/AGL_add_recipe.png | Bin 0 -> 27062 bytes 2 files changed, 49 insertions(+) create mode 100644 docs/3_Developer_Guides/4_Creating_a_custom_recipe.md create mode 100644 docs/3_Developer_Guides/images/AGL_add_recipe.png diff --git a/docs/3_Developer_Guides/4_Creating_a_custom_recipe.md b/docs/3_Developer_Guides/4_Creating_a_custom_recipe.md new file mode 100644 index 0000000..f8650e8 --- /dev/null +++ b/docs/3_Developer_Guides/4_Creating_a_custom_recipe.md @@ -0,0 +1,49 @@ +--- +title: Creating a Custom Recipe +--- + + +For adding a custom linux software/service like cannelloni you have to do the following steps: + +1. Add repo via devtool (gitrepo stands for the url) + + ``` + devtool add gitrepo + ``` +2. Try to bitbake, if it is working go to step 3 + + ``` + bitbake packagename (gitrepo name) + ``` + If it is not working you can do (repeating) following steps until it is working + + 1. change/modify the recipe in /workspace/recipe/packagename + 2. change/modify the sources in /workspace/sources/packagename + 3. bitbake packagename + + Now update the recipe, if you do this the first time you have to adapt the license and the LIC-File-Checksum + + ``` + devtool update-recipce packagename + ``` + +3. Build the recipe and image with devtool + + ``` + devtool build packagename + devtool build-image agl-demo-platform + ``` + + If that is working you could add it to git/gerrit. You have to add your recipe to a layer. + + 1. Copy files to the recipe + 2. add recipe to a packagegroup + +4. Git + + ``` + git review + git review -s + git remote -v update + ``` +![Build recipe](images/AGL_add_recipe.png) \ No newline at end of file diff --git a/docs/3_Developer_Guides/images/AGL_add_recipe.png b/docs/3_Developer_Guides/images/AGL_add_recipe.png new file mode 100644 index 0000000000000000000000000000000000000000..ff391bf1cd65f8eabd7f5267204c2b519fab0220 GIT binary patch literal 27062 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