Recommendations for modifying code

I’m sure it’s that. But even because of this different build system update should just work. But who knows.

That seems to have been the case. Issue returned, got a new usb and have had no problems since.

1 Like

Can someone help me with you to get a build of coreelec with a modified version of libdovi?

I’ve modified the code and created a patch in the same fashion as I’ve been doing for both the linux and kodi components. When I go to build though, I get the error can't find file to patch at input line ....

I’m guess the problem is that, different to the kodi and linux code, there is not a copy of the libdovi code under the build folder to patch. Instead, there is just a libdovi.a. How do I get a new version of this built for coreelec?

Something like

./scripts/clean libdovi
BUILD_FROM_SRC=yes ./scripts/build libdovi
make

Same error.

I changed your last line to

DEVICE=Amlogic-ng make

so it didn’t start building the ne version though and matches what I’ve previously been using.

edit: looks like I need to work out how to modify your second command to work for -ng. Seems to be trying to build a -ne version

You always need DEVICE set when building for ng. For every command.

1 Like

Thanks for the help.

Ok, So adding the device command seems to have worked, after I eventually tracked down which commit was used in the original build the patching seems to now be working.

After running

 DEVICE=Amlogic-ng BUILD_FROM_SRC=yes ./scripts/build libdovi

I’m now stuck with a new error, below is the output from the previous command

CLEAN      libdovi
    *      Removing /home/debian/CoreElec/CoreELEC/build.CoreELEC-Amlogic-ng.arm-20/build/libdovi-3ec01dccbf5a74dfc7c58e3864029187b715344f ...
    *      Removing /home/debian/CoreElec/CoreELEC/build.CoreELEC-Amlogic-ng.arm-20/qa_checks/libdovi-* ...
UNPACK      libdovi
    APPLY PATCH (device)      projects/Amlogic-ce/devices/Amlogic-ng/patches/libdovi/patch.patch
patching file dolby_vision/src/rpu/dovi_rpu.rs
patching file dolby_vision/src/rpu/extension_metadata/blocks/level1.rs
patching file dolby_vision/src/rpu/extension_metadata/blocks/level10.rs
patching file dolby_vision/src/rpu/extension_metadata/blocks/level2.rs
patching file dolby_vision/src/rpu/extension_metadata/blocks/level3.rs
patching file dolby_vision/src/rpu/extension_metadata/blocks/level4.rs
patching file dolby_vision/src/rpu/extension_metadata/blocks/level5.rs
patching file dolby_vision/src/rpu/extension_metadata/blocks/level8.rs
patching file dolby_vision/src/rpu/extension_metadata/mod.rs
patching file dolby_vision/src/rpu/vdr_dm_data.rs
BUILD      cargo (host)
    TOOLCHAIN      manual
