AWS cdk print dependency graph - aws-cloudformation

I am using cdk (v1.96.0). Is there a way for me to print the dependency graph of the stacks?
For example, when my cdk app have cyclic references, cdk synth will fail with the following message, which prints out the stack dependency.
Error: 'S3ConsumerStack' depends on 'S3HostStack' ("S3ConsumerStack/Access/Resource" depends on "S3HostStack/test-secret-key/Resource", "S3ConsumerStack/Access/DefaultPolicy/Resource" depends on "S3HostStack/test-secret-key/Resource", "S3ConsumerStack/CDKMetadata/Default" depends on "S3HostStack/test-secret-key/Resource", "S3ConsumerStack/Access/Resource" depends on "S3HostStack/test-secret-key/Alias/Resource", "S3ConsumerStack/Access/DefaultPolicy/Resource" depends on "S3HostStack/test-secret-key/Alias/Resource", "S3ConsumerStack/CDKMetadata/Default" depends on "S3HostStack/test-secret-key/Alias/Resource", "S3ConsumerStack/Access/Resource" depends on "S3HostStack/test_secret/Resource", "S3ConsumerStack/Access/DefaultPolicy/Resource" depends on "S3HostStack/test_secret/Resource", "S3ConsumerStack/CDKMetadata/Default" depends on "S3HostStack/test_secret/Resource", "S3ConsumerStack/Access/Resource" depends on "S3HostStack/EncryptedBucket/Key/Resource", "S3ConsumerStack/Access/DefaultPolicy/Resource" depends on "S3HostStack/EncryptedBucket/Key/Resource", "S3ConsumerStack/CDKMetadata/Default" depends on "S3HostStack/EncryptedBucket/Key/Resource", "S3ConsumerStack/Access/Resource" depends on "S3HostStack/EncryptedBucket/Resource", "S3ConsumerStack/Access/DefaultPolicy/Resource" depends on "S3HostStack/EncryptedBucket/Resource", "S3ConsumerStack/CDKMetadata/Default" depends on "S3HostStack/EncryptedBucket/Resource", "S3ConsumerStack/Access/Resource" depends on "S3HostStack/CDKMetadata/Default", "S3ConsumerStack/Access/DefaultPolicy/Resource" depends on "S3HostStack/CDKMetadata/Default", "S3ConsumerStack/CDKMetadata/Default" depends on "S3HostStack/CDKMetadata/Default"). Adding this dependency (S3HostStack -> S3ConsumerStack/Access/Resource.Arn) would create a cyclic reference.
Is there a way for me to print the entire dependency graph?

Related

malformed record data: github.com/lib/pq#v1.1.0/go.mod

