Skip to content

hi3536dv100: build the closed MPP modules from the SDK's .ko files - #268

Merged
widgetii merged 4 commits into
mainfrom
hi3536dv100-mpp-objs
Oct 16, 2026
Merged

widgetii merged 4 commits into
mainfrom
hi3536dv100-mpp-objs

Conversation

@widgetii

Copy link
Copy Markdown
Member

Problem

#266 brought in hi3536dv100's source modules (OSAL, sys_config, wdt, IR, cipher, tlv320aic31), but not the closed MPP modules. Other families build every closed module here as well:

  • hi3516cv200 and friends from vendor objects;
  • gk7206v100 from vendor .ko files, via scripts/ko2obj.sh and a wrapper per module.

hi3536dv100's MPP modules were still only the prebuilt .ko files in firmware.

Change

scripts/ko2obj.sh fix (eae85c9).

  • The script restores __ksymtab_<sym> names for stripped modules, assuming the 12-byte struct kernel_symbol of 5.x kernels.
  • The Hi3536DV100 SDK ships unstripped modules for a 4.9 kernel, where the struct is 8 bytes. On those it added a duplicate of every export it hit, plus one named after the __ksymtab_strings section, so modpost would see every module exporting __ksymtab_strings.
  • It now restores only when the input has no __ksymtab_ symbols of its own, and never takes a section symbol for an export.
  • Stripped 12-byte inputs, such as gk7206v100's, take the same path as before.

The MPP set (00ca8c6). Built from Hi3536DV100_SDK_V2.0.2.0 mpp/ko, the same release as the mirrored headers and the SDK libmpi:

  • Modules (21): base, sys, vdec, vfmw, jpegd, tde, region, vgs, vpss, vou, hifb, hdmi, venc, chnl, jpege, aio, ai, ao, aenc, adec, hi_acodec.
  • Objects: kernel/obj/hi3536dv100/<mod>.o, each with its .cmd stub.
  • Wrappers: kernel/init/hi3536dv100/<mod>_init.c, each declaring the license its vendor .ko did. vdec and vfmw declare none, which the kernel treats as proprietary anyway.
  • Exports and module parameters survive: each object's __ksymtab_ symbol set matches its .ko's exactly.
  • hi3536dv100.kbuild: a DV100_BLOBS list, the same pattern as gk7206v100's XM_BLOBS. The header now records this part of the SDK too.
  • Not relinked: the SDK's hi_osal.ko and sys_config.ko, because both are built from source.

Testing

Build. All 27 open_*.ko (6 from source, 21 relinked) build against the OpenIPC hi3536dv100 kernel. modpost reports no undefined! and no duplicate exports. Each relinked module depends only on open_osal and open_base, or open_aio for acodec.

Lab Hi3536DV100. OpenIPC hi3536dv100_lite, with the whole set from this tree (21 relinked, plus open_osal and open_wdt from source) installed under the vendor file names and loaded with the SDK V2.0.2.0 libmpi:

  • Loading: load_hisilicon loads all 23. Its module parameters still apply: /sys/module/open_vdec/parameters/VBSource=0, MiniBufMode=0, open_vpss vpss_vb_source=0, open_sys mem_total=256, open_hifb video=hifb:vram0_size:8100,vram1_size:128.
  • MPI: every device node appears, and VB_MmapPool, RGN_Create, VPSS_CreateGrp, VENC_CreateChn and the VDEC calls all return 0.
  • Display: vdec, rebuilt to ask for 3 display buffers (the vendor vou.ko accepts 3–15; stock vdec asks for 2), drives VO at 720P@60 out of VGA and HDMI. /proc/umap/hdmi0 shows HDMIEnable: YES and PhyOutputEnable: YES.
  • OSD: msposd draws on the relinked hifb, ARGB1555 at 1280×720, 133,092 OSD pixels.
  • Kernel log: no oops.

Follow-ups

The script restores __ksymtab_<sym> names for modules a vendor ran
through strip --strip-unneeded, assuming the 12-byte struct
kernel_symbol of 5.x kernels. Hi3536DV100's SDK ships unstripped modules
for a 4.9 kernel, where the struct is 8 bytes. On those it added a
duplicate of every export it hit, and named one after the
__ksymtab_strings section. modpost would then have seen every module
exporting "__ksymtab_strings".

