Build iodé v4 for bluejay (failing), finally success

I’m new to this and making some progress following the combo of iodé and LOS guides but I can’t unravel this error:

[ 99% 1236/1237] finishing build rules …
FAILED:
build/make/core/artifact_path_requirements.mk:30: warning: device/google/bluejay/lineage_bluejay.mk produces files inside build/make/target/product/generic_system.mks artifact path
requirement.
Offending entries:
system/lib64/libzstd.so
In file included from build/make/core/main.mk:1356:
build/make/core/artifact_path_requirements.mk:30: error: Build failed.
07:38:16 ckati failed with: exit status 1

I’ve opened all four of the mentioned .mk files but I don’t know what the error message is saying!

just one question. Why do you want to build already existing bluejay port?

To learn.

Advice for people who are new to building ROMs is usually to start by building an officially supported device. This helps because it proves your development setup is OK. So when you move on to building for other devices, you know that any problems encountered are with the code for the new device.

I ran onto this error when I was building (for both Lineage for microg and IodéOS) for sunfish . It is caused by the following lines in one of your makefiles

# Enable artifact path requirements checking
PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := strict

In my case it was in file device/google/redfin/aosp_sunfish.mk. For you, it’s probably in device/google/bluejay/lineage_bluejay.mk. If not search for it in the rest of your device makefiles

Comment out that line, and everything should be OK

More information here

Thanks for the hint. Couldn’t find anything in any of the device mk’s with that wording but I did find something similar by following a trail to device/google/gs101/aosp_common.mk

It’s building now but a hell of a lot of warnings (purple). Is that normal?

I’ll let it run and see what happens.

Update: #########################################################################

Build failed after 4+ hours. Difficult to interpret the output running in terminal but I find many types of error logs in ~/android/lineage/out. I focus on the series named “error.log.1” etc. of which the numbered files all seemed to be from a previous build run. The last one named error.log ran to 323 lines, the last line was:

“ERROR: Dex2oat failed to compile a boot image.It is likely that the boot classpath is inconsistent.Rebuild with ART_BOOT_IMAGE_EXTRA_ARGS=”–runtime-arg -verbose:verifier" to see verification errors."

Found something on Stackflow, but not sure about it. Further research into SSE4.2 shows it depends on the pc’s processor as to whether it is present or not.

“Just disable optimization for the sse4.2/popcount in the file ./art/build/Android.bp:”

        host: {
        cflags: [
            // Bug: 15446488. We don't omit the frame pointer to work around
            // clang/libunwind bugs that cause SEGVs in run-test-004-ThreadStress.
            "-fno-omit-frame-pointer",
            // The build assumes that all our x86/x86_64 hosts (such as buildbots and developer
            // desktops) support at least sse4.2/popcount. This firstly implies that the ART
            // runtime binary itself may exploit these features. Secondly, this implies that
            // the ART runtime passes these feature flags to dex2oat and JIT by calling the
            // method InstructionSetFeatures::FromCppDefines(). Since invoking dex2oat directly
            // does not pick up these flags, cross-compiling from a x86/x86_64 host to a
            // x86/x86_64 target should not be affected.
            //"-msse4.2",
            //"-mpopcnt",
        ],
    },

Another update: ###################################################################

Got into a mess attempting to follow the above “fix” so reinstated the original Android.bp file. Checked through the error logs in out and ran the build again.

Surprisingly it succeeded in 16 mins!

So now I’ll have to back up my phone before it gets wiped and take it for a spin.