install: uninstalling component 'cargo'
install: creating uninstall script at /home/debian/CoreElec/CoreELEC/build.CoreELEC-Amlogic-ng.arm-20/build/cargo-1.67.1/cargo-snapshot/lib/rustlib/uninstall.sh
install: installing component 'cargo'

    cargo installed.

       Fresh pkg-config v0.3.25
       Fresh autocfg v1.1.0
       Fresh libc v0.2.138
       Fresh version_check v0.9.3
       Fresh bitflags v1.3.2
       Fresh cc v1.0.76
       Fresh matches v0.1.8
       Fresh memchr v2.5.0
       Fresh typenum v1.16.0
       Fresh log v0.4.14
       Fresh tinyvec_macros v0.1.0
       Fresh serde_derive v1.0.147
       Fresh tinyvec v1.6.0
       Fresh serde v1.0.147
       Fresh openssl-sys v0.9.72
       Fresh once_cell v1.16.0
       Fresh cfg-if v0.1.10
       Fresh unicode-normalization v0.1.22
       Fresh getrandom v0.2.0
       Fresh unicode-bidi v0.3.4
       Fresh cfg-if v1.0.0
       Fresh percent-encoding v2.1.0
       Fresh lazy_static v1.4.0
       Fresh idna v0.2.0
       Fresh generic-array v0.14.4
       Fresh rand_core v0.6.2
       Fresh aho-corasick v0.7.18
       Fresh form_urlencoded v1.0.1
       Fresh regex-automata v0.1.10
       Fresh os_str_bytes v6.0.0
       Fresh regex-syntax v0.6.26
       Fresh url v2.2.2
       Fresh regex v1.5.6
       Fresh bstr v0.2.17
       Fresh proc-macro-error-attr v1.0.4
       Fresh ryu v1.0.5
       Fresh libnghttp2-sys v0.1.4+1.41.0
       Fresh foreign-types-shared v0.1.1
       Fresh itoa v1.0.2
       Fresh termcolor v1.1.2
       Fresh unicode-ident v1.0.5
       Fresh openssl-probe v0.1.5
       Fresh hashbrown v0.12.3
       Fresh foreign-types v0.3.2
       Fresh proc-macro2 v1.0.46
       Fresh indexmap v1.9.1
       Fresh serde_json v1.0.85
       Fresh proc-macro-error v1.0.4
       Fresh libz-sys v1.1.3
       Fresh curl-sys v0.4.59+curl-7.86.0
       Fresh anyhow v1.0.65
       Fresh io-lifetimes v1.0.2
       Fresh crypto-common v0.1.6
       Fresh block-buffer v0.10.2
       Fresh libssh2-sys v0.2.23
       Fresh atty v0.2.14
       Fresh socket2 v0.4.1
       Fresh same-file v1.0.6
       Fresh subtle v2.4.1
       Fresh strsim v0.10.0
       Fresh linux-raw-sys v0.1.3
       Fresh heck v0.4.0
       Fresh ppv-lite86 v0.2.8
       Fresh digest v0.10.6
       Fresh clap_derive v3.2.18
       Fresh walkdir v2.3.2
       Fresh rand_chacha v0.3.0
       Fresh rustix v0.36.3
       Fresh curl v0.4.44
       Fresh libgit2-sys v0.14.1+1.5.0
       Fresh quote v1.0.21
       Fresh num-traits v0.2.12
       Fresh openssl v0.10.38
       Fresh clap_lex v0.2.2
       Fresh bitmaps v2.1.0
       Fresh filetime v0.2.14
       Fresh fnv v1.0.7
       Fresh fastrand v1.8.0
       Fresh utf8parse v0.1.1
       Fresh remove_dir_all v0.5.3
       Fresh hex v0.3.2
       Fresh textwrap v0.15.0
       Fresh either v1.6.0
       Fresh static_assertions v1.1.0
       Fresh bytes v1.0.1
       Fresh tempfile v3.3.0
       Fresh vte v0.3.3
       Fresh crypto-hash v0.3.4
       Fresh kstring v2.0.0
       Fresh clap v3.2.20
       Fresh itertools v0.10.5
       Fresh combine v4.6.6
       Fresh globset v0.4.9
       Fresh syn v1.0.102
       Fresh ordered-float v2.10.0
       Fresh crc32fast v1.3.2
       Fresh sized-chunks v0.6.4
       Fresh git2 v0.16.0
       Fresh is-terminal v0.4.0
       Fresh crossbeam-utils v0.8.8
       Fresh rand v0.8.5
       Fresh clap_lex v0.3.0
       Fresh rand_xoshiro v0.6.0
       Fresh thread_local v1.1.4
       Fresh toml_datetime v0.5.0
       Fresh jobserver v0.1.24
       Fresh cpufeatures v0.2.5
       Fresh shell-escape v0.1.5
       Fresh humantime v2.0.1
       Fresh hex v0.4.2
       Fresh clap v4.0.15
       Fresh sha1 v0.10.5
       Fresh toml_edit v0.15.0
       Fresh ignore v0.4.18
       Fresh im-rc v15.1.0
       Fresh rustc-workspace-hack v1.0.0 (/home/debian/CoreElec/CoreELEC/build.CoreELEC-Amlogic-ng.arm-20/build/rust-1.67.1/src/tools/rustc-workspace-hack)
       Fresh cargo-util v0.2.3 (/home/debian/CoreElec/CoreELEC/build.CoreELEC-Amlogic-ng.arm-20/build/rust-1.67.1/src/tools/cargo/crates/cargo-util)
       Fresh env_logger v0.10.0
       Fresh flate2 v1.0.23
       Fresh git2-curl v0.17.0
       Fresh serde-value v0.7.0
       Fresh semver v1.0.12
       Fresh http-auth v0.1.6
       Fresh strip-ansi-escapes v0.1.0
       Fresh tar v0.4.38
       Fresh crates-io v0.35.0 (/home/debian/CoreElec/CoreELEC/build.CoreELEC-Amlogic-ng.arm-20/build/rust-1.67.1/src/tools/cargo/crates/crates-io)
       Fresh hmac v0.12.1
       Fresh rustfix v0.6.1
       Fresh opener v0.5.0
       Fresh cargo-platform v0.1.2 (/home/debian/CoreElec/CoreELEC/build.CoreELEC-Amlogic-ng.arm-20/build/rust-1.67.1/src/tools/cargo/crates/cargo-platform)
       Fresh os_info v3.5.0
       Fresh serde_ignored v0.1.2
       Fresh bytesize v1.0.1
       Fresh glob v0.3.0
       Fresh home v0.5.3
       Fresh unicode-xid v0.2.4
       Fresh base64 v0.13.1
       Fresh unicode-width v0.1.10
       Fresh pathdiff v0.2.1
       Fresh lazycell v1.3.0
       Fresh cargo v0.68.0 (/home/debian/CoreElec/CoreELEC/build.CoreELEC-Amlogic-ng.arm-20/build/rust-1.67.1/src/tools/cargo)
    Finished release [optimized] target(s) in 1.29s
