diff --git a/data/catalogue/goke.yml b/data/catalogue/goke.yml index a79c1a1f..8a264ab5 100644 --- a/data/catalogue/goke.yml +++ b/data/catalogue/goke.yml @@ -194,6 +194,7 @@ socs: kernel: '' uboot_filename: u-boot-gk7205v500-nor.bin uboot_nand_filename: u-boot-gk7205v500-nand.bin + nor_split: true linux_filename: openipc.gk7205v500-nor-lite.tgz notes: '' urlname: gk7205v500 @@ -209,8 +210,8 @@ socs: kernel: '' uboot_filename: u-boot-gk7205v510-nor.bin uboot_nand_filename: u-boot-gk7205v510-nand.bin - linux_filename: openipc.gk7205v510-nor-lite.tgz - nand_board: gk7205v500 + nor_split: true + linux_filename: openipc.gk7205v500-nor-lite.tgz notes: '' urlname: gk7205v510 build_status_url: https://github.com/OpenIPC/firmware/actions/workflows/gk7205v500_images.yml/badge.svg @@ -225,6 +226,7 @@ socs: kernel: '' uboot_filename: u-boot-gk7205v530-nor.bin uboot_nand_filename: u-boot-gk7205v530-nand.bin + nor_split: true linux_filename: openipc.gk7205v500-nor-lite.tgz notes: '' urlname: gk7205v530 diff --git a/service/internal/catalogue/catalogue.go b/service/internal/catalogue/catalogue.go index 287ffce0..51b6bb68 100644 --- a/service/internal/catalogue/catalogue.go +++ b/service/internal/catalogue/catalogue.go @@ -30,8 +30,9 @@ type SoC struct { // uknand; run urnand` for every SoC that still boots that way. UBootNANDFilename string `yaml:"uboot_nand_filename"` // NANDBoard is the build name upstream publishes this SoC's NAND - // firmware under, when that is not the NOR one: GK7205V510 has a NOR - // build of its own, but its NAND firmware is the GK7205V500 build. + // firmware under, when that is not the NOR one. No SoC needs it today: + // GK7205V510, which had a NOR build of its own, now installs the + // GK7205V500 build on both. NANDBoard string `yaml:"nand_board"` // NORSplit is a SoC whose firmware ships the split NOR layout, // openipc.-nor--split.tgz: one firmware.bin (a uImage, diff --git a/service/internal/firmware/testdata/boards.json b/service/internal/firmware/testdata/boards.json index d638a83f..dc6f4b3d 100644 --- a/service/internal/firmware/testdata/boards.json +++ b/service/internal/firmware/testdata/boards.json @@ -305,10 +305,10 @@ "urlname": "gk7205v510", "vendor": "Goke", "model": "GK7205V510", - "board": "gk7205v510", + "board": "gk7205v500", "uboot": "u-boot-gk7205v510-nor.bin", "uboot_nand": "u-boot-gk7205v510-nand.bin", - "nor_lite": "openipc.gk7205v510-nor-lite.tgz", + "nor_lite": "openipc.gk7205v500-nor-lite.tgz", "nand_lite": "openipc.gk7205v500-nand-lite.tgz" }, { diff --git a/service/internal/firmware/testdata/release-index.json b/service/internal/firmware/testdata/release-index.json index 57ae29d0..3e506299 100644 --- a/service/internal/firmware/testdata/release-index.json +++ b/service/internal/firmware/testdata/release-index.json @@ -153,10 +153,16 @@ "updated_at": "2026-09-23T18:31:36Z", "release": "nightly-20260923-830fa4c" }, - "openipc.gk7205v510-nor-lite.tgz": { - "size": 6443090, - "digest": "sha256:4a40237a61fa5ba607b7c1ce5c8fa7abe6a95b91001137f5be6de4dbfe895eeb", - "updated_at": "2026-09-23T18:31:39Z", + "openipc.gk7205v500-nor-lite-split.tgz": { + "size": 7133113, + "digest": "sha256:115e0a569d30e06374170080962d506cde4c0c4f436ee59b672353eb820082b9", + "updated_at": "2026-09-23T18:31:35Z", + "release": "nightly-20260923-830fa4c" + }, + "openipc.gk7205v500-nor-ultimate-split.tgz": { + "size": 8654640, + "digest": "sha256:6ad41b0e4fd158f81458c27d4266c99ce1ccfe34cb0286efe0d7505448e0363c", + "updated_at": "2026-09-23T18:31:37Z", "release": "nightly-20260923-830fa4c" }, "openipc.gk7605v100-nor-lite.tgz": { @@ -1419,11 +1425,6 @@ "kernel_kb": 1897, "rootfs_kb": 6980 }, - "gk7205v510-lite": { - "flash_mb": 8, - "kernel_kb": 1897, - "rootfs_kb": 4416 - }, "gk7605v100-lite": { "flash_mb": 8, "kernel_kb": 1856, diff --git a/service/internal/wizard/testdata/documents.json b/service/internal/wizard/testdata/documents.json index c1cb8cb2..ed1ae563 100644 --- a/service/internal/wizard/testdata/documents.json +++ b/service/internal/wizard/testdata/documents.json @@ -1,5 +1,5 @@ { - "combinations": 10788, + "combinations": 10800, "files": { "ak3916ev300": "95a4bfb1fe638dfe8567b7356fdd20aeccaee9891b7453ad03e351cb70670469", "ak3916ev301": "264ff93cb0bc8655b2973eb1a4423631d949e1d6b8e24d18ab5c57b9b14665b5", @@ -31,9 +31,9 @@ "gk7205v200": "91189f0539d10bf27373645c8cb77f28d89a0ca54892bfc12d547e7daf2f4a7d", "gk7205v210": "f3dc3584d8a91954114df24083a59d2b0627a95cbc5620eb39479bfb76b1e834", "gk7205v300": "d839ef7a0752afa630fa9c8303ea38f087f03fcc6b3cb8d8595f942f2595cf75", - "gk7205v500": "c1a561e2d2270d643ccface15233499f931ca735b91b63368e1b298526fa98e6", - "gk7205v510": "1555a335002054e30e2319155eead4fa25469ddadf845d3d418b55634206024a", - "gk7205v530": "73a662d8d94a284159c6bdbb9b28a3ec3ab805d22a47bca059f816d8e72ddba9", + "gk7205v500": "153014abf85ca5d1fc417af1e27c212473c24e79518bdc6fe1ec5002e6adec77", + "gk7205v510": "6e77663649c2dde2a8b6351871906428f450cb4d0e926f27068bcc2fc25d9a3b", + "gk7205v530": "d044e0ff107936c4fa22cf4c223b78316d7ec3641b9e6604df762e0f25a40dc0", "gk7206v10": "1087f9b56bdf07afaa27685364bbcd2a77c1b63dfb016f28845dbd69e36f1e6a", "gk7206v10b": "1c9b76d25e405089e630bf14e3ba7ef39a8185f5537bda9beccbb4c8af446494", "gk7206v11": "7bf2acae0d92d9856e81952e1a15e12c3610a439d3d35a791f8ca7fa2dde7635", diff --git a/service/internal/wizard/wizard_test.go b/service/internal/wizard/wizard_test.go index 704c6af4..b8e81db4 100644 --- a/service/internal/wizard/wizard_test.go +++ b/service/internal/wizard/wizard_test.go @@ -322,32 +322,36 @@ func TestUBINandWithoutItsBootloaderIsNotOffered(t *testing.T) { } } -// GK7205V510 has a NOR build of its own; its NAND firmware is the GK7205V500 -// build (nand_board), and each flash type names its own. -func TestNANDBoardIsUsedForNANDOnly(t *testing.T) { +// GK7205V510 installs the GK7205V500 build on NOR and on NAND alike, as +// defib does: one firmware serves the V500 family. Its bootloaders stay its +// own, and on NOR, where the split package is published, it is the split +// image. +func TestV510InstallsTheV500Build(t *testing.T) { cat, idx := inputs(t) d := decode(t, Document(cat.SoC("gk7205v510"), idx)) - if d["board"] != "gk7205v510" { - t.Errorf("board %v, want the NOR build gk7205v510", d["board"]) + if d["board"] != "gk7205v500" { + t.Errorf("board %v, want the gk7205v500 build", d["board"]) } pool := d["blocks"].(map[string]any) - sawNand := false + seen := map[string]bool{} for _, raw := range d["combinations"].([]any) { c := raw.(map[string]any) - if c["flash_type"] != "nand" { - continue - } - sawNand = true + ft := c["flash_type"].(string) + seen[strings.TrimRight(ft, "0123456789m")] = true var lines []string for _, l := range pool[c["blocks"].(map[string]any)["flashing_linux"].(string)].(map[string]any)["lines"].([]any) { lines = append(lines, l.(string)) } - if all := strings.Join(lines, "\n"); !strings.Contains(all, "rootfs.ubi.gk7205v500") { - t.Errorf("NAND install does not use the gk7205v500 build:\n%s", all) + all := strings.Join(lines, "\n") + if strings.Contains(all, "gk7205v510") || !strings.Contains(all, "gk7205v500") { + t.Errorf("%s install does not use the gk7205v500 build:\n%s", ft, all) + } + if strings.HasPrefix(ft, "nor") && !strings.Contains(all, "firmware.bin.gk7205v500") { + t.Errorf("%s install is not the split image:\n%s", ft, all) } } - if !sawNand { - t.Errorf("no NAND combination for gk7205v510") + if !seen["nor"] || !seen["nand"] { + t.Errorf("combinations cover %v, want nor and nand", seen) } }