Date   

Re: QA cycle report for 2.7 M2 RC1

Richard Purdie
 

On Fri, 2019-02-08 at 04:38 +0000, Jain, Sangeeta wrote:
This is the full report for 2.7 M2 RC1:

https://wiki.yoctoproject.org/wiki/WW01_-_2019-01-28_-_Full_Test_Cycle_2.7_M2_RC1

======= Summary ========

All planned tests were executed.
Total Test Executed - 3629
Passed Test - 3613
Failed Test - 16


There were zero high milestone defect. Team had found 3 new defects
in BSP[1], Compliance [2] and OE-Core[3].
5 existing issues were observed in this release.

For ptest, there is a drop in percentage of pass rate for 3 modules:
nettle, perl and valgrind. Bugs are reported for Nettle [4] and Perl
[5]. For Valgrind, no bug is filed, since there is a decrease in
percentage but no failures as compared to previous results.
Thanks!

The perl regressions are fairly serious, but understandable given the
large changes we made to perl in M2. I'm therefore torn on whether we
let rc1 release, or we respin an rc2 based on current master. Any
opinions?

Current master does fix perl (bugs 13160, 13161, 13154), it also has a
key toaster fix for thud.

Cheers,

Richard


Re: cmake / <string> no such file or directory ??!

Fernando AE <fernando.ae2017@...>
 

Hello Guy,I would also say that something is strange with the
"AUTOINC" in your file paths, unless you set a variable like that on
purpose.

Regards,
Fernando

On Tue, Feb 5, 2019 at 10:23 AM Guy Morand <guy@guy-morand.ch> wrote:

Sorry Yocto developers!

I have found the issue, in my CMakeLists.txt, I changed this:
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Werror")

to this:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror")

Now it works like a charm, stupid me :D! Sorry for all the noise!

Best regards,

Guy Morand

On 2/5/19 8:21 AM, Guy Morand wrote:

Hello Yocto developpers!

I'm facing a weird problem that seems very strange. I can
cross-compile a project based on cmake with the generated Yocto SDK.

However, after adding a recipe, the compilation fails:
/mnt/ssd/yocto-build-script/build/tmp/work/cortexa7t2hf-neon-poky-linux-gnueabi/communication-library/git-AUTOINC+f5cd493ce5-r0/recipe-sysroot-native/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
-Dcommunication_interface_EXPORTS
-I/mnt/ssd/yocto-build-script/build/tmp/work/cortexa7t2hf-neon-poky-linux-gnueabi/communication-library/git-AUTOINC+f5cd493ce5-r0/git/library
-Wall -Wextra -Werror -fPIC -std=gnu++11 -MD -MT
CMakeFiles/communication-interface.dir/communication_interface.cpp.o
-MF
CMakeFiles/communication-interface.dir/communication_interface.cpp.o.d
-o
CMakeFiles/communication-interface.dir/communication_interface.cpp.o
-c
/mnt/ssd/yocto-build-script/build/tmp/work/cortexa7t2hf-neon-poky-linux-gnueabi/communication-library/git-AUTOINC+f5cd493ce5-r0/git/communication_interface.cpp
| In file included from
/mnt/ssd/yocto-build-script/build/tmp/work/cortexa7t2hf-neon-poky-linux-gnueabi/communication-library/git-AUTOINC+f5cd493ce5-r0/git/communication_interface.cpp:1:
|
/mnt/ssd/yocto-build-script/build/tmp/work/cortexa7t2hf-neon-poky-linux-gnueabi/communication-library/git-AUTOINC+f5cd493ce5-r0/git/library/communication_interface.h:4:10:
fatal error: string: No such file or directory
| #include <string>
| ^~~~~~~~
| compilation terminated.

I also tried to change the cmake generator to unix makefile (who knows
...):
OECMAKE_GENERATOR = "Unix Makefiles"

But I have the same issue. I am working on the thud branch. Anyone had
the same problem? What am I doing wrong?

Best regards,

Guy Morand
--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


QA cycle report for 2.7 M2 RC1

Sangeeta Jain
 

Hello All,

 

This is the full report for 2.7 M2 RC1:

 

https://wiki.yoctoproject.org/wiki/WW01_-_2019-01-28_-_Full_Test_Cycle_2.7_M2_RC1

 

======= Summary ========

 

All planned tests were executed.

Total Test Executed - 3629

Passed Test - 3613

Failed Test - 16

 

 

There were zero high milestone defect.  Team had found 3 new defects in BSP[1], Compliance [2] and  OE-Core[3].

5 existing issues were observed in this release.

 

For ptest, there is a drop in percentage of pass rate for 3 modules: nettle, perl and valgrind. Bugs are reported for Nettle [4] and Perl [5]. For Valgrind, no bug is filed, since there is a decrease in percentage but no failures as compared to previous results.

 

======= QA-Hints========

 

  1. No high milestone defect. 
  2. For performance test results, this time there is a new machine “pokybuild at perf-centos7.yoctoproject.org” introduced in performance test results from Yocto-perf mailing list. And results from “Yocto CentOS 7 Build Perf Tester” is missing for this release. Hence, the comparison between results from two “centos7” machines shows huge differences.

 

======= Bugs ========

 

New Bugs

[1] Bug 13153 – [2.7 M2 RC1] Systemtap doesn't work on beaglebone

https://bugzilla.yoctoproject.org/show_bug.cgi?id=13153

 

[2] Bug 13160 – [2.7_m2_rc1][compliance test][LSB Test] "Failed to load module Core_test.pm, samba_test.pm", LSB Test has failed"

https://bugzilla.yoctoproject.org/show_bug.cgi?id=13160

 

[3] Bug 13161 – [2.7 M2 RC1] Perl can not handle signals

https://bugzilla.yoctoproject.org/show_bug.cgi?id=13161

 

ptest Bugs:

 

[4] Bug 13155 - [2.7 M2 RC1] nettle ptest failure

https://bugzilla.yoctoproject.org/show_bug.cgi?id=13155

 

 

[5] Bug 13154 - [2.7 M2 RC1] perl ptest failure

https://bugzilla.yoctoproject.org/show_bug.cgi?id=13154

 

 

Previous Bugs observed in this release:

 

[6] Bug 13102 - [Bug][QA 2.7 M1 rc1][Toaster] All layers are not getting populated after clicking "View compatible layers" on project page

https://bugzilla.yoctoproject.org/show_bug.cgi?id=13102

 

[7] Bug 13103 - [Bug][QA 2.7 M1 rc1][Toaster] "Recipes" table  and  "machines" table are not getting populated after clicking on imported layer as well as after clicking Machines Tab on project page

https://bugzilla.yoctoproject.org/show_bug.cgi?id=13103

 

[8] Bug 13104 - [Bug][QA 2.7 M1 rc1][Toaster] All "Image Recipes" are not getting populated after clicking  "Image Recipes"  on project page

https://bugzilla.yoctoproject.org/show_bug.cgi?id=13104

 

[9] Bug 12991 - [Bug] [2.6 M4 RC1][Build-Appliance] Bitbake build-appliance-image getting failed during building image due to webkitgtk package.

https://bugzilla.yoctoproject.org/show_bug.cgi?id=12991

 

[10] Bug 12499 - [Bug] [2.5 M1 RC3] qemuarm: failed to shutdown.

https://bugzilla.yoctoproject.org/show_bug.cgi?id=12499

 

 

 

Thanks & Regards,

Sangeeta Jain


Re: [OE-core] [PATCH 1/3] opkg: add --ignore-recommends flag

Scott Rifenbark <srifenbark@...>
 



On Thu, Feb 7, 2019 at 9:44 AM Alejandro Del Castillo <alejandro.delcastillo@...> wrote:


On 2/7/19 11:36 AM, Scott Rifenbark wrote:
> This change looks like it impacts documentation (i.e.
> https://yoctoproject.org/docs/2.7/ref-manual/ref-manual.html#var-BAD_RECOMMENDATIONS
> When will this change go into effect?

I believe it doesn't. It is refactoring the opkg implementation to
leverage a new opkg feature (--add-ignore-recommends), which is a more
robust implementation. Should be transparent to users.

Thank you for the clarification... I thought it might be a user option.


> On Thu, Feb 7, 2019 at 7:58 AM Alejandro del Castillo
> <alejandro.delcastillo@... <mailto:alejandro.delcastillo@...>> wrote:
>
>     To be used for BAD_RECOMMENDATIONS feature.
>
>     Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@...
>     <mailto:alejandro.delcastillo@...>>
>     ---
>       ...pkg-add-add-ignore-recommends-option.patch | 259 ++++++++++++++++++
>       meta/recipes-devtools/opkg/opkg_0.4.0.bb
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg-5F0.4.0.bb&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=JvgzuAyAoVrkeSZAdWZUuIsFWQ8okApbCk1iiF13CDc&e=>
>          |   1 +
>       2 files changed, 260 insertions(+)
>       create mode 100644
>     meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch
>
>     diff --git
>     a/meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch
>     b/meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch
>     new file mode 100644
>     index 0000000000..47d1b3c37e
>     --- /dev/null
>     +++
>     b/meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch
>     @@ -0,0 +1,259 @@
>     +From 64aa98646a17c299bf37af2975b98daf5d7d30b4 Mon Sep 17 00:00:00 2001
>     +From: Alejandro del Castillo <alejandro.delcastillo@...
>     <mailto:alejandro.delcastillo@...>>
>     +Date: Thu, 31 Jan 2019 18:16:08 -0600
>     +Subject: [PATCH] libopkg: add --add-ignore-recommends option
>     +
>     +Add option to ignore specific recommended packages. On the libsolv
>     +backed, this feature will only work on libsolv version > 0.7.2 [1].
>     +
>     +[1]
>     https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openSUSE_libsolv_issues_254&d=DwIBaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=GObNHzFJpWpf_PripIrf-K2RhsktYdAUEieAJexXOKw&s=3G-meChUqClFggFPqsrAxIZBfLnRKIHm62Uuy1X6nQQ&e=
>     +
>     +Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@...
>     <mailto:alejandro.delcastillo@...>>
>     +
>     +Upstream-Status: Accepted
>     +---
>     + libopkg/opkg_conf.c                           |  2 +
>     + libopkg/opkg_conf.h                           |  1 +
>     + .../solvers/internal/pkg_depends_internal.c   |  3 +-
>     + libopkg/solvers/libsolv/opkg_solver_libsolv.c | 21 ++++++-
>     + man/opkg.1.in
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg.1.in&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=8yIWRVT6JV0YnkHzVgeo8pAkiFPM4xz8y9APvxobmhY&e=>
>                                     |  3 +
>     + src/opkg.c                                    |  6 ++
>     + tests/Makefile                                |  1 +
>     + tests/core/43_add_ignore_recommends.py        | 62 +++++++++++++++++++
>     + 8 files changed, 97 insertions(+), 2 deletions(-)
>     + create mode 100755 tests/core/43_add_ignore_recommends.py
>     +
>     +diff --git a/libopkg/opkg_conf.c b/libopkg/opkg_conf.c
>     +index 06880a1..f2330cd 100644
>     +--- a/libopkg/opkg_conf.c
>     ++++ b/libopkg/opkg_conf.c
>     +@@ -597,6 +597,7 @@ int opkg_conf_init(void)
>     +     pkg_dest_list_init(&opkg_config->tmp_dest_list);
>     +     nv_pair_list_init(&opkg_config->arch_list);
>     +     str_list_init(&opkg_config->exclude_list);
>     ++    str_list_init(&opkg_config->ignore_recommends_list);
>     +
>     +     return 0;
>     + }
>     +@@ -938,6 +939,7 @@ void opkg_conf_deinit(void)
>     +     pkg_dest_list_deinit(&opkg_config->pkg_dest_list);
>     +     nv_pair_list_deinit(&opkg_config->arch_list);
>     +     str_list_deinit(&opkg_config->exclude_list);
>     ++    str_list_deinit(&opkg_config->ignore_recommends_list);
>     +
>     +     if (opkg_config->verbosity >= DEBUG) {
>     +         hash_print_stats(&opkg_config->pkg_hash);
>     +diff --git a/libopkg/opkg_conf.h b/libopkg/opkg_conf.h
>     +index eb56a29..316c500 100644
>     +--- a/libopkg/opkg_conf.h
>     ++++ b/libopkg/opkg_conf.h
>     +@@ -61,6 +61,7 @@ typedef struct opkg_conf {
>     +     pkg_dest_list_t tmp_dest_list;
>     +     nv_pair_list_t arch_list;
>     +     str_list_t exclude_list;
>     ++    str_list_t ignore_recommends_list;
>     +
>     +     int restrict_to_default_dest;
>     +     pkg_dest_t *default_dest;
>     +diff --git a/libopkg/solvers/internal/pkg_depends_internal.c
>     b/libopkg/solvers/internal/pkg_depends_internal.c
>     +index cd56d84..5deee70 100644
>     +--- a/libopkg/solvers/internal/pkg_depends_internal.c
>     ++++ b/libopkg/solvers/internal/pkg_depends_internal.c
>     +@@ -228,7 +228,8 @@ int
>     pkg_hash_fetch_unsatisfied_dependencies(pkg_t *pkg,
>     +                             || compound_depend->type == SUGGEST)
>     +                         && (satisfying_pkg->state_want == SW_DEINSTALL
>     +                             || satisfying_pkg->state_want == SW_PURGE
>     +-                            || opkg_config->no_install_recommends);
>     ++                            || opkg_config->no_install_recommends
>     ++                            ||
>     str_list_contains(&opkg_config->ignore_recommends_list,
>     satisfying_pkg->name));
>     +                 if (ignore) {
>     +                     opkg_msg(NOTICE,
>     +                              "%s: ignoring recommendation for "
>     +diff --git a/libopkg/solvers/libsolv/opkg_solver_libsolv.c
>     b/libopkg/solvers/libsolv/opkg_solver_libsolv.c
>     +index 2b27e3a..403e07b 100644
>     +--- a/libopkg/solvers/libsolv/opkg_solver_libsolv.c
>     ++++ b/libopkg/solvers/libsolv/opkg_solver_libsolv.c
>     +@@ -484,6 +484,7 @@ static void pkg2solvable(pkg_t *pkg, Solvable
>     *solvable_out)
>     + static void populate_installed_repo(libsolv_solver_t *libsolv_solver)
>     + {
>     +     int i;
>     ++    Id what;
>     +
>     +     pkg_vec_t *installed_pkgs = pkg_vec_alloc();
>     +
>     +@@ -507,6 +508,15 @@ static void
>     populate_installed_repo(libsolv_solver_t *libsolv_solver)
>     +         /* set solvable attributes */
>     +         pkg2solvable(pkg, solvable);
>     +
>     ++        /* if the package is in ignore-recommends-list, disfavor
>     installation */
>     ++        if
>     (str_list_contains(&opkg_config->ignore_recommends_list, pkg->name)) {
>     ++            opkg_message(NOTICE, "Disfavor package: %s\n",
>     ++                         pkg->name);
>     ++            what = pool_str2id(libsolv_solver->pool, pkg->name, 1);
>     ++            queue_push2(&libsolv_solver->solver_jobs,
>     SOLVER_SOLVABLE_NAME
>     ++                        | SOLVER_DISFAVOR, what);
>     ++        }
>     ++
>     +         /* if the package is not autoinstalled, mark it as user
>     installed */
>     +         if (!pkg->auto_installed)
>     +             queue_push2(&libsolv_solver->solver_jobs, SOLVER_SOLVABLE
>     +@@ -539,7 +549,7 @@ static void
>     populate_available_repos(libsolv_solver_t *libsolv_solver)
>     + {
>     +     int i;
>     +     Solvable *solvable;
>     +-    Id solvable_id;
>     ++    Id solvable_id, what;
>     +
>     +     pkg_vec_t *available_pkgs = pkg_vec_alloc();
>     +
>     +@@ -608,6 +618,15 @@ static void
>     populate_available_repos(libsolv_solver_t *libsolv_solver)
>     +         solvable = pool_id2solvable(libsolv_solver->pool,
>     solvable_id);
>     +         pkg2solvable(pkg, solvable);
>     +
>     ++        /* if the package is in ignore-recommends-list, disfavor
>     installation */
>     ++        if
>     (str_list_contains(&opkg_config->ignore_recommends_list, pkg->name)) {
>     ++            opkg_message(NOTICE, "Disfavor package: %s\n",
>     ++                         pkg->name);
>     ++            what = pool_str2id(libsolv_solver->pool, pkg->name, 1);
>     ++            queue_push2(&libsolv_solver->solver_jobs,
>     SOLVER_SOLVABLE_NAME
>     ++                        | SOLVER_DISFAVOR, what);
>     ++        }
>     ++
>     +         /* if the --force-depends option is specified make
>     dependencies weak */
>     +         if (opkg_config->force_depends)
>     +             queue_push2(&libsolv_solver->solver_jobs, SOLVER_SOLVABLE
>     +diff --git a/man/opkg.1.in
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg.1.in&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=8yIWRVT6JV0YnkHzVgeo8pAkiFPM4xz8y9APvxobmhY&e=>
>     b/man/opkg.1.in
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg.1.in&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=8yIWRVT6JV0YnkHzVgeo8pAkiFPM4xz8y9APvxobmhY&e=>
>     +index 27fa9c1..f192c3b 100644
>     +--- a/man/opkg.1.in
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg.1.in&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=8yIWRVT6JV0YnkHzVgeo8pAkiFPM4xz8y9APvxobmhY&e=>
>     ++++ b/man/opkg.1.in
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg.1.in&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=8yIWRVT6JV0YnkHzVgeo8pAkiFPM4xz8y9APvxobmhY&e=>
>     +@@ -162,6 +162,9 @@ priority \fIprio\fP. Lower priorities take
>     precedence.
>     + \fB\--add-exclude <\fIname\fP>\fR
>     + Register package to be excluded from install
>     + .TP
>     ++\fB\--add-ignore-recommends <\fIname\fP>\fR
>     ++Register package to be ignored as a recomendee
>     ++.TP
>     + \fB\--prefer-arch-to-version\fR
>     + Use the architecture priority package rather than the higher version
>     + one if more than one candidate is found.
>     +diff --git a/src/opkg.c b/src/opkg.c
>     +index 650e278..3c93a3b 100644
>     +--- a/src/opkg.c
>     ++++ b/src/opkg.c
>     +@@ -51,6 +51,7 @@ enum {
>     +     ARGS_OPT_ADD_DEST,
>     +     ARGS_OPT_SIZE,
>     +     ARGS_OPT_ADD_EXCLUDE,
>     ++    ARGS_OPT_ADD_IGNORE_RECOMMENDS,
>     +     ARGS_OPT_NOACTION,
>     +     ARGS_OPT_DOWNLOAD_ONLY,
>     +     ARGS_OPT_NODEPS,
>     +@@ -112,6 +113,7 @@ static struct option long_options[] = {
>     +     {"add-dest", 1, 0, ARGS_OPT_ADD_DEST},
>     +     {"size", 0, 0, ARGS_OPT_SIZE},
>     +     {"add-exclude", 1, 0, ARGS_OPT_ADD_EXCLUDE},
>     ++    {"add-ignore-recommends", 1, 0, ARGS_OPT_ADD_IGNORE_RECOMMENDS},
>     +     {"test", 0, 0, ARGS_OPT_NOACTION},
>     +     {"tmp-dir", 1, 0, 't'},
>     +     {"tmp_dir", 1, 0, 't'},
>     +@@ -234,6 +236,9 @@ static int args_parse(int argc, char *argv[])
>     +         case ARGS_OPT_ADD_EXCLUDE:
>     +             str_list_append(&opkg_config->exclude_list, optarg);
>     +             break;
>     ++        case ARGS_OPT_ADD_IGNORE_RECOMMENDS:
>     ++            str_list_append(&opkg_config->ignore_recommends_list,
>     optarg);
>     ++            break;
>     +         case ARGS_OPT_SIZE:
>     +             opkg_config->size = 1;
>     +             break;
>     +@@ -343,6 +348,7 @@ static void usage()
>     +     printf("\t--add-dest <name>:<path>        Register destination
>     with given path\n");
>     +     printf("\t--add-arch <arch>:<prio>        Register
>     architecture with given priority\n");
>     +     printf("\t--add-exclude <name>            Register package to
>     be excluded from install\n");
>     ++    printf("\t--add-ignore-recommends <name>  Register package to
>     be ignored as a recomendee\n");
>     +     printf("\t--prefer-arch-to-version        Use the architecture
>     priority package rather\n");
>     +     printf("\t                                than the higher
>     version one if more\n");
>     +     printf("\t                                than one candidate
>     is found.\n");
>     +diff --git a/tests/Makefile b/tests/Makefile
>     +index 8e5be08..799816d 100644
>     +--- a/tests/Makefile
>     ++++ b/tests/Makefile
>     +@@ -42,6 +42,7 @@ REGRESSION_TESTS := core/01_install.py \
>     +                   core/40_arch.py \
>     +                   core/41_info_fields.py \
>     +                   core/42_info_description.py \
>     ++                  core/43_add_ignore_recommends.py \
>     +                   regress/issue26.py \
>     +                   regress/issue31.py \
>     +                   regress/issue32.py \
>     +diff --git a/tests/core/43_add_ignore_recommends.py
>     b/tests/core/43_add_ignore_recommends.py
>     +new file mode 100755
>     +index 0000000..7da0096
>     +--- /dev/null
>     ++++ b/tests/core/43_add_ignore_recommends.py
>     +@@ -0,0 +1,62 @@
>     ++#! /usr/bin/env python3
>     ++#
>     ++# Create package 'a' (1.0) which Recommends 'c'.
>     ++# Install 'a' with --add-ignore-recommends 'c'.
>     ++# Check that only 'a' (1.0) is installed.
>     ++# Create package 'b' which Depends on 'c'.
>     ++# Install 'a' & 'b', with --add-ignore-recommends 'c'.
>     ++# Verify that 'a','b' & 'c' are installed.
>     ++# Uninstall 'b' & 'c'.
>     ++# Create package 'a' (2.0), which Recommends 'c'.
>     ++# Upgrade 'a' with --add-ignore-recommends 'c'
>     ++# Verify that only 'a' (2.0) is installed
>     ++#
>     ++
>     ++import os
>     ++import opk, cfg, opkgcl
>     ++
>     ++opk.regress_init()
>     ++o = opk.OpkGroup()
>     ++
>     ++o.add(Package='a', Recommends='c', Version='1.0')
>     ++o.add(Package='b', Depends='c')
>     ++o.add(Package='c')
>     ++o.write_opk()
>     ++o.write_list()
>     ++
>     ++opkgcl.update()
>     ++
>     ++opkgcl.install('a', '--add-ignore-recommends c')
>     ++
>     ++if not opkgcl.is_installed('a'):
>     ++      opk.fail("Package 'a' installed but reports as not installed.")
>     ++
>     ++if opkgcl.is_installed('c'):
>     ++      opk.xfail("[libsolv<0.7.3] Package 'c' should not have been
>     installed since it was in --add-ignore-recommends.")
>     ++
>     ++opkgcl.remove('a')
>     ++opkgcl.install('a b', '--add-ignore-recommends c')
>     ++
>     ++if not opkgcl.is_installed('a'):
>     ++      opk.fail("Package 'a' installed but reports as not installed.")
>     ++
>     ++if not opkgcl.is_installed('b'):
>     ++      opk.fail("Package 'b' installed but reports as not installed.")
>     ++
>     ++if not opkgcl.is_installed('c'):
>     ++      opk.fail("Package 'c' should have been installed since 'b'
>     depends on it.")
>     ++
>     ++opkgcl.remove('b c', '--force-depends')
>     ++o.add(Package='a', Recommends='c', Version='2.0')
>     ++o.write_opk()
>     ++o.write_list()
>     ++
>     ++opkgcl.update()
>     ++
>     ++opkgcl.upgrade('a', '--add-ignore-recommends c')
>     ++
>     ++if not opkgcl.is_installed('a', '2.0'):
>     ++      opk.fail("Package 'a (2.0)' installed but reports as not
>     installed.")
>     ++
>     ++if opkgcl.is_installed('c'):
>     ++      opk.fail("Package 'c' should not have been installed since
>     it was in --add-ignore-recommends.")
>     +--
>     +2.20.1
>     +
>     diff --git a/meta/recipes-devtools/opkg/opkg_0.4.0.bb
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg-5F0.4.0.bb&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=JvgzuAyAoVrkeSZAdWZUuIsFWQ8okApbCk1iiF13CDc&e=>
>     b/meta/recipes-devtools/opkg/opkg_0.4.0.bb
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg-5F0.4.0.bb&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=JvgzuAyAoVrkeSZAdWZUuIsFWQ8okApbCk1iiF13CDc&e=>
>     index 9b7cf3f596..a2329d3e71 100644
>     --- a/meta/recipes-devtools/opkg/opkg_0.4.0.bb
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg-5F0.4.0.bb&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=JvgzuAyAoVrkeSZAdWZUuIsFWQ8okApbCk1iiF13CDc&e=>
>     +++ b/meta/recipes-devtools/opkg/opkg_0.4.0.bb
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg-5F0.4.0.bb&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=JvgzuAyAoVrkeSZAdWZUuIsFWQ8okApbCk1iiF13CDc&e=>
>     @@ -14,6 +14,7 @@ PE = "1"
>       SRC_URI =
>     "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__downloads.yoctoproject.org_releases_-24-257BBPN-257D_-24-257BBPN-257D-2D-24-257BPV-257D.tar.gz&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=YLvorPjD5Y4WlqpYdjRMCkzwnh_cz-C6op19u5O23b8&e=>
>     \
>                  file://opkg.conf \
>                 
>     file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \
>     +           file://0001-libopkg-add-add-ignore-recommends-option.patch \
>       "
>
>       SRC_URI[md5sum] = "ae51d95fee599bb4dce08453529158f5"
>     --
>     2.20.1
>
>     --
>     _______________________________________________
>     Openembedded-core mailing list
>     Openembedded-core@...
>     <mailto:Openembedded-core@...>
>     http://lists.openembedded.org/mailman/listinfo/openembedded-core
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openembedded.org_mailman_listinfo_openembedded-2Dcore&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=UHPegBWeyh1LTyIdp2oai1-Ecy-s_l8In1Kk14OFS6Q&e=>
>

--
Cheers,

Alejandro


Re: [OE-core] [PATCH 1/3] opkg: add --ignore-recommends flag

Alejandro Del Castillo <alejandro.delcastillo@...>
 

On 2/7/19 11:36 AM, Scott Rifenbark wrote:
This change looks like it impacts documentation (i.e.
https://yoctoproject.org/docs/2.7/ref-manual/ref-manual.html#var-BAD_RECOMMENDATIONS.
When will this change go into effect?
I believe it doesn't. It is refactoring the opkg implementation to
leverage a new opkg feature (--add-ignore-recommends), which is a more
robust implementation. Should be transparent to users.

On Thu, Feb 7, 2019 at 7:58 AM Alejandro del Castillo
<alejandro.delcastillo@ni.com <mailto:alejandro.delcastillo@ni.com>> wrote:

To be used for BAD_RECOMMENDATIONS feature.

Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com
<mailto:alejandro.delcastillo@ni.com>>
---
 ...pkg-add-add-ignore-recommends-option.patch | 259 ++++++++++++++++++
 meta/recipes-devtools/opkg/opkg_0.4.0.bb
<https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg-5F0.4.0.bb&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=JvgzuAyAoVrkeSZAdWZUuIsFWQ8okApbCk1iiF13CDc&e=>
    |   1 +
 2 files changed, 260 insertions(+)
 create mode 100644
meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch

diff --git
a/meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch
b/meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch
new file mode 100644
index 0000000000..47d1b3c37e
--- /dev/null
+++
b/meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch
@@ -0,0 +1,259 @@
+From 64aa98646a17c299bf37af2975b98daf5d7d30b4 Mon Sep 17 00:00:00 2001
+From: Alejandro del Castillo <alejandro.delcastillo@ni.com
<mailto:alejandro.delcastillo@ni.com>>
+Date: Thu, 31 Jan 2019 18:16:08 -0600
+Subject: [PATCH] libopkg: add --add-ignore-recommends option
+
+Add option to ignore specific recommended packages. On the libsolv
+backed, this feature will only work on libsolv version > 0.7.2 [1].
+
+[1]
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openSUSE_libsolv_issues_254&d=DwIBaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=GObNHzFJpWpf_PripIrf-K2RhsktYdAUEieAJexXOKw&s=3G-meChUqClFggFPqsrAxIZBfLnRKIHm62Uuy1X6nQQ&e=
+
+Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com
<mailto:alejandro.delcastillo@ni.com>>
+
+Upstream-Status: Accepted
+---
+ libopkg/opkg_conf.c                           |  2 +
+ libopkg/opkg_conf.h                           |  1 +
+ .../solvers/internal/pkg_depends_internal.c   |  3 +-
+ libopkg/solvers/libsolv/opkg_solver_libsolv.c | 21 ++++++-
+ man/opkg.1.in
<https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg.1.in&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=8yIWRVT6JV0YnkHzVgeo8pAkiFPM4xz8y9APvxobmhY&e=>
                               |  3 +
+ src/opkg.c                                    |  6 ++
+ tests/Makefile                                |  1 +
+ tests/core/43_add_ignore_recommends.py        | 62 +++++++++++++++++++
+ 8 files changed, 97 insertions(+), 2 deletions(-)
+ create mode 100755 tests/core/43_add_ignore_recommends.py
+
+diff --git a/libopkg/opkg_conf.c b/libopkg/opkg_conf.c
+index 06880a1..f2330cd 100644
+--- a/libopkg/opkg_conf.c
++++ b/libopkg/opkg_conf.c
+@@ -597,6 +597,7 @@ int opkg_conf_init(void)
+     pkg_dest_list_init(&opkg_config->tmp_dest_list);
+     nv_pair_list_init(&opkg_config->arch_list);
+     str_list_init(&opkg_config->exclude_list);
++    str_list_init(&opkg_config->ignore_recommends_list);
+
+     return 0;
+ }
+@@ -938,6 +939,7 @@ void opkg_conf_deinit(void)
+     pkg_dest_list_deinit(&opkg_config->pkg_dest_list);
+     nv_pair_list_deinit(&opkg_config->arch_list);
+     str_list_deinit(&opkg_config->exclude_list);
++    str_list_deinit(&opkg_config->ignore_recommends_list);
+
+     if (opkg_config->verbosity >= DEBUG) {
+         hash_print_stats(&opkg_config->pkg_hash);
+diff --git a/libopkg/opkg_conf.h b/libopkg/opkg_conf.h
+index eb56a29..316c500 100644
+--- a/libopkg/opkg_conf.h
++++ b/libopkg/opkg_conf.h
+@@ -61,6 +61,7 @@ typedef struct opkg_conf {
+     pkg_dest_list_t tmp_dest_list;
+     nv_pair_list_t arch_list;
+     str_list_t exclude_list;
++    str_list_t ignore_recommends_list;
+
+     int restrict_to_default_dest;
+     pkg_dest_t *default_dest;
+diff --git a/libopkg/solvers/internal/pkg_depends_internal.c
b/libopkg/solvers/internal/pkg_depends_internal.c
+index cd56d84..5deee70 100644
+--- a/libopkg/solvers/internal/pkg_depends_internal.c
++++ b/libopkg/solvers/internal/pkg_depends_internal.c
+@@ -228,7 +228,8 @@ int
pkg_hash_fetch_unsatisfied_dependencies(pkg_t *pkg,
+                             || compound_depend->type == SUGGEST)
+                         && (satisfying_pkg->state_want == SW_DEINSTALL
+                             || satisfying_pkg->state_want == SW_PURGE
+-                            || opkg_config->no_install_recommends);
++                            || opkg_config->no_install_recommends
++                            ||
str_list_contains(&opkg_config->ignore_recommends_list,
satisfying_pkg->name));
+                 if (ignore) {
+                     opkg_msg(NOTICE,
+                              "%s: ignoring recommendation for "
+diff --git a/libopkg/solvers/libsolv/opkg_solver_libsolv.c
b/libopkg/solvers/libsolv/opkg_solver_libsolv.c
+index 2b27e3a..403e07b 100644
+--- a/libopkg/solvers/libsolv/opkg_solver_libsolv.c
++++ b/libopkg/solvers/libsolv/opkg_solver_libsolv.c
+@@ -484,6 +484,7 @@ static void pkg2solvable(pkg_t *pkg, Solvable
*solvable_out)
+ static void populate_installed_repo(libsolv_solver_t *libsolv_solver)
+ {
+     int i;
++    Id what;
+
+     pkg_vec_t *installed_pkgs = pkg_vec_alloc();
+
+@@ -507,6 +508,15 @@ static void
populate_installed_repo(libsolv_solver_t *libsolv_solver)
+         /* set solvable attributes */
+         pkg2solvable(pkg, solvable);
+
++        /* if the package is in ignore-recommends-list, disfavor
installation */
++        if
(str_list_contains(&opkg_config->ignore_recommends_list, pkg->name)) {
++            opkg_message(NOTICE, "Disfavor package: %s\n",
++                         pkg->name);
++            what = pool_str2id(libsolv_solver->pool, pkg->name, 1);
++            queue_push2(&libsolv_solver->solver_jobs,
SOLVER_SOLVABLE_NAME
++                        | SOLVER_DISFAVOR, what);
++        }
++
+         /* if the package is not autoinstalled, mark it as user
installed */
+         if (!pkg->auto_installed)
+             queue_push2(&libsolv_solver->solver_jobs, SOLVER_SOLVABLE
+@@ -539,7 +549,7 @@ static void
populate_available_repos(libsolv_solver_t *libsolv_solver)
+ {
+     int i;
+     Solvable *solvable;
+-    Id solvable_id;
++    Id solvable_id, what;
+
+     pkg_vec_t *available_pkgs = pkg_vec_alloc();
+
+@@ -608,6 +618,15 @@ static void
populate_available_repos(libsolv_solver_t *libsolv_solver)
+         solvable = pool_id2solvable(libsolv_solver->pool,
solvable_id);
+         pkg2solvable(pkg, solvable);
+
++        /* if the package is in ignore-recommends-list, disfavor
installation */
++        if
(str_list_contains(&opkg_config->ignore_recommends_list, pkg->name)) {
++            opkg_message(NOTICE, "Disfavor package: %s\n",
++                         pkg->name);
++            what = pool_str2id(libsolv_solver->pool, pkg->name, 1);
++            queue_push2(&libsolv_solver->solver_jobs,
SOLVER_SOLVABLE_NAME
++                        | SOLVER_DISFAVOR, what);
++        }
++
+         /* if the --force-depends option is specified make
dependencies weak */
+         if (opkg_config->force_depends)
+             queue_push2(&libsolv_solver->solver_jobs, SOLVER_SOLVABLE
+diff --git a/man/opkg.1.in
<https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg.1.in&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=8yIWRVT6JV0YnkHzVgeo8pAkiFPM4xz8y9APvxobmhY&e=>
b/man/opkg.1.in
<https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg.1.in&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=8yIWRVT6JV0YnkHzVgeo8pAkiFPM4xz8y9APvxobmhY&e=>
+index 27fa9c1..f192c3b 100644
+--- a/man/opkg.1.in
<https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg.1.in&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=8yIWRVT6JV0YnkHzVgeo8pAkiFPM4xz8y9APvxobmhY&e=>
++++ b/man/opkg.1.in
<https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg.1.in&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=8yIWRVT6JV0YnkHzVgeo8pAkiFPM4xz8y9APvxobmhY&e=>
+@@ -162,6 +162,9 @@ priority \fIprio\fP. Lower priorities take
precedence.
+ \fB\--add-exclude <\fIname\fP>\fR
+ Register package to be excluded from install
+ .TP
++\fB\--add-ignore-recommends <\fIname\fP>\fR
++Register package to be ignored as a recomendee
++.TP
+ \fB\--prefer-arch-to-version\fR
+ Use the architecture priority package rather than the higher version
+ one if more than one candidate is found.
+diff --git a/src/opkg.c b/src/opkg.c
+index 650e278..3c93a3b 100644
+--- a/src/opkg.c
++++ b/src/opkg.c
+@@ -51,6 +51,7 @@ enum {
+     ARGS_OPT_ADD_DEST,
+     ARGS_OPT_SIZE,
+     ARGS_OPT_ADD_EXCLUDE,
++    ARGS_OPT_ADD_IGNORE_RECOMMENDS,
+     ARGS_OPT_NOACTION,
+     ARGS_OPT_DOWNLOAD_ONLY,
+     ARGS_OPT_NODEPS,
+@@ -112,6 +113,7 @@ static struct option long_options[] = {
+     {"add-dest", 1, 0, ARGS_OPT_ADD_DEST},
+     {"size", 0, 0, ARGS_OPT_SIZE},
+     {"add-exclude", 1, 0, ARGS_OPT_ADD_EXCLUDE},
++    {"add-ignore-recommends", 1, 0, ARGS_OPT_ADD_IGNORE_RECOMMENDS},
+     {"test", 0, 0, ARGS_OPT_NOACTION},
+     {"tmp-dir", 1, 0, 't'},
+     {"tmp_dir", 1, 0, 't'},
+@@ -234,6 +236,9 @@ static int args_parse(int argc, char *argv[])
+         case ARGS_OPT_ADD_EXCLUDE:
+             str_list_append(&opkg_config->exclude_list, optarg);
+             break;
++        case ARGS_OPT_ADD_IGNORE_RECOMMENDS:
++            str_list_append(&opkg_config->ignore_recommends_list,
optarg);
++            break;
+         case ARGS_OPT_SIZE:
+             opkg_config->size = 1;
+             break;
+@@ -343,6 +348,7 @@ static void usage()
+     printf("\t--add-dest <name>:<path>        Register destination
with given path\n");
+     printf("\t--add-arch <arch>:<prio>        Register
architecture with given priority\n");
+     printf("\t--add-exclude <name>            Register package to
be excluded from install\n");
++    printf("\t--add-ignore-recommends <name>  Register package to
be ignored as a recomendee\n");
+     printf("\t--prefer-arch-to-version        Use the architecture
priority package rather\n");
+     printf("\t                                than the higher
version one if more\n");
+     printf("\t                                than one candidate
is found.\n");
+diff --git a/tests/Makefile b/tests/Makefile
+index 8e5be08..799816d 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -42,6 +42,7 @@ REGRESSION_TESTS := core/01_install.py \
+                   core/40_arch.py \
+                   core/41_info_fields.py \
+                   core/42_info_description.py \
++                  core/43_add_ignore_recommends.py \
+                   regress/issue26.py \
+                   regress/issue31.py \
+                   regress/issue32.py \
+diff --git a/tests/core/43_add_ignore_recommends.py
b/tests/core/43_add_ignore_recommends.py
+new file mode 100755
+index 0000000..7da0096
+--- /dev/null
++++ b/tests/core/43_add_ignore_recommends.py
+@@ -0,0 +1,62 @@
++#! /usr/bin/env python3
++#
++# Create package 'a' (1.0) which Recommends 'c'.
++# Install 'a' with --add-ignore-recommends 'c'.
++# Check that only 'a' (1.0) is installed.
++# Create package 'b' which Depends on 'c'.
++# Install 'a' & 'b', with --add-ignore-recommends 'c'.
++# Verify that 'a','b' & 'c' are installed.
++# Uninstall 'b' & 'c'.
++# Create package 'a' (2.0), which Recommends 'c'.
++# Upgrade 'a' with --add-ignore-recommends 'c'
++# Verify that only 'a' (2.0) is installed
++#
++
++import os
++import opk, cfg, opkgcl
++
++opk.regress_init()
++o = opk.OpkGroup()
++
++o.add(Package='a', Recommends='c', Version='1.0')
++o.add(Package='b', Depends='c')
++o.add(Package='c')
++o.write_opk()
++o.write_list()
++
++opkgcl.update()
++
++opkgcl.install('a', '--add-ignore-recommends c')
++
++if not opkgcl.is_installed('a'):
++      opk.fail("Package 'a' installed but reports as not installed.")
++
++if opkgcl.is_installed('c'):
++      opk.xfail("[libsolv<0.7.3] Package 'c' should not have been
installed since it was in --add-ignore-recommends.")
++
++opkgcl.remove('a')
++opkgcl.install('a b', '--add-ignore-recommends c')
++
++if not opkgcl.is_installed('a'):
++      opk.fail("Package 'a' installed but reports as not installed.")
++
++if not opkgcl.is_installed('b'):
++      opk.fail("Package 'b' installed but reports as not installed.")
++
++if not opkgcl.is_installed('c'):
++      opk.fail("Package 'c' should have been installed since 'b'
depends on it.")
++
++opkgcl.remove('b c', '--force-depends')
++o.add(Package='a', Recommends='c', Version='2.0')
++o.write_opk()
++o.write_list()
++
++opkgcl.update()
++
++opkgcl.upgrade('a', '--add-ignore-recommends c')
++
++if not opkgcl.is_installed('a', '2.0'):
++      opk.fail("Package 'a (2.0)' installed but reports as not
installed.")
++
++if opkgcl.is_installed('c'):
++      opk.fail("Package 'c' should not have been installed since
it was in --add-ignore-recommends.")
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/opkg/opkg_0.4.0.bb
<https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg-5F0.4.0.bb&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=JvgzuAyAoVrkeSZAdWZUuIsFWQ8okApbCk1iiF13CDc&e=>
b/meta/recipes-devtools/opkg/opkg_0.4.0.bb
<https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg-5F0.4.0.bb&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=JvgzuAyAoVrkeSZAdWZUuIsFWQ8okApbCk1iiF13CDc&e=>
index 9b7cf3f596..a2329d3e71 100644
--- a/meta/recipes-devtools/opkg/opkg_0.4.0.bb
<https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg-5F0.4.0.bb&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=JvgzuAyAoVrkeSZAdWZUuIsFWQ8okApbCk1iiF13CDc&e=>
+++ b/meta/recipes-devtools/opkg/opkg_0.4.0.bb
<https://urldefense.proofpoint.com/v2/url?u=http-3A__opkg-5F0.4.0.bb&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=JvgzuAyAoVrkeSZAdWZUuIsFWQ8okApbCk1iiF13CDc&e=>
@@ -14,6 +14,7 @@ PE = "1"
 SRC_URI =
"http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz
<https://urldefense.proofpoint.com/v2/url?u=http-3A__downloads.yoctoproject.org_releases_-24-257BBPN-257D_-24-257BBPN-257D-2D-24-257BPV-257D.tar.gz&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=YLvorPjD5Y4WlqpYdjRMCkzwnh_cz-C6op19u5O23b8&e=>
\
            file://opkg.conf \

file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \
+           file://0001-libopkg-add-add-ignore-recommends-option.patch \
 "

 SRC_URI[md5sum] = "ae51d95fee599bb4dce08453529158f5"
--
2.20.1

--
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
<mailto:Openembedded-core@lists.openembedded.org>
http://lists.openembedded.org/mailman/listinfo/openembedded-core
<https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openembedded.org_mailman_listinfo_openembedded-2Dcore&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=8hd_9vew95YIf_VIv2QHNu2EFnc3G2WZ5KA2Upnv5j8&s=UHPegBWeyh1LTyIdp2oai1-Ecy-s_l8In1Kk14OFS6Q&e=>
--
Cheers,

Alejandro


Re: [OE-core] [PATCH 1/3] opkg: add --ignore-recommends flag

Scott Rifenbark <srifenbark@...>
 

This change looks like it impacts documentation (i.e. https://yoctoproject.org/docs/2.7/ref-manual/ref-manual.html#var-BAD_RECOMMENDATIONS).  When will this change go into effect?

Scott


On Thu, Feb 7, 2019 at 7:58 AM Alejandro del Castillo <alejandro.delcastillo@...> wrote:
To be used for BAD_RECOMMENDATIONS feature.

Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@...>
---
 ...pkg-add-add-ignore-recommends-option.patch | 259 ++++++++++++++++++
 meta/recipes-devtools/opkg/opkg_0.4.0.bb      |   1 +
 2 files changed, 260 insertions(+)
 create mode 100644 meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch

diff --git a/meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch b/meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch
new file mode 100644
index 0000000000..47d1b3c37e
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg/0001-libopkg-add-add-ignore-recommends-option.patch
@@ -0,0 +1,259 @@
+From 64aa98646a17c299bf37af2975b98daf5d7d30b4 Mon Sep 17 00:00:00 2001
+From: Alejandro del Castillo <alejandro.delcastillo@...>
+Date: Thu, 31 Jan 2019 18:16:08 -0600
+Subject: [PATCH] libopkg: add --add-ignore-recommends option
+
+Add option to ignore specific recommended packages. On the libsolv
+backed, this feature will only work on libsolv version > 0.7.2 [1].
+
+[1] https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openSUSE_libsolv_issues_254&d=DwIBaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=GObNHzFJpWpf_PripIrf-K2RhsktYdAUEieAJexXOKw&s=3G-meChUqClFggFPqsrAxIZBfLnRKIHm62Uuy1X6nQQ&e=
+
+Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@...>
+
+Upstream-Status: Accepted
+---
+ libopkg/opkg_conf.c                           |  2 +
+ libopkg/opkg_conf.h                           |  1 +
+ .../solvers/internal/pkg_depends_internal.c   |  3 +-
+ libopkg/solvers/libsolv/opkg_solver_libsolv.c | 21 ++++++-
+ man/opkg.1.in                                 |  3 +
+ src/opkg.c                                    |  6 ++
+ tests/Makefile                                |  1 +
+ tests/core/43_add_ignore_recommends.py        | 62 +++++++++++++++++++
+ 8 files changed, 97 insertions(+), 2 deletions(-)
+ create mode 100755 tests/core/43_add_ignore_recommends.py
+
+diff --git a/libopkg/opkg_conf.c b/libopkg/opkg_conf.c
+index 06880a1..f2330cd 100644
+--- a/libopkg/opkg_conf.c
++++ b/libopkg/opkg_conf.c
+@@ -597,6 +597,7 @@ int opkg_conf_init(void)
+     pkg_dest_list_init(&opkg_config->tmp_dest_list);
+     nv_pair_list_init(&opkg_config->arch_list);
+     str_list_init(&opkg_config->exclude_list);
++    str_list_init(&opkg_config->ignore_recommends_list);
+
+     return 0;
+ }
+@@ -938,6 +939,7 @@ void opkg_conf_deinit(void)
+     pkg_dest_list_deinit(&opkg_config->pkg_dest_list);
+     nv_pair_list_deinit(&opkg_config->arch_list);
+     str_list_deinit(&opkg_config->exclude_list);
++    str_list_deinit(&opkg_config->ignore_recommends_list);
+
+     if (opkg_config->verbosity >= DEBUG) {
+         hash_print_stats(&opkg_config->pkg_hash);
+diff --git a/libopkg/opkg_conf.h b/libopkg/opkg_conf.h
+index eb56a29..316c500 100644
+--- a/libopkg/opkg_conf.h
++++ b/libopkg/opkg_conf.h
+@@ -61,6 +61,7 @@ typedef struct opkg_conf {
+     pkg_dest_list_t tmp_dest_list;
+     nv_pair_list_t arch_list;
+     str_list_t exclude_list;
++    str_list_t ignore_recommends_list;
+
+     int restrict_to_default_dest;
+     pkg_dest_t *default_dest;
+diff --git a/libopkg/solvers/internal/pkg_depends_internal.c b/libopkg/solvers/internal/pkg_depends_internal.c
+index cd56d84..5deee70 100644
+--- a/libopkg/solvers/internal/pkg_depends_internal.c
++++ b/libopkg/solvers/internal/pkg_depends_internal.c
+@@ -228,7 +228,8 @@ int pkg_hash_fetch_unsatisfied_dependencies(pkg_t *pkg,
+                             || compound_depend->type == SUGGEST)
+                         && (satisfying_pkg->state_want == SW_DEINSTALL
+                             || satisfying_pkg->state_want == SW_PURGE
+-                            || opkg_config->no_install_recommends);
++                            || opkg_config->no_install_recommends
++                            || str_list_contains(&opkg_config->ignore_recommends_list, satisfying_pkg->name));
+                 if (ignore) {
+                     opkg_msg(NOTICE,
+                              "%s: ignoring recommendation for "
+diff --git a/libopkg/solvers/libsolv/opkg_solver_libsolv.c b/libopkg/solvers/libsolv/opkg_solver_libsolv.c
+index 2b27e3a..403e07b 100644
+--- a/libopkg/solvers/libsolv/opkg_solver_libsolv.c
++++ b/libopkg/solvers/libsolv/opkg_solver_libsolv.c
+@@ -484,6 +484,7 @@ static void pkg2solvable(pkg_t *pkg, Solvable *solvable_out)
+ static void populate_installed_repo(libsolv_solver_t *libsolv_solver)
+ {
+     int i;
++    Id what;
+
+     pkg_vec_t *installed_pkgs = pkg_vec_alloc();
+
+@@ -507,6 +508,15 @@ static void populate_installed_repo(libsolv_solver_t *libsolv_solver)
+         /* set solvable attributes */
+         pkg2solvable(pkg, solvable);
+
++        /* if the package is in ignore-recommends-list, disfavor installation */
++        if (str_list_contains(&opkg_config->ignore_recommends_list, pkg->name)) {
++            opkg_message(NOTICE, "Disfavor package: %s\n",
++                         pkg->name);
++            what = pool_str2id(libsolv_solver->pool, pkg->name, 1);
++            queue_push2(&libsolv_solver->solver_jobs, SOLVER_SOLVABLE_NAME
++                        | SOLVER_DISFAVOR, what);
++        }
++
+         /* if the package is not autoinstalled, mark it as user installed */
+         if (!pkg->auto_installed)
+             queue_push2(&libsolv_solver->solver_jobs, SOLVER_SOLVABLE
+@@ -539,7 +549,7 @@ static void populate_available_repos(libsolv_solver_t *libsolv_solver)
+ {
+     int i;
+     Solvable *solvable;
+-    Id solvable_id;
++    Id solvable_id, what;
+
+     pkg_vec_t *available_pkgs = pkg_vec_alloc();
+
+@@ -608,6 +618,15 @@ static void populate_available_repos(libsolv_solver_t *libsolv_solver)
+         solvable = pool_id2solvable(libsolv_solver->pool, solvable_id);
+         pkg2solvable(pkg, solvable);
+
++        /* if the package is in ignore-recommends-list, disfavor installation */
++        if (str_list_contains(&opkg_config->ignore_recommends_list, pkg->name)) {
++            opkg_message(NOTICE, "Disfavor package: %s\n",
++                         pkg->name);
++            what = pool_str2id(libsolv_solver->pool, pkg->name, 1);
++            queue_push2(&libsolv_solver->solver_jobs, SOLVER_SOLVABLE_NAME
++                        | SOLVER_DISFAVOR, what);
++        }
++
+         /* if the --force-depends option is specified make dependencies weak */
+         if (opkg_config->force_depends)
+             queue_push2(&libsolv_solver->solver_jobs, SOLVER_SOLVABLE
+diff --git a/man/opkg.1.in b/man/opkg.1.in
+index 27fa9c1..f192c3b 100644
+--- a/man/opkg.1.in
++++ b/man/opkg.1.in
+@@ -162,6 +162,9 @@ priority \fIprio\fP. Lower priorities take precedence.
+ \fB\--add-exclude <\fIname\fP>\fR
+ Register package to be excluded from install
+ .TP
++\fB\--add-ignore-recommends <\fIname\fP>\fR
++Register package to be ignored as a recomendee
++.TP
+ \fB\--prefer-arch-to-version\fR
+ Use the architecture priority package rather than the higher version
+ one if more than one candidate is found.
+diff --git a/src/opkg.c b/src/opkg.c
+index 650e278..3c93a3b 100644
+--- a/src/opkg.c
++++ b/src/opkg.c
+@@ -51,6 +51,7 @@ enum {
+     ARGS_OPT_ADD_DEST,
+     ARGS_OPT_SIZE,
+     ARGS_OPT_ADD_EXCLUDE,
++    ARGS_OPT_ADD_IGNORE_RECOMMENDS,
+     ARGS_OPT_NOACTION,
+     ARGS_OPT_DOWNLOAD_ONLY,
+     ARGS_OPT_NODEPS,
+@@ -112,6 +113,7 @@ static struct option long_options[] = {
+     {"add-dest", 1, 0, ARGS_OPT_ADD_DEST},
+     {"size", 0, 0, ARGS_OPT_SIZE},
+     {"add-exclude", 1, 0, ARGS_OPT_ADD_EXCLUDE},
++    {"add-ignore-recommends", 1, 0, ARGS_OPT_ADD_IGNORE_RECOMMENDS},
+     {"test", 0, 0, ARGS_OPT_NOACTION},
+     {"tmp-dir", 1, 0, 't'},
+     {"tmp_dir", 1, 0, 't'},
+@@ -234,6 +236,9 @@ static int args_parse(int argc, char *argv[])
+         case ARGS_OPT_ADD_EXCLUDE:
+             str_list_append(&opkg_config->exclude_list, optarg);
+             break;
++        case ARGS_OPT_ADD_IGNORE_RECOMMENDS:
++            str_list_append(&opkg_config->ignore_recommends_list, optarg);
++            break;
+         case ARGS_OPT_SIZE:
+             opkg_config->size = 1;
+             break;
+@@ -343,6 +348,7 @@ static void usage()
+     printf("\t--add-dest <name>:<path>        Register destination with given path\n");
+     printf("\t--add-arch <arch>:<prio>        Register architecture with given priority\n");
+     printf("\t--add-exclude <name>            Register package to be excluded from install\n");
++    printf("\t--add-ignore-recommends <name>  Register package to be ignored as a recomendee\n");
+     printf("\t--prefer-arch-to-version        Use the architecture priority package rather\n");
+     printf("\t                                than the higher version one if more\n");
+     printf("\t                                than one candidate is found.\n");
+diff --git a/tests/Makefile b/tests/Makefile
+index 8e5be08..799816d 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -42,6 +42,7 @@ REGRESSION_TESTS := core/01_install.py \
+                   core/40_arch.py \
+                   core/41_info_fields.py \
+                   core/42_info_description.py \
++                  core/43_add_ignore_recommends.py \
+                   regress/issue26.py \
+                   regress/issue31.py \
+                   regress/issue32.py \
+diff --git a/tests/core/43_add_ignore_recommends.py b/tests/core/43_add_ignore_recommends.py
+new file mode 100755
+index 0000000..7da0096
+--- /dev/null
++++ b/tests/core/43_add_ignore_recommends.py
+@@ -0,0 +1,62 @@
++#! /usr/bin/env python3
++#
++# Create package 'a' (1.0) which Recommends 'c'.
++# Install 'a' with --add-ignore-recommends 'c'.
++# Check that only 'a' (1.0) is installed.
++# Create package 'b' which Depends on 'c'.
++# Install 'a' & 'b', with --add-ignore-recommends 'c'.
++# Verify that 'a','b' & 'c' are installed.
++# Uninstall 'b' & 'c'.
++# Create package 'a' (2.0), which Recommends 'c'.
++# Upgrade 'a' with --add-ignore-recommends 'c'
++# Verify that only 'a' (2.0) is installed
++#
++
++import os
++import opk, cfg, opkgcl
++
++opk.regress_init()
++o = opk.OpkGroup()
++
++o.add(Package='a', Recommends='c', Version='1.0')
++o.add(Package='b', Depends='c')
++o.add(Package='c')
++o.write_opk()
++o.write_list()
++
++opkgcl.update()
++
++opkgcl.install('a', '--add-ignore-recommends c')
++
++if not opkgcl.is_installed('a'):
++      opk.fail("Package 'a' installed but reports as not installed.")
++
++if opkgcl.is_installed('c'):
++      opk.xfail("[libsolv<0.7.3] Package 'c' should not have been installed since it was in --add-ignore-recommends.")
++
++opkgcl.remove('a')
++opkgcl.install('a b', '--add-ignore-recommends c')
++
++if not opkgcl.is_installed('a'):
++      opk.fail("Package 'a' installed but reports as not installed.")
++
++if not opkgcl.is_installed('b'):
++      opk.fail("Package 'b' installed but reports as not installed.")
++
++if not opkgcl.is_installed('c'):
++      opk.fail("Package 'c' should have been installed since 'b' depends on it.")
++
++opkgcl.remove('b c', '--force-depends')
++o.add(Package='a', Recommends='c', Version='2.0')
++o.write_opk()
++o.write_list()
++
++opkgcl.update()
++
++opkgcl.upgrade('a', '--add-ignore-recommends c')
++
++if not opkgcl.is_installed('a', '2.0'):
++      opk.fail("Package 'a (2.0)' installed but reports as not installed.")
++
++if opkgcl.is_installed('c'):
++      opk.fail("Package 'c' should not have been installed since it was in --add-ignore-recommends.")
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/opkg/opkg_0.4.0.bb b/meta/recipes-devtools/opkg/opkg_0.4.0.bb
index 9b7cf3f596..a2329d3e71 100644
--- a/meta/recipes-devtools/opkg/opkg_0.4.0.bb
+++ b/meta/recipes-devtools/opkg/opkg_0.4.0.bb
@@ -14,6 +14,7 @@ PE = "1"
 SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \
            file://opkg.conf \
            file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \
+           file://0001-libopkg-add-add-ignore-recommends-option.patch \
 "

 SRC_URI[md5sum] = "ae51d95fee599bb4dce08453529158f5"
--
2.20.1

--
_______________________________________________
Openembedded-core mailing list
Openembedded-core@...
http://lists.openembedded.org/mailman/listinfo/openembedded-core


glxinfo

Peter Balazovic <balazovic.peter@...>
 

I'd like to ask which yocto recipe has "glxinfo" available? I will make available that package within local.conf...

Thanks.
Peter


Re: CMake based recipes and defining CMAKE_BUILD_TYPE

Mikko Rapeli
 

Hi,

From my experience, what CMAKE_BUILD_TYPE means varies between SW components.
Thus I think the current approach of not setting it is correct. SW components
must set their own defaults in either CMakeLists.txt or in the bitbake recipe.

Also, building with debug info is separate from CMAKE_BUILD_TYPE. The default
compile flags from yocto will include -g for debug symbols and this is provided
to CMake compile flags too.

Cheers,

-Mikko


Re: SDK install w/ CMake

Bach, Pascal <pascal.bach@...>
 

Hi Eric

I don't think your issue has something do to with CMake.

-----Original Message-----
From: yocto-bounces@yoctoproject.org <yocto-bounces@yoctoproject.org>
On Behalf Of Eric Schwarz
Sent: Freitag, 1. Februar 2019 09:51
To: yocto@yoctoproject.org
Subject: [yocto] SDK install w/ CMake

Hello,

we have got the problem that w/ the Yocto recipe and CMake install targets
as below always everything (headers and library or binary
respectively) is installed in the SDK.
The binary also goes into the SDK even though we just add it to
IMAGE_INSTALL based on a XILINX yocto build (rel-v2018.3).
I'm not sure I understand what you are trying to do. If you add something to IMAGE_INSTALL it gets installed to the target.
That usually includes binaries and libraries.

If you only want libraries but not binaries it's probably best to split them into multiple packages as described in https://www.yoctoproject.org/docs/latest/mega-manual/mega-manual.html#package-splitting-dev-environment

This way you can have the binaries in a different package like ${PN}-tools.

Pascal

For sure we only want headers to be installed when "<library_name>-dev"
is added to TOOLCHAIN_TARGET_TASK_append and the binary should not
be installed at all when it is just added to IMAGE_INSTALL.

For sure we studied Yocto and CMake recipes from other libraries where it
works like pugixml but weren't able to figure out what's going wrong.


Yocto recipe
============

DESCRIPTION = "C++ reflection library"
SECTION = "libs"
LICENSE = "CLOSED"

SRCREV = "${AUTOREV}"
SRCBRANCH = "next"
SRC_URI =
"git://gitlab.company.de/psg/${PN}.git;branch=${SRCBRANCH};protocol=ssh
"

DEPENDS = "catch2"

inherit cmake
S = "${WORKDIR}/git"
FILES_${PN}-dev += "${libdir}/cmake"

# The following are needed because the library is unversioned.
# See
https://wiki.yoctoproject.org/wiki/TipsAndTricks/Packaging_Prebuilt_Librari
es#Non-versioned_Libraries
SOLIBS = ".so"
FILES_SOLIBSDEV = ""


CMake library install part
==========================

# Shared client library target.
add_library(shared SHARED $<TARGET_OBJECTS:objects>)
target_include_directories(shared PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)

set_target_properties(shared
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY lib/shared
LIBRARY_OUTPUT_DIRECTORY lib/shared
RUNTIME_OUTPUT_DIRECTORY lib/shared
OUTPUT_NAME ${LIBRARY_NAME}
)

# Install target.
install(TARGETS shared static
EXPORT ${LIBRARY_NAME}-config
DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(DIRECTORY include/reflect DESTINATION
${CMAKE_INSTALL_INCLUDEDIR})
install(EXPORT ${LIBRARY_NAME}-config
NAMESPACE ${LIBRARY_NAME}-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${LIBRARY_NAME})


CMake binary install part
=========================

install(TARGETS ${EXECUTABLE_NAME} DESTINATION
${CMAKE_INSTALL_BINDIR})


Many thanks for any hints
Eric
--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


do_populate_lic fail from scratch build but succed after clean

Jonas Andersson
 

Hi

I have an recipe based on serialport npm package created with devtool.

I added some custom licenses in my layer with LICENSE_PATH:

# Additional license directories.
LICENSE_PATH += "${LAYERDIR}/files/common-licenses"

After this I get some inconsistent build result (or i dont understand ).

Te steps I make is the following, build from scratch then bitbake fails, clean recipe and build recipe and it succed:

1. bitbake myLayer -> 

WARNING: serialport-6.2.2-r0 do_populate_lic: Could not copy license file /home/jonas/yocto/build/tmp/work/cortexa9hf-neon-goerlix-linux-gnueabi/serialport/6.2.2-r0/npmpkg/node_modules/prompt-list/node_modules/prompt-radio/node_modules/prompt-checkbox/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/LICENSE to /home/jonas/yocto/build/tmp/work/cortexa9hf-neon-goerlix-linux-gnueabi/serialport/6.2.2-r0/license-destdir/serialport/LICENSE.3: [Errno 2] No such file or directory: '/home/jonas/yocto/build/tmp/work/cortexa9hf-neon-goerlix-linux-gnueabi/serialport/6.2.2-r0/npmpkg/node_modules/prompt-list/node_modules/prompt-radio/node_modules/prompt-checkbox/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/LICENSE'
.
//
.
ERROR: serialport-6.2.2-r0 do_populate_lic: QA Issue: serialport: LIC_FILES_CHKSUM points to an invalid file: /home/jonas/yocto/build/tmp/work/cortexa9hf-neon-goerlix-linux-gnueabi/serialport/6.2.2-r0/npmpkg/node_modules/prompt-list/node_modules/prompt-radio/node_modules/prompt-checkbox/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/LICENSE [license-checksum]
.
//
.
ERROR: serialport-6.2.2-r0 do_populate_lic: Fatal QA errors found, failing task.
ERROR: serialport-6.2.2-r0 do_populate_lic: Function failed: populate_lic_qa_checksum

2. bitbake serialport -c clean
3. bitbake serialport -> success

In my view it feels like different tasks is executed in different order, like the npm recipe is missing some dependency but before I adden LICENSE_PATH to the layer config I had no problem..
______________________________________________________________________________________________
Build Configuration:
BB_VERSION           = "1.40.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"

TUNE_FEATURES        = "arm armv7a vfp neon callconvention-hard cortexa9"
TARGET_FPU           = "hard"
meta                 = "thud:3541f019a505d18263fad0b46b88d470e3fd9d62"
meta-oe              
meta-python          
meta-networking      
meta-filesystems     = "thud:6094ae18c8a35e5cc9998ac39869390d7f3bb1e2"
meta-yocto-bsp       = "thud:3541f019a505d18263fad0b46b88d470e3fd9d62"
meta-microservicebus-node = "thud:cab931199236b5bdeeb660f64aea55c2e0c09c2b"

Best regards
Jonas



Python default libraries

Emily Smith <easmith5@...>
 

Hi -

I’ve been working with yocto and with some code running on my OS, however I’m seeing errors that seem to indicate that default python libraries are no longer included (specifically logging and importlib). Has something about the default python libraries changed?

Thanks!
Emily Smith


[PATCH] ruby: remove CVE-2018-1000073.patch as already fixed

Grandbois, Brett <brett.grandbois@...>
 

rubygems 2.7.6 which is in ruby 2.5.3 has this fix and as currently
applied all gem extraction fails as the realpath check is done against
the full path including the file to be extracted which will always fail
as the file hasnt been extracted yet

Signed-off-by: Brett Grandbois <brett.grandbois@opengear.com>
---
.../ruby/ruby/CVE-2018-1000073.patch | 34 -------------------
meta/recipes-devtools/ruby/ruby_2.5.3.bb | 1 -
2 files changed, 35 deletions(-)
delete mode 100644 meta/recipes-devtools/ruby/ruby/CVE-2018-1000073.patch

diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2018-1000073.patch b/meta/recipes-devtools/ruby/ruby/CVE-2018-1000073.patch
deleted file mode 100644
index 22fa1b5f4d..0000000000
--- a/meta/recipes-devtools/ruby/ruby/CVE-2018-1000073.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 1b931fc03b819b9a0214be3eaca844ef534175e2 Mon Sep 17 00:00:00 2001
-From: Jonathan Claudius <jclaudius@mozilla.com>
-Date: Wed, 7 Feb 2018 23:54:52 -0500
-Subject: [PATCH] Non-working patch for deducing symlinked base-dirs
-
----
-CVE: CVE-2018-1000073
-
-Fixed in ruby 2.7.6.
-
-Upstream-Status: Backport [github.com/rubygems/rubygems/commit/1b931fc...]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
----
- lib/rubygems/package.rb | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb
-index dede959..cb9c74a 100644
---- a/lib/rubygems/package.rb
-+++ b/lib/rubygems/package.rb
-@@ -421,6 +421,8 @@ EOM
- destination_dir = File.expand_path destination_dir
-
- destination = File.join destination_dir, filename
-+ destination = File.realpath destination if
-+ File.respond_to? :realpath
- destination = File.expand_path destination
-
- raise Gem::Package::PathError.new(destination, destination_dir) unless
---
-1.7.9.5
-
diff --git a/meta/recipes-devtools/ruby/ruby_2.5.3.bb b/meta/recipes-devtools/ruby/ruby_2.5.3.bb
index e9f0453788..3fb427e90e 100644
--- a/meta/recipes-devtools/ruby/ruby_2.5.3.bb
+++ b/meta/recipes-devtools/ruby/ruby_2.5.3.bb
@@ -3,7 +3,6 @@ require ruby.inc
SRC_URI += " \
file://ruby-CVE-2017-9226.patch \
file://ruby-CVE-2017-9228.patch \
- file://CVE-2018-1000073.patch \
"

SRC_URI[md5sum] = "20c85b67846d49622ef3b24230803fef"
--
2.17.1


Re: CMake based recipes and defining CMAKE_BUILD_TYPE

Matthew Z Schuckmann
 

Aright thank you for checking into this, you went farther then I expected.
I will take the approach of setting it for the recipes I really care about and leave the rest alone.

Matt S.
________________________________________
From: Andreas Müller <schnitzeltony@gmail.com>
Sent: Wednesday, February 6, 2019 3:11 PM
To: Matt Schuckmann
Cc: yocto@yoctoproject.org
Subject: Re: [yocto] CMake based recipes and defining CMAKE_BUILD_TYPE

On Wed, Feb 6, 2019 at 11:53 PM Andreas Müller <schnitzeltony@gmail.com> wrote:

On Wed, Feb 6, 2019 at 11:24 PM Andreas Müller <schnitzeltony@gmail.com> wrote:

On Wed, Feb 6, 2019 at 11:05 PM Matt Schuckmann
<Matt.Schuckmann@planar.com> wrote:

Hi Andreas,

Thanks for the response, do you set build type in each recipe individually or is there some central .conf file or other other location that you set it?

Matt S.
Honestly: I do not set them yet because I thought RelWithDebInfo is
default. That assumption was based on some projects but I checked now:
it does not seem to be something to rely on...
Will build-/run-test this with my 'world':

diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
index fd40a9863e..a8e08e6d6f 100644
--- a/meta/classes/cmake.bbclass
+++ b/meta/classes/cmake.bbclass
@@ -153,6 +153,7 @@ cmake_do_configure() {
-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
-DCMAKE_VERBOSE_MAKEFILE=1 \
-DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 \
+ -DCMAKE_BUILD_TYPE=${@d.getVar(oe.utils.vartrue('DEBUG_BUILD',
'Debug', 'RelWithDebInfo', d))} \
${EXTRA_OECMAKE} \
-Wno-dev
}

Takes a while...
Not exactly: After short build I saw:

* There are some sed on '*-noconfig.cmake' they are going to break
* libeigen fails because it supports 'Debug' and 'Release' only (and I
bet there are more)

Will skip further tests and get the feeling that a common solution won't do...

Andreas


Re: CMake based recipes and defining CMAKE_BUILD_TYPE

Andreas Müller
 

On Wed, Feb 6, 2019 at 11:53 PM Andreas Müller <schnitzeltony@gmail.com> wrote:

On Wed, Feb 6, 2019 at 11:24 PM Andreas Müller <schnitzeltony@gmail.com> wrote:

On Wed, Feb 6, 2019 at 11:05 PM Matt Schuckmann
<Matt.Schuckmann@planar.com> wrote:

Hi Andreas,

Thanks for the response, do you set build type in each recipe individually or is there some central .conf file or other other location that you set it?

Matt S.
Honestly: I do not set them yet because I thought RelWithDebInfo is
default. That assumption was based on some projects but I checked now:
it does not seem to be something to rely on...
Will build-/run-test this with my 'world':

diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
index fd40a9863e..a8e08e6d6f 100644
--- a/meta/classes/cmake.bbclass
+++ b/meta/classes/cmake.bbclass
@@ -153,6 +153,7 @@ cmake_do_configure() {
-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
-DCMAKE_VERBOSE_MAKEFILE=1 \
-DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 \
+ -DCMAKE_BUILD_TYPE=${@d.getVar(oe.utils.vartrue('DEBUG_BUILD',
'Debug', 'RelWithDebInfo', d))} \
${EXTRA_OECMAKE} \
-Wno-dev
}

Takes a while...
Not exactly: After short build I saw:

* There are some sed on '*-noconfig.cmake' they are going to break
* libeigen fails because it supports 'Debug' and 'Release' only (and I
bet there are more)

Will skip further tests and get the feeling that a common solution won't do...

Andreas


Re: [PATCH 00/10] Misc fixes (cover letter only)

Paul Eggleton
 

Oops, yes, I forgot the [layerindex-web], my apologies.

I can cc the oe-devel list if people really want to see it there as well; up
to this point we've been using this list only. The other option would be a
dedicated list but I suspect that would have a very limited subscription.

Cheers,
Paul

On Thursday, 7 February 2019 11:24:24 AM NZDT akuster wrote:

Hello Paul.

On 2/6/19 2:00 PM, Paul Eggleton wrote:
The following changes since commit
61e9b048591adab88d1996646286e1d7df024bea:

Fix drop-down alignment on duplicates page (2018-11-20 11:58:42 +1300)

are available in the Git repository at:

git://git.yoctoproject.org/layerindex-web paule/fixes12
http://git.yoctoproject.org/cgit.cgi/layerindex-web/log/?h=paule/fixes12

Paul Eggleton (10):
Send people an email when another user adds them as a maintainer
Add links to other branch recipes in recipe detail
Fix errors due to races deleting bitbake temp files
local.conf: allow for upstream_tracking.inc to be missing
Use try...finally or with to ensure files get closed
Replace use of assert with exceptions
docker: add wget to dependencies
RRS: fix sorting arrow positioning
rrs_maintainer_history: check out layer branch before looking for
maintainers.inc
RRS: add tool to import/export upstream history data
Thanks for the updates and fixes. This is a very useful tool to both YP
and OE.

I had to look at what was actual changes to figure out what this patch
set was against. Should we change the "subject" to help clarify? ie
[layer-index][PATCH ...?

The layer index is hosted on OE. Should one of the OE mailing be CC'ed??

Yes I realize the sources are hosted on YP but the url for the tool is
http://layers.openembedded.org. can be confusing.

kind regards,
Armin

Dockerfile | 1 +
conf/local.conf | 2 +-
layerindex/bulkchange.py | 18 +-
layerindex/update.py | 4 +-
layerindex/update_layer.py | 14 +-
layerindex/utils.py | 21 ++-
layerindex/views.py | 70 ++++++--
rrs/tools/historytool.py | 196 +++++++++++++++++++++
rrs/tools/rrs_distros.py | 19 +-
rrs/tools/rrs_maintainer_history.py | 45 ++---
rrs/tools/rrs_upgrade_history.py | 4 +-
rrs/tools/rrs_upstream_history.py | 3 +-
rrs/tools/upgrade_history_internal.py | 3 +-
rrs/views.py | 2 +
templates/layerindex/maintemail.txt | 9 +
templates/layerindex/maintemailsubject.txt | 1 +
templates/layerindex/recipedetail.html | 27 +++
templates/rrs/maintainers.html | 2 +-
templates/rrs/recipedetail.html | 27 +++
templates/rrs/recipes.html | 2 +-
20 files changed, 392 insertions(+), 78 deletions(-)
create mode 100755 rrs/tools/historytool.py
create mode 100644 templates/layerindex/maintemail.txt
create mode 100644 templates/layerindex/maintemailsubject.txt

--

Paul Eggleton
Intel Open Source Technology Centre


Re: CMake based recipes and defining CMAKE_BUILD_TYPE

Andreas Müller
 

On Wed, Feb 6, 2019 at 11:24 PM Andreas Müller <schnitzeltony@gmail.com> wrote:

On Wed, Feb 6, 2019 at 11:05 PM Matt Schuckmann
<Matt.Schuckmann@planar.com> wrote:

Hi Andreas,

Thanks for the response, do you set build type in each recipe individually or is there some central .conf file or other other location that you set it?

Matt S.
Honestly: I do not set them yet because I thought RelWithDebInfo is
default. That assumption was based on some projects but I checked now:
it does not seem to be something to rely on...
Will build-/run-test this with my 'world':

diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
index fd40a9863e..a8e08e6d6f 100644
--- a/meta/classes/cmake.bbclass
+++ b/meta/classes/cmake.bbclass
@@ -153,6 +153,7 @@ cmake_do_configure() {
-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
-DCMAKE_VERBOSE_MAKEFILE=1 \
-DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 \
+ -DCMAKE_BUILD_TYPE=${@d.getVar(oe.utils.vartrue('DEBUG_BUILD',
'Debug', 'RelWithDebInfo', d))} \
${EXTRA_OECMAKE} \
-Wno-dev
}

Takes a while...

Andreas


Re: [PATCH 00/10] Misc fixes (cover letter only)

Armin Kuster
 

Hello Paul.

On 2/6/19 2:00 PM, Paul Eggleton wrote:
The following changes since commit 61e9b048591adab88d1996646286e1d7df024bea:

Fix drop-down alignment on duplicates page (2018-11-20 11:58:42 +1300)

are available in the Git repository at:

git://git.yoctoproject.org/layerindex-web paule/fixes12
http://git.yoctoproject.org/cgit.cgi/layerindex-web/log/?h=paule/fixes12

Paul Eggleton (10):
Send people an email when another user adds them as a maintainer
Add links to other branch recipes in recipe detail
Fix errors due to races deleting bitbake temp files
local.conf: allow for upstream_tracking.inc to be missing
Use try...finally or with to ensure files get closed
Replace use of assert with exceptions
docker: add wget to dependencies
RRS: fix sorting arrow positioning
rrs_maintainer_history: check out layer branch before looking for
maintainers.inc
RRS: add tool to import/export upstream history data
Thanks for the updates and fixes. This is  a very useful tool to both YP
and OE. 

I had to look at what was actual changes to figure out what this patch
set was against.  Should we change the "subject" to help clarify? ie
[layer-index][PATCH ...?

The layer index is hosted on OE. Should one of the  OE mailing be CC'ed??

Yes I realize the sources are hosted on YP but the url for the tool is
http://layers.openembedded.org. can be confusing.

kind regards,
Armin

Dockerfile | 1 +
conf/local.conf | 2 +-
layerindex/bulkchange.py | 18 +-
layerindex/update.py | 4 +-
layerindex/update_layer.py | 14 +-
layerindex/utils.py | 21 ++-
layerindex/views.py | 70 ++++++--
rrs/tools/historytool.py | 196 +++++++++++++++++++++
rrs/tools/rrs_distros.py | 19 +-
rrs/tools/rrs_maintainer_history.py | 45 ++---
rrs/tools/rrs_upgrade_history.py | 4 +-
rrs/tools/rrs_upstream_history.py | 3 +-
rrs/tools/upgrade_history_internal.py | 3 +-
rrs/views.py | 2 +
templates/layerindex/maintemail.txt | 9 +
templates/layerindex/maintemailsubject.txt | 1 +
templates/layerindex/recipedetail.html | 27 +++
templates/rrs/maintainers.html | 2 +-
templates/rrs/recipedetail.html | 27 +++
templates/rrs/recipes.html | 2 +-
20 files changed, 392 insertions(+), 78 deletions(-)
create mode 100755 rrs/tools/historytool.py
create mode 100644 templates/layerindex/maintemail.txt
create mode 100644 templates/layerindex/maintemailsubject.txt


Re: CMake based recipes and defining CMAKE_BUILD_TYPE

Andreas Müller
 

On Wed, Feb 6, 2019 at 11:05 PM Matt Schuckmann
<Matt.Schuckmann@planar.com> wrote:

Hi Andreas,

Thanks for the response, do you set build type in each recipe individually or is there some central .conf file or other other location that you set it?

Matt S.
Honestly: I do not set them yet because I thought RelWithDebInfo is
default. That assumption was based on some projects but I checked now:
it does not seem to be something to rely on...

Andreas


Re: CMake based recipes and defining CMAKE_BUILD_TYPE

Matthew Z Schuckmann
 

Hi Andreas,

Thanks for the response, do you set build type in each recipe individually or is there some central .conf file or other other location that you set it?

Matt S.
________________________________________
From: Andreas Müller <schnitzeltony@gmail.com>
Sent: Wednesday, February 6, 2019 1:31 PM
To: Matt Schuckmann
Cc: yocto@yoctoproject.org
Subject: Re: [yocto] CMake based recipes and defining CMAKE_BUILD_TYPE

On Wed, Feb 6, 2019 at 7:39 PM Matt Schuckmann
<Matt.Schuckmann@planar.com> wrote:

I'm trying to understand why the cmake.bbclass doesn't make any attempt to set CMAKE_BUILD_TYPE and what the design philosophy behind that is?

On the surface I would expect that the default build type would be Release but I can see how that might not always be the right choice. I'm really surprised that there isn't a global variable that can be set for this, am I missing something, or is it really expected that each recipe provide it if they care?


FYI I started looking into this when I realized that NDEBUG is not set for many (if not all) of my CMake based recipes and thus asserts are still enabled in my production code. This appears to be known behavior for CMake if CMAKE_BUILD_TYPE is not set.


Matt S.
Hi Matt,

This is not a full answer but Release is not a common target for us:
cmake will produce not containing debug info. With these debugging is
useless (and you'll get package qa warnings). If there is a default
target for us it is RelWithDebInfo.

Andreas


[PATCH 00/10] Misc fixes (cover letter only)

Paul Eggleton
 

The following changes since commit 61e9b048591adab88d1996646286e1d7df024bea:

Fix drop-down alignment on duplicates page (2018-11-20 11:58:42 +1300)

are available in the Git repository at:

git://git.yoctoproject.org/layerindex-web paule/fixes12
http://git.yoctoproject.org/cgit.cgi/layerindex-web/log/?h=paule/fixes12

Paul Eggleton (10):
Send people an email when another user adds them as a maintainer
Add links to other branch recipes in recipe detail
Fix errors due to races deleting bitbake temp files
local.conf: allow for upstream_tracking.inc to be missing
Use try...finally or with to ensure files get closed
Replace use of assert with exceptions
docker: add wget to dependencies
RRS: fix sorting arrow positioning
rrs_maintainer_history: check out layer branch before looking for
maintainers.inc
RRS: add tool to import/export upstream history data

Dockerfile | 1 +
conf/local.conf | 2 +-
layerindex/bulkchange.py | 18 +-
layerindex/update.py | 4 +-
layerindex/update_layer.py | 14 +-
layerindex/utils.py | 21 ++-
layerindex/views.py | 70 ++++++--
rrs/tools/historytool.py | 196 +++++++++++++++++++++
rrs/tools/rrs_distros.py | 19 +-
rrs/tools/rrs_maintainer_history.py | 45 ++---
rrs/tools/rrs_upgrade_history.py | 4 +-
rrs/tools/rrs_upstream_history.py | 3 +-
rrs/tools/upgrade_history_internal.py | 3 +-
rrs/views.py | 2 +
templates/layerindex/maintemail.txt | 9 +
templates/layerindex/maintemailsubject.txt | 1 +
templates/layerindex/recipedetail.html | 27 +++
templates/rrs/maintainers.html | 2 +-
templates/rrs/recipedetail.html | 27 +++
templates/rrs/recipes.html | 2 +-
20 files changed, 392 insertions(+), 78 deletions(-)
create mode 100755 rrs/tools/historytool.py
create mode 100644 templates/layerindex/maintemail.txt
create mode 100644 templates/layerindex/maintemailsubject.txt

--
2.17.2

10201 - 10220 of 54255