BUILD      cargo-c (host)
    TOOLCHAIN      manual
error: package `clap_derive v4.5.5` cannot be built because it requires rustc 1.74 or newer, while the currently active rustc version is 1.67.1
Either upgrade to rustc 1.74 or newer, or use
cargo update -p clap_derive@4.5.5 --precise ver
where `ver` is the latest version of `clap_derive` supporting rustc 1.67.1
FAILURE: scripts/build cargo-c:host during make_host (package.mk)
*********** FAILED COMMAND ***********
cargo build --release --manifest-path ${PKG_BUILD}/Cargo.toml
**************************************
*********** FAILED COMMAND ***********
${SCRIPTS}/build "${p}" "${PARENT_PKG}"
**************************************

You don’t happen to know how to solve that as well?

Apply this patch to bump few packages.

package-bumps-for-libdovi-ce20.patch (10.5 KB)

1 Like

Thanks, what folder exactly do I need to put the patch into? Does it go straight into

CoreELEC\projects\Amlogic-ce\devices\Amlogic-ng\patches

or somewhere else?


edit: worked out you meant to apply the patch the the coreelec repo itself

After a very long time… that did the trick

With the new 5.15 kernel most of the code I am interested in now exists in a new repo GitHub - CoreELEC/common_drivers.

The issue I am having is that creating patches for this repo into \projects\Amlogic-ce\devices\Amlogic-no\patches\common_drivers doesn’t seems to get applied to the build unless I also modify a file from the repo GitHub - CoreELEC/linux-amlogic and create a patch for that repo into \projects\Amlogic-ce\devices\Amlogic-no\patches\linux.

I am also having a similar issue with patching the libdovi package. As well as patching that, I also need to change something for the sake of it in the https://github.com/CoreELEC/xbmc repo and make a patch / delete the stamps file.

Does anyone have any suggestions on how I can more make this workflow better so I don’t need to keep making changes in multiple repos just for the sake of having a change from another repo included in the build

Can someone help with what is the recommended way of updating the repos when you are using making your own builds without having 100’s of merge conflicts? I have to be doing something wrong or more complicated than it needs to be.

Specific example with the main CoreELEC repo. I made a branch from the 20.5 tag. Committed a single patch file for each kodi, libdovi, linux, and media_modules-aml.

Now I want to update that branch to the latest nightly. When I tried to merge the latest commit from the coreelec-21 branch I am getting hundreds of merge conflicts in files I haven’t changed. What am I doing wrong? How should these repos be kept up-to date?

You can’t merge 20.5 into 21.

You can only start with latest CE-21 HEAD and pick your commits from CE-20.

1 Like

Thanks,

What about the other repos? linux-amlogic, xbmc, and media_modules-aml can I merge from them? Or will I need also need to do the same process?

And for the future, how can I tell myself what versions of the different repos can be merged, and when it is needed to start again?

@vpeter Can you help me out getting libdovi built on the latest coreelec-21 branch?

After running DEVICE=Amlogic-ng ./scripts/clean libdovi and then

 DEVICE=Amlogic-ng BUILD_FROM_SRC=yes ./scripts/build libdovi

I get the following error

UNPACK      libdovi
BUILD      cargo-c (host)
    TOOLCHAIN      manual
error: package `orion v0.17.7` cannot be built because it requires rustc 1.80 or newer, while the currently active rustc version is 1.76.0
Either upgrade to rustc 1.80 or newer, or use
cargo update orion@0.17.7 --precise ver
where `ver` is the latest version of `orion` supporting rustc 1.76.0
FAILURE: scripts/build cargo-c:host during make_host (package.mk)
*********** FAILED COMMAND ***********
cargo build --release --manifest-path ${PKG_BUILD}/Cargo.toml
**************************************
*********** FAILED COMMAND ***********
${SCRIPTS}/build "${p}" "${PARENT_PKG}"
**************************************

Is not required on Amlogic-ng as it does support FEL OOTB.

For -J devices …

Are you saying it is not longer in the code? The package still appears to be there to me, just can’t seem to build it from source due to the outdated rust version

You will only need libdovi for -J devices as it’s only for DV handling.
Package is still there as Amlogic-ne, 5.4 kernel still need libdovi.

Well only needing it for -J devices is a choice the CE team have chosen to make and not a fundamental limitation.


In any case, can I reframe my question, similar to the patch previously provided in this post, is it possible to update the rust version for the coreelec-21 ng builds?

I’d do it myself, but I don’t have the slightest clue about how to make that patch

Then you will need to work it out by yourself. Only -J do support DV by license.
If no license is used the playback will fallback with metadata like HDR10 and therefor you don’t need libdovi at all.

CE-21 is able to build libdovi package, no idea what your problem is.
In Amlogic-ng support of libdovi was removed after 21.1.1 release as there is no need for.