Restore only when the input has no __ksymtab_ symbols of its own, and
never take a section symbol for an export. Stripped 12-byte inputs such
as gk7206v100's take the same path as before.
Every module the SDK ships closed is now built here as well, as for
gk7206v100: base, sys, vdec, vfmw, jpegd, tde, region, vgs, vpss, vou,
hifb, hdmi, venc, chnl, jpege, aio, ai, ao, aenc, adec and hi_acodec,
from Hi3536DV100_SDK_V2.0.2.0 mpp/ko.

scripts/ko2obj.sh turns each .ko into kernel/obj/hi3536dv100/<mod>.o:
init_module is renamed, .modinfo is dropped, and the SDK kernel's
struct module gives way to the one modpost builds. A wrapper in
kernel/init/hi3536dv100/ supplies module_init/exit and the license the
vendor .ko declared. vdec and vfmw declare none, which the kernel treats
as proprietary anyway, so their wrappers say Proprietary. Exports and
module_params survive the relink: each object's __ksymtab_ symbols match
its .ko's exactly.

Built against the OpenIPC hi3536dv100 kernel: 27 open_*.ko, with no
undefined imports and no duplicate exports. On a lab Hi3536DV100 the
whole set (21 relinked, plus open_osal and open_wdt from source), under
the vendor file names:
- loads through load_hisilicon with its module parameters applied
  (vdec VBSource/MiniBufMode, vpss vpss_vb_source, sys mem_total, hifb
  video);
- creates every device node, and the MPI probe returns 0 throughout;
- drives VO at 720P@60 out of VGA and HDMI, with HDMI enabled and the
  PHY up, for a vdec asking for 3 display buffers, the minimum the
  vendor vou accepts;
- shows msposd's OSD on the relinked hifb, ARGB1555 at 1280x720.
No oops.
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Build Hi3536DV100 closed MPP modules from SDK .ko files

✨ Enhancement 🐞 Bug fix 📝 Documentation 🕐 40+ Minutes

Grey Divider

AI Description

• Relink 21 closed Hi3536DV100 MPP modules into the kernel build alongside source-built drivers.
• Preserve vendor exports and parameters through module wrappers, avoiding reliance on
 firmware-provided MPP modules.
• Prevent duplicate exports when converting unstripped 4.x modules; document the new build coverage.
Diagram

graph TD
  SDK["SDK MPP modules"] --> Convert["ko2obj converter"] --> Objects["Relinkable objects"] --> Build["DV100 Kbuild"] --> Modules["open MPP modules"]
  Wrappers["Init wrappers"] --> Build
  OSAL["Source-built OSAL"] --> Modules
Loading
High-Level Assessment

Relinking follows the existing gk7206v100 pattern and lets these modules build against the target kernel alongside source-built OSAL. Retaining firmware-provided .ko files would avoid conversion but would not provide the same in-tree build coverage or address the SDK-kernel module metadata mismatch.

Files changed (45) +582 / -7

Enhancement (22) +549 / -4
hi3536dv100.kbuildRegister 21 relinked MPP modules +22/-4

Register 21 relinked MPP modules

• Adds DV100_BLOBS and links each converted object with its init wrapper. Updates SDK provenance and scope comments while leaving source-built OSAL and sys_config in place.

kernel/hi3536dv100.kbuild

acodec_init.cWrap the vendor hi_acodec module +25/-0

Wrap the vendor hi_acodec module

• Connects the converted acodec object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/acodec_init.c

adec_init.cWrap the vendor audio decoder +25/-0

Wrap the vendor audio decoder

• Connects the converted adec object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/adec_init.c

aenc_init.cWrap the vendor audio encoder +25/-0

Wrap the vendor audio encoder

• Connects the converted aenc object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/aenc_init.c

ai_init.cWrap the vendor audio input module +25/-0

Wrap the vendor audio input module

• Connects the converted ai object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/ai_init.c

aio_init.cWrap the vendor audio I/O module +25/-0

Wrap the vendor audio I/O module

• Connects the converted aio object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/aio_init.c

ao_init.cWrap the vendor audio output module +25/-0

Wrap the vendor audio output module

• Connects the converted ao object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/ao_init.c

base_init.cWrap the vendor MPP base module +25/-0

Wrap the vendor MPP base module

• Connects the converted base object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/base_init.c

chnl_init.cWrap the vendor channel module +25/-0

Wrap the vendor channel module

• Connects the converted chnl object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/chnl_init.c

hdmi_init.cWrap the vendor HDMI module +25/-0

Wrap the vendor HDMI module

