Difference between revisions of "Provisioning-data"

From eLinux.org
Jump to: navigation, search
Line 1: Line 1:
 
This page describes the json schema used by different systems to describe the "build artifacts"
 
This page describes the json schema used by different systems to describe the "build artifacts"
 
that are used to boot a system.  It would be nice to make the different systems interoperable, so
 
that are used to boot a system.  It would be nice to make the different systems interoperable, so
that one system could utilize the build artifacts of another system.
+
that one system could utilize the build artifacts of another system.
  
 
= Fuego =
 
= Fuego =
Line 16: Line 16:
 
}
 
}
  
 +
 +
== NOTES ==
 
This has not been published yet, and can still change in Fuego.
 
This has not been published yet, and can still change in Fuego.
 +
The <path> element is intended to be either a local filesystem path (on the build server) or a URL
 +
where the item can be picked up.
 +
 
Each item includes the URL, and the artifacts can come from different repositories (although in  
 
Each item includes the URL, and the artifacts can come from different repositories (although in  
 
practice the only one of these that comes from somewhere else is the kernel_modules, which  
 
practice the only one of these that comes from somewhere else is the kernel_modules, which  
Line 22: Line 27:
 
local path, not a remote URL.  (That is, currently in Fuego the test server is also the build server.)
 
local path, not a remote URL.  (That is, currently in Fuego the test server is also the build server.)
  
== NOTES ==
+
The kernel version identifier is encoded into every item.
 +
 
 +
Fuego usually takes a fully qualified filename, and converts it to a generic name for the test kernel
 +
for installation alongside other fully-qualified kernel files in grub.
 +
 
 +
e.g. the grub menu looks like:
 +
kernel-5.5-rc5-234567
 +
kernel-5.5-rc5-123456
 +
kernel-test
 +
 
  
 
= Kernel CI =
 
= Kernel CI =
Line 83: Line 97:
 
     "vmlinux_text_size": 23801704
 
     "vmlinux_text_size": 23801704
 
  }
 
  }
 +
 +
== NOTES ==
 +
Build artifacts are located in the same directory as bmeta.json
 +
 +
The names are not fully-qualified, but are generic.  However, there is sufficient information to
 +
make fully-qualified filenames for installation alongside other versions.
  
 
= OE/LKFT =
 
= OE/LKFT =
Line 101: Line 121:
 
  }
 
  }
  
 +
== NOTES ==
 
The artifacts sit in the same directory as the bundle.json file.
 
The artifacts sit in the same directory as the bundle.json file.

Revision as of 07:57, 12 March 2020

This page describes the json schema used by different systems to describe the "build artifacts" that are used to boot a system. It would be nice to make the different systems interoperable, so that one system could utilize the build artifacts of another system.

Fuego

Here is Tim's proposed json schema for provisioning data

{

  "kernel_version": "5.5.0-3996-gb3a508222336",
  "kernel_image": "<path>/boot/vmlinuxz-5.5.0-3996-gb3a508222336",
  "kernel_config": "<path>/boot/config-5.5.0-3996-gb3a508222336",
  "system_map": "<path>/boot/System.map-5.5.0-3996-gb3a508222336",
  "initrd": "<path>/boot/initrd-5.5.0-3996-gb3a508222336",
  "kernel_dtb": "<path>/boot/dtb-5.5.0-3996-gb3a508222336",
  "kernel_modules": "<path>/lib/modules/5.5.0-3996-gb3a508222336"

}


NOTES

This has not been published yet, and can still change in Fuego. The <path> element is intended to be either a local filesystem path (on the build server) or a URL where the item can be picked up.