i'm trying to get the go package using command go get gorm.io/driver/postgres
but the result is always like this
go get: gorm.io/driver/postgres#none updating to
gorm.io/driver/postgres#v1.1.0 requires
github.com/jackc/pgx/v4#v4.11.0 requires
github.com/jackc/pgconn#v1.8.1 requires
github.com/jackc/pgmock#v0.0.0-20190831213851-13a1b77aafa2 requires
github.com/jackc/pgtype#v0.0.0-20190828014616-a8802b16cc59 requires
github.com/jackc/pgx/v4#v4.0.0-pre1.0.20190824185557-6972a5742186 requires
github.com/jackc/pgtype#v0.0.0-20190824184912-ab885b375b90 requires
github.com/lib/pq#v1.1.0: verifying go.mod: github.com/lib/pq#v1.1.0/go.mod: malformed record data
i have cleaned my cache and still getting the same error. what should i do? thanks
You have an indirect dependency to [https://github.com/lib/pq/tree/v1.0.0] which has a malformed go mod file. The go version is not mentioned in that. The latest release is v1.10.2. There is nothing to do in your code since its indirect, you can use a version of your direct dependecy gorm.io/driver/postgres which uses an updated version of this lib/pq/tree library or raise an issue in the git for lib/pq/tree.

Buildroot: Allow package to check for kernel feature

Hopefully this will be a simple question to answer: I am trying to add a package to buildroot that requires the kernel BPF syscall feature to be enabled.
If the feature is enabled, everything works fine, if not, the build fails with a marginally unhelpful error. What i would like to do is perform a quick check in the .mk file to see if the feature is present and print out a slightly more user-friendly error if it is not.
I tried adding:
ifneq ($(CONFIG_BPF_SYSCALL),y)
$(error Kernel feature CONFIG_BPF_SYSCALL is required)
endif
But this always seems to trigger as i assume CONFIG_BPF_SYSCALL does not exist in the package build scope. Is there a simple way to access to the kernel config list from a package build env?
Many thanks
It works the other way around: it is the "linux" package in Buildroot that ensures it enables the right options when a given package is enabled and requires some specific kernel features. See linux/linux.mk, which contains things like that:
$(if $(BR2_PACKAGE_KTAP),
$(call KCONFIG_ENABLE_OPT,CONFIG_DEBUG_FS,$(#D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_ENABLE_DEFAULT_TRACERS,$(#D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS,$(#D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_FUNCTION_TRACER,$(#D)/.config))
This ensures that CONFIG_DEBUG_FS, CONFIG_ENABLE_DEFAULT_TRACERS, CONFIG_PERF_EVENTS and CONFIG_FUNCTION_TRACER are enabled in the kernel configuration when the ktap Buildroot is enabled.
Note that this mechanism may be changed in the near future in Buildroot, see the patch series at http://patchwork.ozlabs.org/project/buildroot/list/?series=168565.

In Yocto, how do I specify a version restriction of package A to be the current version of package B?

I want to be able to update my system by installing packages created by Yocto instead of installing the whole image created by it. The objective is to update some software without affecting the system configuration. However, I want to avoid updating a package without updating other runtime dependencies that changed to avoid leaving the system in an inconsistent state.
The approach that I'm following until now is to set version restrictions to package. Suppose I have a layer with recipes A.bb and B.bb that creates packages A and B. I'm using RDEPENDS on A.bb to set package B as a dependency of package A as follows:
RDEPENDS_${PN} = " B (= hard-coded-current-version)"
where hard-coded-current-version is something like 1.1-r1. However, what I want is something like:
RDEPENDS_${PN} = " B (= parametric-current-version)"
where parametric-current-version would be something like ${PE_B}.${PV_B}-${PR_B}.
How do I specify a version restriction of package A to be the current version of package B?

Yocto build succeeds, but warning about missing RDEPENDS

I'm using Yocto to compile my application for my target hardware. The build succeeds, but I get a warning:
WARNING: myApplication-0.0.1-r0 do_package_qa: QA Issue: /usr/local/bin/myApplication contained in package myApplication requires libstdc++.so.6(CXXABI_1.3.3), but no providers found in RDEPENDS_myApplication? [file-rdeps]
I've added everything I can find to both the DEPENDS and RDEPENDS of my application's recipe, but I'm still getting that error.
DEPENDS += "gcc-runtime"
RDEPENDS_${PN} += "libstdc++ libstdc++-dev gcc-runtime"
Is there something I can add to my RDEPENDS to eliminate this warning?
I have also tried these other combinations, all of which resulted in a successful build, and of which give the same warning.
Both DEPENDS and RDEPENDS empty.
RDEPENDS_${PN} += "libstdc++"
RDEPENDS_${PN} += "libstdc++ libstdc++-dev
RDEPENDS_${PN} += "libstdc++ gcc-runtime DEPENDS += "gcc-runtime"
Please try to add
RDEPENDS_${PN} += "libstdc++6"
RDEPENDS needs the output package name which usually is the name of ipk or rpm and
not the recipe name which generated the given output package. Secondly packages containing only libraries also use debian library naming conventions so they get renamed like above.

libmad error in yocto krogoth 2.1.2

I am compiling libmad in yocto-2.1.2 its giving below error.
Nothing PROVIDES 'libmad'libmad was skipped: because it has a restricted license not whitelisted in LICENSE_FLAGS_WHITELIST
How to resove this error. THanks in advance.
I'm compiling libmad for python-pygame recipe in yocto(toaster).
In the libmad recipe, there's a line
LICENSE_FLAGS = "commercial"
which means that you might require a commercial license (depending on jurisdiction etc. This can often be the case for eg media encoders / decoders).
If / when you have solved that issue (either by obtaining a commercial license, or deemed that you don't need one), you should add:
LICENSE_FLAGS_WHITELIST += "commercial_libmad"
in your local.conf or in your distro config.