• Connects the converted hdmi object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/hdmi_init.c

hifb_init.cWrap the vendor framebuffer module +25/-0

Wrap the vendor framebuffer module

• Connects the converted hifb object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/hifb_init.c

jpegd_init.cWrap the vendor JPEG decoder +25/-0

Wrap the vendor JPEG decoder

• Connects the converted jpegd object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/jpegd_init.c

jpege_init.cWrap the vendor JPEG encoder +25/-0

Wrap the vendor JPEG encoder

• Connects the converted jpege object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/jpege_init.c

region_init.cWrap the vendor region module +25/-0

Wrap the vendor region module

• Connects the converted region object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/region_init.c

sys_init.cWrap the vendor MPP sys module +25/-0

Wrap the vendor MPP sys module

• Connects the converted MPP sys object's init and exit functions to kernel module entry points and declares its proprietary license; this is distinct from source-built sys_config.

kernel/init/hi3536dv100/sys_init.c

tde_init.cWrap the vendor TDE module +25/-0

Wrap the vendor TDE module

• Connects the converted tde object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/tde_init.c

vdec_init.cWrap the vendor video decoder +26/-0

Wrap the vendor video decoder

• Connects the converted vdec object's init and exit functions to kernel module entry points. Explicitly declares the proprietary license treatment implied by the vendor module's absent license metadata.

kernel/init/hi3536dv100/vdec_init.c

venc_init.cWrap the vendor video encoder +25/-0

Wrap the vendor video encoder

• Connects the converted venc object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/venc_init.c

vfmw_init.cWrap the vendor video firmware module +26/-0

Wrap the vendor video firmware module

• Connects the converted vfmw object's init and exit functions to kernel module entry points. Explicitly declares the proprietary license treatment implied by the vendor module's absent license metadata.

kernel/init/hi3536dv100/vfmw_init.c

vgs_init.cWrap the vendor video graphics module +25/-0

Wrap the vendor video graphics module

• Connects the converted vgs object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/vgs_init.c

vou_init.cWrap the vendor video output module +25/-0

Wrap the vendor video output module

• Connects the converted vou object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/vou_init.c

vpss_init.cWrap the vendor video processing module +25/-0

Wrap the vendor video processing module

• Connects the converted vpss object's init and exit functions to kernel module entry points and declares its proprietary license.

kernel/init/hi3536dv100/vpss_init.c

Bug fix (1) +10 / -1
ko2obj.shAvoid reconstructing exports in unstripped modules +10/-1

Avoid reconstructing exports in unstripped modules

• Checks for existing __ksymtab_ symbols before attempting export-name recovery, preventing duplicate exports on unstripped 4.x modules. The stripped-module recovery path also excludes section symbols from export candidates.

scripts/ko2obj.sh

Documentation (1) +2 / -2
README.mdReflect relinked Hi3536DV100 MPP support +2/-2

Reflect relinked Hi3536DV100 MPP support

• Removes the description of Hi3536DV100 MPP modules as prebuilt-only and identifies the build configuration as relinking SDK .ko files.

README.md

Other (21) +21 / -0
.acodec.o.cmdRecord the acodec object as prebuilt +1/-0

Record the acodec object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted acodec object without rebuilding it.

kernel/obj/hi3536dv100/.acodec.o.cmd

.adec.o.cmdRecord the adec object as prebuilt +1/-0

Record the adec object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted adec object without rebuilding it.

kernel/obj/hi3536dv100/.adec.o.cmd

.aenc.o.cmdRecord the aenc object as prebuilt +1/-0

Record the aenc object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted aenc object without rebuilding it.

kernel/obj/hi3536dv100/.aenc.o.cmd

.ai.o.cmdRecord the ai object as prebuilt +1/-0

Record the ai object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted ai object without rebuilding it.

kernel/obj/hi3536dv100/.ai.o.cmd

.aio.o.cmdRecord the aio object as prebuilt +1/-0

Record the aio object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted aio object without rebuilding it.

kernel/obj/hi3536dv100/.aio.o.cmd

.ao.o.cmdRecord the ao object as prebuilt +1/-0

Record the ao object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted ao object without rebuilding it.

kernel/obj/hi3536dv100/.ao.o.cmd

.base.o.cmdRecord the base object as prebuilt +1/-0

Record the base object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted base object without rebuilding it.

kernel/obj/hi3536dv100/.base.o.cmd

.chnl.o.cmdRecord the chnl object as prebuilt +1/-0