Each item includes the URL, and the artifacts can come from different repositories (although in practice the only one of these that comes from somewhere else is the kernel_modules, which may have a different path on the local machine. Note that for most Fuego jobs, the path is a local path, not a remote URL. (That is, currently in Fuego the test server is also the build server.)

The kernel version identifier is encoded into every item.

Fuego usually takes a fully qualified filename, and converts it to a generic name for the test kernel for installation alongside other fully-qualified kernel files in grub.

e.g. the grub menu looks like:

kernel-5.5-rc5-234567
kernel-5.5-rc5-123456
kernel-test


Kernel CI

See https://storage.kernelci.org/arm64/for-kernelci/v5.5-rc5-28-gaef73191765a/arm64/allmodconfig/gcc-8/ (now getting a missing page error on this - these seem to rotate out of existence quickly) https://storage.kernelci.org/arm64/for-kernelci/v5.5-rc6-40-ge31626d443db/arm64/allmodconfig/gcc-8/

Directory contents:

Index of /arm64/for-kernelci/v5.5-rc6-40-ge31626d443db/arm64/allmodconfig/gcc-8/
File Name  ↓ 	File Size  ↓ 	Date  ↓ 
Parent directory/	-	-
dtbs/	-	2020-Feb-18 19:58
Image	82.8 MiB	2020-Feb-18 19:59
System.map	6.7 MiB	2020-Feb-18 19:59
bmeta.json	1.3 KiB	2020-Feb-18 19:59
build.log	1.8 MiB	2020-Feb-18 19:59
dtbs.json	12.3 KiB	2020-Feb-18 19:59
kernel.config	283.8 KiB	2020-Feb-18 19:59
modules.tar.xz	165.0 MiB	2020-Feb-18 19:59

Content of bmeta.json:

{
   "arch": "arm64",
   "build_environment": "gcc-8",
   "build_log": "build.log",
   "build_platform": [
       "Linux",
       "f8f143da4156",
       "5.0.0-1023-azure",
       "#24~18.04.1-Ubuntu SMP Wed Oct 2 20:23:29 UTC 2019",
       "x86_64",
       ""
   ],
   "build_threads": 66,
   "build_time": 690.36,
   "compiler": "gcc",
   "compiler_version": "8",
   "compiler_version_full": "aarch64-linux-gnu-gcc (Debian 8.3.0-2) 8.3.0",
   "cross_compile": "aarch64-linux-gnu-",
   "defconfig": "allmodconfig",
   "defconfig_full": "allmodconfig",
   "dtb_dir": "dtbs",
   "file_server_resource": "arm64/for-kernelci/v5.5-rc6-40-ge31626d443db/arm64/allmodconfig/gcc-8",
   "git_branch": "for-kernelci",
   "git_commit": "e31626d443db6933723cf756816cd0af6c9b8d89",
   "git_describe": "v5.5-rc6-40-ge31626d443db",
   "git_describe_v": "v5.5-rc6-40-ge31626d443db",
   "git_url": "git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git",
   "job": "arm64",
   "kconfig_fragments": "",
   "kernel_config": "kernel.config",
   "kernel_image": "Image",
   "modules": "modules.tar.xz",
   "status": "PASS",
   "system_map": "System.map",
   "text_offset": "0x10125000",
   "vmlinux_bss_size": 30488992,
   "vmlinux_data_size": 16478584,
   "vmlinux_file_size": 93008592,
   "vmlinux_text_size": 23801704
}

NOTES

Build artifacts are located in the same directory as bmeta.json

The names are not fully-qualified, but are generic. However, there is sufficient information to make fully-qualified filenames for installation alongside other versions.

OE/LKFT

Daniel provided this json description: https://storage.lkft.org/rootfs/oe-sumo/20200205/juno/bundle.json

Here's the example:

{
 "kernel_config": "config",
 "dtb": "Image--5.5+git0+567f0ad8b0-r0-juno-r2-20200205143101-9.dtb",
 "kernel": "Image--5.5+git0+567f0ad8b0-r0-juno-20200205143101-9.bin",
 "rootfs": {
   "ext4gz": "rpb-console-image-lkft-juno-20200205143101-9.rootfs.ext4.gz",
   "tarxz": "rpb-console-image-lkft-juno-20200205143101-9.rootfs.tar.xz"
 },
 "modules": "modules--5.5+git0+567f0ad8b0-r0-juno-20200205143101-9.tgz",
 "modules_compression": "targz"
}

NOTES

The artifacts sit in the same directory as the bundle.json file.