FWIW, I have had patches to drop mklibs for a long time:
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=akanavin/package-version-updates-later

I'd be happy to send them again.

Alex

On Mon, 17 May 2021 at 21:50, Mark Hatle <[email protected]>
wrote:

>
>
> On 5/17/21 2:46 PM, Andre McCurdy wrote:
> > On Mon, May 17, 2021 at 10:05 AM Jacob Kroon <[email protected]>
> wrote:
> >>
> >> In gcc 11 the default mode for C++ is now -std=gnu++17 instead of
> -std=gnu++14,
> >> in which support for dynamic exception specifications has been removed.
> >
> > As much as I'd like to see mklibs fully supported in OE, at some point
> > maybe we should just admit that it doesn't work and there's not enough
> > collective motivation to fix it.
> >
> > For mklibs to work, the build process should generate a PIC .a archive
> > for every .so shared library (ie static libs need to be built and
> > somehow forced to contain PIC object code - which may mean patching
> > Makefiles etc) and then the PIC .a files need to be available
> > alongside the .so libs when mklibs runs. We don't have any support for
> > doing that, so why keep pretending to support mklibs?
>
> We used to have exactly that.  The fact nobody is complaining it doesn't
> work
> tells me nobody is using this and we should remove it.
>
> The need for this on modern (embedded) systems is significantly less with a
> function altnerative to glibc.  (musl)
>
> --Mark
>
> >> See
> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0003r5.html
> >>
> >> Signed-off-by: Jacob Kroon <[email protected]>
> >> ---
> >>  .../no-dynamic-exception-specifications.patch | 420 ++++++++++++++++++
> >>  .../mklibs/mklibs-native_0.1.44.bb            |   1 +
> >>  2 files changed, 421 insertions(+)
> >>  create mode 100644
> meta/recipes-devtools/mklibs/files/no-dynamic-exception-specifications.patch
> >>
> >> diff --git
> a/meta/recipes-devtools/mklibs/files/no-dynamic-exception-specifications.patch
> b/meta/recipes-devtools/mklibs/files/no-dynamic-exception-specifications.patch
> >> new file mode 100644
> >> index 0000000000..5989a67c4f
> >> --- /dev/null
> >> +++
> b/meta/recipes-devtools/mklibs/files/no-dynamic-exception-specifications.patch
> >> @@ -0,0 +1,420 @@
> >> +In gcc 11 the default mode for C++ is now -std=gnu++17 instead of
> -std=gnu++14,
> >> +in which support for dynamic exception specifications has been removed.
> >> +
> >> +See
> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0003r5.html
> >> +
> >> +Upstream-Status: Pending
> >> +
> >> +Signed-off-by: Jacob Kroon <[email protected]>
> >> +
> >> +Index: mklibs-0.1.44/src/mklibs-readelf/elf.cpp
> >> +===================================================================
> >> +--- mklibs-0.1.44.orig/src/mklibs-readelf/elf.cpp
> >> ++++ mklibs-0.1.44/src/mklibs-readelf/elf.cpp
> >> +@@ -36,7 +36,7 @@ file::~file () throw ()
> >> +     delete *it;
> >> + }
> >> +
> >> +-file *file::open (const char *filename) throw (std::bad_alloc,
> std::runtime_error)
> >> ++file *file::open (const char *filename)
> >> + {
> >> +   struct stat buf;
> >> +   int fd;
> >> +@@ -72,7 +72,7 @@ file *file::open (const char *filename)
> >> + }
> >> +
> >> + template<typename _class>
> >> +-file *file::open_class(uint8_t *mem, size_t len) throw
> (std::bad_alloc, std::runtime_error)
> >> ++file *file::open_class(uint8_t *mem, size_t len)
> >> + {
> >> +   switch (mem[EI_DATA])
> >> +   {
> >> +@@ -86,7 +86,7 @@ file *file::open_class(uint8_t *mem, siz
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-file_data<_class, _data>::file_data(uint8_t *mem, size_t len) throw
> (std::bad_alloc, std::runtime_error)
> >> ++file_data<_class, _data>::file_data(uint8_t *mem, size_t len)
> >> + : file(mem, len)
> >> + {
> >> +   if (mem[EI_CLASS] != _class::id)
> >> +@@ -190,7 +190,7 @@ section_data<_class, _data>::section_dat
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-void section_data<_class, _data>::update(const file &file) throw
> (std::bad_alloc)
> >> ++void section_data<_class, _data>::update(const file &file)
> >> + {
> >> +   const section_type<section_type_STRTAB> &section =
> >> +     dynamic_cast<const section_type<section_type_STRTAB>
> &>(file.get_section(file.get_shstrndx()));
> >> +@@ -204,7 +204,7 @@ section_type<section_type_DYNAMIC>::~sec
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-section_real<_class, _data, section_type_DYNAMIC>::section_real(Shdr
> *header, uint8_t *mem) throw (std::bad_alloc)
> >> ++section_real<_class, _data, section_type_DYNAMIC>::section_real(Shdr
> *header, uint8_t *mem)
> >> + : section_data<_class, _data>(header, mem)
> >> + {
> >> +   if (this->type != SHT_DYNAMIC)
> >> +@@ -221,7 +221,7 @@ section_real<_class, _data, section_type
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-void section_real<_class, _data, section_type_DYNAMIC>::update(const
> file &file) throw (std::bad_alloc)
> >> ++void section_real<_class, _data, section_type_DYNAMIC>::update(const
> file &file)
> >> + {
> >> +   section_data<_class, _data>::update(file);
> >> +
> >> +@@ -243,7 +243,7 @@ section_type<section_type_DYNSYM>::~sect
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-section_real<_class, _data, section_type_DYNSYM>::section_real(Shdr
> *header, uint8_t *mem) throw (std::bad_alloc)
> >> ++section_real<_class, _data, section_type_DYNSYM>::section_real(Shdr
> *header, uint8_t *mem)
> >> + : section_data<_class, _data>(header, mem)
> >> + {
> >> +   if (this->type != SHT_DYNSYM)
> >> +@@ -260,7 +260,7 @@ section_real<_class, _data, section_type
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-void section_real<_class, _data, section_type_DYNSYM>::update(const
> file &file) throw (std::bad_alloc)
> >> ++void section_real<_class, _data, section_type_DYNSYM>::update(const
> file &file)
> >> + {
> >> +   section_data<_class, _data>::update (file);
> >> +
> >> +@@ -285,7 +285,7 @@ const version_definition *section_type<s
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-section_real<_class, _data,
> section_type_GNU_VERDEF>::section_real(Shdr *header, uint8_t *mem) throw
> (std::bad_alloc)
> >> ++section_real<_class, _data,
> section_type_GNU_VERDEF>::section_real(Shdr *header, uint8_t *mem)
> >> + : section_data<_class, _data>(header, mem)
> >> + {
> >> +   if (this->type != SHT_GNU_verdef)
> >> +@@ -307,7 +307,7 @@ section_real<_class, _data, section_type
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-void section_real<_class, _data,
> section_type_GNU_VERDEF>::update(const file &file) throw (std::bad_alloc)
> >> ++void section_real<_class, _data,
> section_type_GNU_VERDEF>::update(const file &file)
> >> + {
> >> +   section_data<_class, _data>::update(file);
> >> +
> >> +@@ -333,7 +333,7 @@ const version_requirement_entry *section
> >> +
> >> + template <typename _class, typename _data>
> >> + section_real<_class, _data, section_type_GNU_VERNEED>::
> >> +-section_real(Shdr *header, uint8_t *mem) throw (std::bad_alloc)
> >> ++section_real(Shdr *header, uint8_t *mem)
> >> + : section_data<_class, _data> (header, mem)
> >> + {
> >> +   if (this->type != SHT_GNU_verneed)
> >> +@@ -355,7 +355,7 @@ section_real(Shdr *header, uint8_t *mem)
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-void section_real<_class, _data,
> section_type_GNU_VERNEED>::update(const file &file) throw (std::bad_alloc)
> >> ++void section_real<_class, _data,
> section_type_GNU_VERNEED>::update(const file &file)
> >> + {
> >> +   section_data<_class, _data>::update(file);
> >> +
> >> +@@ -372,7 +372,7 @@ void section_real<_class, _data, section
> >> +
> >> + template <typename _class, typename _data>
> >> + section_real<_class, _data, section_type_GNU_VERSYM>::
> >> +-section_real (Shdr *header, uint8_t *mem) throw (std::bad_alloc)
> >> ++section_real (Shdr *header, uint8_t *mem)
> >> + : section_data<_class, _data> (header, mem)
> >> + {
> >> +   if (this->type != SHT_GNU_versym)
> >> +@@ -399,7 +399,7 @@ segment_data<_class, _data>::segment_dat
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-segment_real<_class, _data, segment_type_INTERP>::segment_real (Phdr
> *header, uint8_t *mem) throw (std::bad_alloc)
> >> ++segment_real<_class, _data, segment_type_INTERP>::segment_real (Phdr
> *header, uint8_t *mem)
> >> + : segment_data<_class, _data> (header, mem)
> >> + {
> >> +   if (this->type != PT_INTERP)
> >> +@@ -429,13 +429,13 @@ dynamic_data<_class, _data>::dynamic_dat
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-void dynamic_data<_class, _data>::update_string(const
> section_type<section_type_STRTAB> &section) throw (std::bad_alloc)
> >> ++void dynamic_data<_class, _data>::update_string(const
> section_type<section_type_STRTAB> &section)
> >> + {
> >> +   if (is_string)
> >> +     val_string = section.get_string(val);
> >> + }
> >> +
> >> +-std::string symbol::get_version () const throw (std::bad_alloc)
> >> ++std::string symbol::get_version () const
> >> + {
> >> +   if (verneed)
> >> +     return verneed->get_name();
> >> +@@ -445,7 +445,7 @@ std::string symbol::get_version () const
> >> +   return "Base";
> >> + }
> >> +
> >> +-std::string symbol::get_version_file () const throw (std::bad_alloc)
> >> ++std::string symbol::get_version_file () const
> >> + {
> >> +   if (verneed)
> >> +     return verneed->get_file();
> >> +@@ -453,7 +453,7 @@ std::string symbol::get_version_file ()
> >> +   return "None";
> >> + }
> >> +
> >> +-std::string symbol::get_name_version () const throw (std::bad_alloc)
> >> ++std::string symbol::get_name_version () const
> >> + {
> >> +   std::string ver;
> >> +
> >> +@@ -478,13 +478,13 @@ symbol_data<_class, _data>::symbol_data
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-void symbol_data<_class, _data>::update_string(const
> section_type<section_type_STRTAB> &section) throw (std::bad_alloc)
> >> ++void symbol_data<_class, _data>::update_string(const
> section_type<section_type_STRTAB> &section)
> >> + {
> >> +   name_string = section.get_string(name);
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-void symbol_data<_class, _data>::update_version(const file &file,
> uint16_t index) throw (std::bad_alloc)
> >> ++void symbol_data<_class, _data>::update_version(const file &file,
> uint16_t index)
> >> + {
> >> +   if (!file.get_section_GNU_VERSYM())
> >> +     return;
> >> +@@ -531,13 +531,13 @@ version_definition_data<_class, _data>::
> >> + }
> >> +
> >> + template <typename _class, typename _data>
> >> +-void version_definition_data<_class, _data>::update_string(const
> section_type<section_type_STRTAB> &section) throw (std::bad_alloc)
> >> ++void version_definition_data<_class, _data>::update_string(const
> section_type<section_type_STRTAB> &section)
> >> + {
> >> +   for (std::vector<uint32_t>::iterator it = names.begin(); it !=
> names.end(); ++it)
> >> +     names_string.push_back(section.get_string(*it));
> >> + }
> >> +
> >> +-version_requirement::version_requirement() throw (std::bad_alloc)
> >> ++version_requirement::version_requirement()
> >> + : file_string("None")
> >> + { }
> >> +
> >> +@@ -561,7 +561,7 @@ version_requirement_data<_class, _data>:
> >> +
> >> + template <typename _class, typename _data>
> >> + void version_requirement_data<_class, _data>::
> >> +-update_string(const section_type<section_type_STRTAB> &section) throw
> (std::bad_alloc)
> >> ++update_string(const section_type<section_type_STRTAB> &section)
> >> + {
> >> +   file_string = section.get_string(file);
> >> +
> >> +@@ -596,7 +596,7 @@ version_requirement_entry_data(Vernaux *
> >> +
> >> + template <typename _class, typename _data>
> >> + void version_requirement_entry_data<_class, _data>::
> >> +-update_string(const section_type<section_type_STRTAB> &section) throw
> (std::bad_alloc)
> >> ++update_string(const section_type<section_type_STRTAB> &section)
> >> + {
> >> +   name_string = section.get_string(name);
> >> + }
> >> +Index: mklibs-0.1.44/src/mklibs-readelf/elf.hpp
> >> +===================================================================
> >> +--- mklibs-0.1.44.orig/src/mklibs-readelf/elf.hpp
> >> ++++ mklibs-0.1.44/src/mklibs-readelf/elf.hpp
> >> +@@ -49,7 +49,7 @@ namespace Elf
> >> +       const uint16_t get_shstrndx() const throw () { return shstrndx;
> }
> >> +
> >> +       const std::vector<section *> get_sections() const throw () {
> return sections; };
> >> +-      const section &get_section(unsigned int i) const throw
> (std::out_of_range) { return *sections.at(i); };
> >> ++      const section &get_section(unsigned int i) const { return *
> sections.at(i); };
> >> +       const section_type<section_type_DYNAMIC> *get_section_DYNAMIC()
> const throw () { return section_DYNAMIC; };
> >> +       const section_type<section_type_DYNSYM> *get_section_DYNSYM()
> const throw () { return section_DYNSYM; };
> >> +       const section_type<section_type_GNU_VERDEF>
> *get_section_GNU_VERDEF() const throw () { return section_GNU_VERDEF; };
> >> +@@ -59,13 +59,13 @@ namespace Elf
> >> +       const std::vector<segment *> get_segments() const throw () {
> return segments; };
> >> +       const segment_type<segment_type_INTERP> *get_segment_INTERP()
> const throw () { return segment_INTERP; };
> >> +
> >> +-      static file *open(const char *filename) throw (std::bad_alloc,
> std::runtime_error);
> >> ++      static file *open(const char *filename);
> >> +
> >> +     protected:
> >> +-      file(uint8_t *mem, size_t len) throw (std::bad_alloc) :
> mem(mem), len(len) { }
> >> ++      file(uint8_t *mem, size_t len) : mem(mem), len(len) { }
> >> +
> >> +       template<typename _class>
> >> +-        static file *open_class(uint8_t *, size_t) throw
> (std::bad_alloc, std::runtime_error);
> >> ++        static file *open_class(uint8_t *, size_t);
> >> +
> >> +       uint16_t type;
> >> +       uint16_t machine;
> >> +@@ -128,7 +128,7 @@ namespace Elf
> >> +     class section_type<section_type_STRTAB> : public virtual section
> >> +     {
> >> +       public:
> >> +-        std::string get_string(uint32_t offset) const throw
> (std::bad_alloc)
> >> ++        std::string get_string(uint32_t offset) const
> >> +         {
> >> +           return std::string(reinterpret_cast<const char *> (mem +
> offset));
> >> +         }
> >> +@@ -263,10 +263,10 @@ namespace Elf
> >> +       uint8_t get_bind () const throw () { return bind; }
> >> +       uint8_t get_type () const throw () { return type; }
> >> +       const std::string &get_name_string() const throw () { return
> name_string; }
> >> +-      std::string get_version() const throw (std::bad_alloc);
> >> +-      std::string get_version_file() const throw (std::bad_alloc);
> >> ++      std::string get_version() const;
> >> ++      std::string get_version_file() const;
> >> +       uint16_t get_version_data() const throw () { return versym; }
> >> +-      std::string get_name_version() const throw (std::bad_alloc);
> >> ++      std::string get_name_version() const;
> >> +
> >> +     protected:
> >> +       uint32_t name;
> >> +@@ -305,7 +305,7 @@ namespace Elf
> >> +   class version_requirement
> >> +   {
> >> +     public:
> >> +-      version_requirement() throw (std::bad_alloc);
> >> ++      version_requirement();
> >> +       virtual ~version_requirement () throw () { }
> >> +
> >> +       const std::string &get_file() const throw () { return
> file_string; }
> >> +Index: mklibs-0.1.44/src/mklibs-readelf/elf_data.hpp
> >> +===================================================================
> >> +--- mklibs-0.1.44.orig/src/mklibs-readelf/elf_data.hpp
> >> ++++ mklibs-0.1.44/src/mklibs-readelf/elf_data.hpp
> >> +@@ -94,7 +94,7 @@ namespace Elf
> >> +     class file_data : public file
> >> +     {
> >> +       public:
> >> +-        file_data(uint8_t *, size_t len) throw (std::bad_alloc,
> std::runtime_error);
> >> ++        file_data(uint8_t *, size_t len);
> >> +
> >> +         const uint8_t get_class() const throw () { return _class::id;
> }
> >> +         const uint8_t get_data() const throw () { return _data::id; }
> >> +@@ -109,7 +109,7 @@ namespace Elf
> >> +       public:
> >> +         section_data(Shdr *, uint8_t *) throw ();
> >> +
> >> +-        virtual void update(const file &) throw (std::bad_alloc);
> >> ++        virtual void update(const file &);
> >> +     };
> >> +
> >> +   template <typename _class, typename _data, typename _type>
> >> +@@ -133,9 +133,9 @@ namespace Elf
> >> +         typedef typename _elfdef<_class>::Shdr Shdr;
> >> +
> >> +       public:
> >> +-        section_real(Shdr *, uint8_t *) throw (std::bad_alloc);
> >> ++        section_real(Shdr *, uint8_t *);
> >> +
> >> +-        void update(const file &) throw (std::bad_alloc);
> >> ++        void update(const file &);
> >> +     };
> >> +
> >> +   template <typename _class, typename _data>
> >> +@@ -147,9 +147,9 @@ namespace Elf
> >> +         typedef typename _elfdef<_class>::Shdr Shdr;
> >> +
> >> +       public:
> >> +-        section_real(Shdr *, uint8_t *) throw (std::bad_alloc);
> >> ++        section_real(Shdr *, uint8_t *);
> >> +
> >> +-        void update(const file &) throw (std::bad_alloc);
> >> ++        void update(const file &);
> >> +     };
> >> +
> >> +   template <typename _class, typename _data>
> >> +@@ -161,9 +161,9 @@ namespace Elf
> >> +         typedef typename _elfdef<_class>::Shdr Shdr;
> >> +
> >> +       public:
> >> +-        section_real(Shdr *, uint8_t *) throw (std::bad_alloc);
> >> ++        section_real(Shdr *, uint8_t *);
> >> +
> >> +-        void update(const file &) throw (std::bad_alloc);
> >> ++        void update(const file &);
> >> +     };
> >> +
> >> +   template <typename _class, typename _data>
> >> +@@ -175,9 +175,9 @@ namespace Elf
> >> +         typedef typename _elfdef<_class>::Shdr Shdr;
> >> +
> >> +       public:
> >> +-        section_real(Shdr *, uint8_t *) throw (std::bad_alloc);
> >> ++        section_real(Shdr *, uint8_t *);
> >> +
> >> +-        void update(const file &) throw (std::bad_alloc);
> >> ++        void update(const file &);
> >> +     };
> >> +
> >> +   template <typename _class, typename _data>
> >> +@@ -189,7 +189,7 @@ namespace Elf
> >> +         typedef typename _elfdef<_class>::Shdr Shdr;
> >> +
> >> +       public:
> >> +-        section_real(Shdr *, uint8_t *) throw (std::bad_alloc);
> >> ++        section_real(Shdr *, uint8_t *);
> >> +     };
> >> +
> >> +   template <typename _class, typename _data>
> >> +@@ -220,7 +220,7 @@ namespace Elf
> >> +         typedef typename _elfdef<_class>::Phdr Phdr;
> >> +
> >> +       public:
> >> +-        segment_real (Phdr *, uint8_t *) throw (std::bad_alloc);
> >> ++        segment_real (Phdr *, uint8_t *);
> >> +     };
> >> +
> >> +   template <typename _class, typename _data>
> >> +@@ -232,7 +232,7 @@ namespace Elf
> >> +       public:
> >> +         dynamic_data (Dyn *) throw ();
> >> +
> >> +-        void update_string(const section_type<section_type_STRTAB> &)
> throw (std::bad_alloc);
> >> ++        void update_string(const section_type<section_type_STRTAB> &);
> >> +     };
> >> +
> >> +   template <typename _class, typename _data>
> >> +@@ -244,8 +244,8 @@ namespace Elf
> >> +       public:
> >> +         symbol_data (Sym *) throw ();
> >> +
> >> +-        void update_string(const section_type<section_type_STRTAB> &)
> throw (std::bad_alloc);
> >> +-        virtual void update_version (const file &, uint16_t) throw
> (std::bad_alloc);
> >> ++        void update_string(const section_type<section_type_STRTAB> &);
> >> ++        virtual void update_version (const file &, uint16_t);
> >> +     };
> >> +
> >> +   template <typename _class, typename _data>
> >> +@@ -257,7 +257,7 @@ namespace Elf
> >> +
> >> +         version_definition_data (Verdef *) throw ();
> >> +
> >> +-        void update_string(const section_type<section_type_STRTAB> &)
> throw (std::bad_alloc);
> >> ++        void update_string(const section_type<section_type_STRTAB> &);
> >> +     };
> >> +
> >> +   template <typename _class, typename _data>
> >> +@@ -269,7 +269,7 @@ namespace Elf
> >> +
> >> +         version_requirement_data (Verneed *) throw ();
> >> +
> >> +-        void update_string(const section_type<section_type_STRTAB> &)
> throw (std::bad_alloc);
> >> ++        void update_string(const section_type<section_type_STRTAB> &);
> >> +     };
> >> +
> >> +   template <typename _class, typename _data>
> >> +@@ -280,7 +280,7 @@ namespace Elf
> >> +
> >> +         version_requirement_entry_data (Vernaux *, const
> version_requirement &) throw ();
> >> +
> >> +-        void update_string(const section_type<section_type_STRTAB> &)
> throw (std::bad_alloc);
> >> ++        void update_string(const section_type<section_type_STRTAB> &);
> >> +     };
> >> + }
> >> +
> >> diff --git a/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb
> b/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb
> >> index 1784af1f4c..8ecdb17be3 100644
> >> --- a/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb
> >> +++ b/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb
> >> @@ -12,6 +12,7 @@ SRC_URI = "
> http://snapshot.debian.org/archive/debian/20180828T214102Z/pool/main/
> >>         file://avoid-failure-on-symbol-provided-by-application.patch \
> >>         file://show-GNU-unique-symbols-as-provided-symbols.patch \
> >>         file://fix_cross_compile.patch \
> >> +       file://no-dynamic-exception-specifications.patch \
> >>  "
> >>
> >>  SRC_URI[md5sum] = "6b6eeb9b4016c6a7317acc28c89e32cc"
> >>
> >>
> >>
> >>
> >>
> >>
> >>
>
> 
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#151995): 
https://lists.openembedded.org/g/openembedded-core/message/151995
Mute This Topic: https://lists.openembedded.org/mt/82891868/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to