Record the chnl object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted chnl object without rebuilding it.

kernel/obj/hi3536dv100/.chnl.o.cmd

.hdmi.o.cmdRecord the hdmi object as prebuilt +1/-0

Record the hdmi object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted hdmi object without rebuilding it.

kernel/obj/hi3536dv100/.hdmi.o.cmd

.hifb.o.cmdRecord the hifb object as prebuilt +1/-0

Record the hifb object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted hifb object without rebuilding it.

kernel/obj/hi3536dv100/.hifb.o.cmd

.jpegd.o.cmdRecord the jpegd object as prebuilt +1/-0

Record the jpegd object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted jpegd object without rebuilding it.

kernel/obj/hi3536dv100/.jpegd.o.cmd

.jpege.o.cmdRecord the jpege object as prebuilt +1/-0

Record the jpege object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted jpege object without rebuilding it.

kernel/obj/hi3536dv100/.jpege.o.cmd

.region.o.cmdRecord the region object as prebuilt +1/-0

Record the region object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted region object without rebuilding it.

kernel/obj/hi3536dv100/.region.o.cmd

.sys.o.cmdRecord the sys object as prebuilt +1/-0

Record the sys object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted MPP sys object without rebuilding it.

kernel/obj/hi3536dv100/.sys.o.cmd

.tde.o.cmdRecord the tde object as prebuilt +1/-0

Record the tde object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted tde object without rebuilding it.

kernel/obj/hi3536dv100/.tde.o.cmd

.vdec.o.cmdRecord the vdec object as prebuilt +1/-0

Record the vdec object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted vdec object without rebuilding it.

kernel/obj/hi3536dv100/.vdec.o.cmd

.venc.o.cmdRecord the venc object as prebuilt +1/-0

Record the venc object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted venc object without rebuilding it.

kernel/obj/hi3536dv100/.venc.o.cmd

.vfmw.o.cmdRecord the vfmw object as prebuilt +1/-0

Record the vfmw object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted vfmw object without rebuilding it.

kernel/obj/hi3536dv100/.vfmw.o.cmd

.vgs.o.cmdRecord the vgs object as prebuilt +1/-0

Record the vgs object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted vgs object without rebuilding it.

kernel/obj/hi3536dv100/.vgs.o.cmd

.vou.o.cmdRecord the vou object as prebuilt +1/-0

Record the vou object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted vou object without rebuilding it.

kernel/obj/hi3536dv100/.vou.o.cmd

.vpss.o.cmdRecord the vpss object as prebuilt +1/-0

Record the vpss object as prebuilt

• Adds the saved-command stub needed for Kbuild to use the converted vpss object without rebuilding it.

kernel/obj/hi3536dv100/.vpss.o.cmd

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Stripped modules can lose their exports ✓ Resolved
Description
ko2obj.sh treats any nm name containing  __ksymtab_ as evidence that export names are intact,
including the non-export section symbol __ksymtab_strings. If a stripped input retains that
section symbol but has lost its local export names, the script skips reconstruction and modules
importing those exports fail modpost's undefined-symbol check.
Code

scripts/ko2obj.sh[62]

+if ! "$NM" "$IN" | grep -q ' __ksymtab_'; then
Evidence
The script documents that stripping removes the local export names needed by modpost. The new
precheck matches __ksymtab_strings, although the reconstruction code explicitly excludes that name
as a non-export; a match bypasses reconstruction and leaves the symbol options empty.

scripts/ko2obj.sh[28-37]
scripts/ko2obj.sh[61-80]
scripts/ko2obj.sh[83-91]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The export-name precheck also accepts `__ksymtab_strings`, which is not an export and can suppress reconstruction for stripped inputs.
## Fix Focus Areas
- scripts/ko2obj.sh[61-80]
## Recommended Fix
Make the `nm` precheck distinguish actual `__ksymtab_<export>` symbols from section symbols, including `__ksymtab_strings`. Keep the existing reconstruction path for inputs without export names.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Re-running the conversion breaks every wrapper but acodec ✓ Resolved
Description
ko2obj.sh only strips xm_/hi_/gk_ from the .ko basename to get ``. So for the SDK's
hi3536dv100_base.ko (and 19 others named hi3536dv100_*.ko) with prefix hi3536dv100, it renames
init_module to _hi3536dv100_hi3536dv100_base_init, while the new wrappers call
_hi3536dv100_base_init. Following the documented flow to regenerate or update these 20 objects
from the SDK gives modules that fail at modpost with undefined init/exit symbols, and nothing in the
tree records how the committed objects were produced.
Code

scripts/ko2obj.sh[R55-62]

+NM=${OBJCOPY%objcopy}nm
# Relocation sections print as 'Relocation section '.rel__ksymtab' at ...';
# the section a symbol goes back into is the name without the quotes and .rel.
+# An unstripped .ko (Hi3536DV100's SDK ships those) still names every entry,
+# so there is nothing to restore -- and on 4.x a struct kernel_symbol is 8
+# bytes, not the 12 assumed below, so guessing would add wrong names.
+syms=
+if ! "$NM" "$IN" | grep -q ' __ksymtab_'; then
Evidence
Line 52 of the script strips only xm_/hi_/gk_, and lines 90-91 build the symbol from
${PREFIX}_${mod}. The wrappers name their vendor sources as hi3536dv100_.ko, yet they call
_hi3536dv100__init, which the script cannot produce from those file names without an undocumented
rename. The kbuild header points readers to scripts/ko2obj.sh as the way to produce these objects.

scripts/ko2obj.sh[51-52]
scripts/ko2obj.sh[84-93]
kernel/init/hi3536dv100/base_init.c[3-10]
kernel/hi3536dv100.kbuild[17-27]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
scripts/ko2obj.sh derives `<mod>` by stripping only xm_/hi_/gk_. Hi3536DV100 SDK modules are named `hi3536dv100_<mod>.ko`, so running the script on them gives `_hi3536dv100_hi3536dv100_<mod>_init`, which doesn't match the wrappers in kernel/init/hi3536dv100/.
## Fix Focus Areas
- scripts/ko2obj.sh[51-52]
- kernel/hi3536dv100.kbuild[17-28]
## Recommended Fix
After the existing prefix strips, also strip the chip prefix: `mod=${mod#${PREFIX}_}`. Update the header comment that says `<mod>` is the basename without xm_/hi_/gk_. If you would rather rename the .ko files before conversion, write the exact command used for each module into the hi3536dv100.kbuild header.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Tip of the day
💡 Did you know, you can pick a display mode instead of tweaking every Display option by hand

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread scripts/ko2obj.sh Outdated
Comment thread scripts/ko2obj.sh Outdated
…on symbols

Two Qodo findings on #268:
- The check for intact export names counted __ksymtab_strings, a
  section symbol, so a stripped input that kept it would have skipped
  the restoration it needs. Only __ksymtab_<sym> names count now.
- Run on the SDK's own file names, the script turned
  hi3536dv100_base.ko into _hi3536dv100_hi3536dv100_base_init, which
  the wrappers do not call. The committed objects had been made from
  renamed copies, and nothing recorded that. A leading "<prefix>_" now
  comes off the module name too, and hi3536dv100.kbuild records the
  loop that regenerates the objects.

Running that loop on the SDK's mpp/ko reproduces all 21 committed
objects byte for byte.
@widgetii
widgetii merged commit e552933 into main Oct 16, 2026
35 checks passed
widgetii added a commit that referenced this pull request Oct 16, 2026
…ll 27 modules

The first run on #267 failed after the kernel had built: the step looked
for the cross compiler in output/host/bin. Firmware builds with per-package
directories, and output/host/ is only assembled at the end of a full
build, so after br-linux alone the toolchain is in
output/per-package/linux/host/bin. The local check had run against a tree
that had finished a full build, which is why it passed.

With #268 in, the verify step lists all 27 modules: the six built from
source, and the 21 closed MPP modules relinked from the SDK's .ko files.
Checked in a layout with only per-package/ and build/, as CI has after
br-linux: both steps pass, with 27 modules found.
widgetii added a commit that referenced this pull request Oct 16, 2026
…ll 27 modules

The first run on #267 failed after the kernel had built: the step looked
for the cross compiler in output/host/bin. Firmware builds with per-package
directories, and output/host/ is only assembled at the end of a full
build, so after br-linux alone the toolchain is in
output/per-package/linux/host/bin. The local check had run against a tree
that had finished a full build, which is why it passed.

With #268 in, the verify step lists all 27 modules: the six built from
source, and the 21 closed MPP modules relinked from the SDK's .ko files.
Checked in a layout with only per-package/ and build/, as CI has after
br-linux: both steps pass, with 27 modules found.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant