Re: [yocto] internet radio
Hi, I tried to install mplayer and I got this message : Loading cache: 100% |#| Time: 0:00:01 Loaded 2794 entries from dependency cache. Parsing recipes: 100% |###| Time: 0:00:01 Parsing of 2041 .bb files complete (2040 cached, 1 parsed). 2794 targets, 208 skipped, 0 masked, 0 errors. WARNING: No bb files matched BBFILE_PATTERN_openembedded-layer '^/home/bianchi77/poky/meta-openembedded/meta-oe/' WARNING: No bb files matched BBFILE_PATTERN_meta-python '^/home/bianchi77/poky/meta-openembedded/meta-python/' WARNING: No bb files matched BBFILE_PATTERN_multimedia-layer '^/home/bianchi77/poky/meta-openembedded/meta-multimedia/' NOTE: Resolving any missing task queue dependencies ERROR: Nothing RPROVIDES 'mplayer' (but /home/bianchi77/poky/meta-openembedded/meta-xfce/recipes-core/images/core-image-minimal-xfce-browser.bb RDEPENDS on or otherwise requires it) NOTE: Runtime target 'mplayer' is unbuildable, removing... Missing or unbuildable dependency chain was: ['mplayer'] ERROR: Required build target 'core-image-minimal-xfce-browser' has no buildable providers. Missing or unbuildable dependency chain was: ['core-image-minimal-xfce-browser', 'mplayer'] What do I miss here ? bblayers : BBLAYERS ?= " \ /home/bianchi77/poky/meta \ /home/bianchi77/poky/meta-poky \ /home/bianchi77/poky/meta-yocto-bsp \ /home/bianchi77/poky/openembedded-core \ /home/bianchi77/poky/meta-openembedded \ /home/bianchi77/poky/meta-openembedded/meta-oe \ /home/bianchi77/poky/meta-openembedded/meta-xfce \ /home/bianchi77/poky/meta-openembedded/meta-gnome \ /home/bianchi77/poky/meta-openembedded/meta-python \ /home/bianchi77/poky/meta-openembedded/meta-multimedia \ /home/bianchi77/poky/meta-browser \ " and image .bb : IMAGE_INSTALL += "linux-firmware" IMAGE_INSTALL += "mplayer" IMAGE_INSTALL += "strace nano firefox gstreamer" IMAGE_FEATURES += "ssh-server-openssh" On 23/06/17 21:42, Khem Raj wrote: On Fri, Jun 23, 2017 at 1:18 AM, Riko Ho wrote: Hello everyone, What do you suggest me using for internet radio / playing multimedia on GUI ? Which recipe is suitable for it ? may be you could use mplayer or kodi Thanks -- /***/ Sent by Ubuntu LTS 16.04, 谢谢, Regards, Riko Ho /***/ -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto -- * /***/ Sent by Ubuntu LTS 16.04, 谢谢, Regards, Riko Ho /***/ * -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] internet radio
and this one ? http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-multimedia/mplayer is it gui or text based ? On 23/06/17 21:42, Khem Raj wrote: On Fri, Jun 23, 2017 at 1:18 AM, Riko Ho wrote: Hello everyone, What do you suggest me using for internet radio / playing multimedia on GUI ? Which recipe is suitable for it ? may be you could use mplayer or kodi Thanks -- /***/ Sent by Ubuntu LTS 16.04, 谢谢, Regards, Riko Ho /***/ -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto -- * /***/ Sent by Ubuntu LTS 16.04, 谢谢, Regards, Riko Ho /***/ * -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] internet radio
This one ? http://layers.openembedded.org/layerindex/branch/master/layer/meta-multimedia/ On 23/06/17 21:42, Khem Raj wrote: On Fri, Jun 23, 2017 at 1:18 AM, Riko Ho wrote: Hello everyone, What do you suggest me using for internet radio / playing multimedia on GUI ? Which recipe is suitable for it ? may be you could use mplayer or kodi Thanks -- /***/ Sent by Ubuntu LTS 16.04, 谢谢, Regards, Riko Ho /***/ -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto -- * /***/ Sent by Ubuntu LTS 16.04, 谢谢, Regards, Riko Ho /***/ * -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] Compiling meta-browser ==>chromium ? cleaning ?
it can be compiled and image can be written to the board but chromium got error : /usr/bin/chromium/chrome: error while loading shared libraries: libaccessibility.so: cannot open shared object file: No such file or directory What do I miss here on compiling ? could it be a not complete library on my configuration ? any clues ? thanks On 21/06/17 15:37, Gunnar Andersson wrote: On Wed, 2017-06-21 at 12:42 +0800, Riko Ho wrote: did I put it wrongly ? ... browser/chromium/chromium_54.0.2810.2.bb:7: unparsed line: 'EXTRA_OEGYP_prepend = " -Dcomponent=shared_library Maybe your line break did not use a backslash? It was lost, or just assumed, in Khem's example. See recipe syntax in Yocto manual [1]. Look for the item "Line continuation". HTH - Gunnar [1] http://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#un derstanding-recipe-syntax -- Gunnar Andersson Development Lead GENIVI Alliance -- * /***/ Sent by Ubuntu LTS 16.04, 谢谢, Regards, Riko Ho /***/ * -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] RTL8192EU question ?
Hello Everyone, I tried to connect rev B But I got this message below repeating, usb 1-1.1: This Realtek USB WiFi dongle (0x0bda:0x818b) is untested! usb 1-1.1: Please report results to jes.soren...@gmail.com usb 1-1.1: Vendor: Realtek usb 1-1.1: Product: 802.11n NIC usb 1-1.1: Serial: ��� usb 1-1.1: rtl8192eu_parse_efuse: dumping efuse (0x200 bytes): usb 1-1.1: 00: 29 81 00 7c 01 40 03 00 usb 1-1.1: 08: 40 74 04 50 14 00 00 00 usb 1-1.1: 10: 2e 2e 2e 2e 2e 2e 2e 2e usb 1-1.1: 18: 2e 2e 2e 02 ef ef ff ff usb 1-1.1: 20: ff ff ff ff ff ff ff ff usb 1-1.1: 28: ff ff ff ff ff ff ff ff usb 1-1.1: 30: ff ff ff ff ff ff ff ff usb 1-1.1: 38: ff ff 29 29 29 29 29 29 usb 1-1.1: 40: 2e 2e 2e 2e 2e 02 ef ef usb 1-1.1: 48: ff ff ff ff ff ff ff ff usb 1-1.1: 50: ff ff ff ff ff ff ff ff usb 1-1.1: 58: ff ff ff ff ff ff ff ff usb 1-1.1: 60: ff ff ff ff ff ff ff ff usb 1-1.1: 68: ff ff ff ff ff ff ff ff usb 1-1.1: 70: ff ff ff ff ff ff ff ff usb 1-1.1: 78: ff ff ff ff ff ff ff ff usb 1-1.1: 80: ff ff ff ff ff ff ff ff usb 1-1.1: 88: ff ff ff ff ff ff ff ff usb 1-1.1: 90: ff ff ff ff ff ff ff ff usb 1-1.1: 98: ff ff ff ff ff ff ff ff usb 1-1.1: a0: ff ff ff ff ff ff ff ff usb 1-1.1: a8: ff ff ff ff ff ff ff ff usb 1-1.1: b0: ff ff ff ff ff ff ff ff usb 1-1.1: b8: 20 20 1a 00 00 00 ff ff usb 1-1.1: c0: ff 01 00 10 00 00 00 ff usb 1-1.1: c8: 00 00 ff ff ff ff ff ff usb 1-1.1: d0: da 0b 8b 81 e6 47 02 00 usb 1-1.1: d8: 0b 81 a2 a5 60 09 03 52 usb 1-1.1: e0: 65 61 6c 74 65 6b 0d 03 usb 1-1.1: e8: 38 30 32 2e 31 31 6e 20 usb 1-1.1: f0: 4e 49 43 00 ff ff ff ff usb 1-1.1: f8: ff ff ff ff ff ff ff ff usb 1-1.1: 100: ff ff ff ff ff ff ff ff usb 1-1.1: 108: ff ff ff ff ff ff ff ff usb 1-1.1: 110: ff ff ff ff ff ff ff 0d usb 1-1.1: 118: 03 00 05 00 30 00 00 00 usb 1-1.1: 120: 00 93 ff ff ff ff ff ff usb 1-1.1: 128: ff ff ff ff ff ff ff ff usb 1-1.1: 130: f6 a8 98 2d 03 92 98 00 usb 1-1.1: 138: fc 8c 00 11 9b 44 02 0a usb 1-1.1: 140: ff ff ff ff ff ff ff ff usb 1-1.1: 148: ff ff ff ff ff ff ff ff usb 1-1.1: 150: ff ff ff ff ff ff ff ff usb 1-1.1: 158: ff ff ff ff ff ff ff ff usb 1-1.1: 160: ff ff ff ff ff ff ff ff usb 1-1.1: 168: ff ff ff ff ff ff ff ff usb 1-1.1: 170: ff ff ff ff ff ff ff ff usb 1-1.1: 178: ff ff ff ff ff ff ff ff usb 1-1.1: 180: ff ff ff ff ff ff ff ff usb 1-1.1: 188: ff ff ff ff ff ff ff ff usb 1-1.1: 190: ff ff ff ff ff ff ff ff usb 1-1.1: 198: ff ff ff ff ff ff ff ff usb 1-1.1: 1a0: ff ff ff ff ff ff ff ff usb 1-1.1: 1a8: ff ff ff ff ff ff ff ff usb 1-1.1: 1b0: ff ff ff ff ff ff ff ff usb 1-1.1: 1b8: ff ff ff ff ff ff ff ff usb 1-1.1: 1c0: ff ff ff ff ff ff ff ff usb 1-1.1: 1c8: ff ff ff ff ff ff ff ff usb 1-1.1: 1d0: ff ff ff ff ff ff ff ff usb 1-1.1: 1d8: ff ff ff ff ff ff ff ff usb 1-1.1: 1e0: ff ff ff ff ff ff ff ff usb 1-1.1: 1e8: ff ff ff ff ff ff ff ff usb 1-1.1: 1f0: ff ff ff ff ff ff ff ff usb 1-1.1: 1f8: ff ff ff ff ff ff ff ff usb 1-1.1: RTL8192EU rev B (SMIC) 2T2R, TX queues 3, WiFi=1, BT=0, GPS=0, HI PA=0 usb 1-1.1: RTL8192EU MAC: 00:0b:81:a2:a5:60 usb 1-1.1: rtl8xxxu: Loading firmware rtlwifi/rtl8192eu_nic.bin usb 1-1.1: Firmware revision 19.0 (signature 0x92e1) what issue do I get here? Thanks -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] using clang for one recipe
On Fri, Jun 23, 2017 at 6:55 PM, Trevor Woerner wrote: > On Fri 2017-06-23 @ 03:57:06 PM, Khem Raj wrote: >> On Fri, Jun 23, 2017 at 3:39 PM, Trevor Woerner wrote: >> > Adding that line, and adding meta-clang to bblayers.conf, did get the >> > llvm/clang compiler built and installed to recipe-sysroot-native. But >> > the moment it starts to build the package, it fails immediately with: >> > >> > | fatal error: 'string' file not found >> > | #include >> > | ^~~~ >> > >> > Did I miss a step? That seems like a pretty basic thing that would be >> > needed for using a toolchain. If feels like I'm missing something; >> > like I need to add something else to my local.conf. Thoughts? >> > Suggestions? >> >> which package is it ? it seems its missing proper -I paths.? > > I'm investigating moving chromium to a newer version, specifically something > much closer to the current Linux stable (59.0.3071.109). My understanding is > the chromium developers use clang, which would explain why it's always so much > work to get it to compile with gcc. If I can get chromium to build with clang, > I think it would make future maintenance much easier. Switching from gyp to gn > was easy, but getting this newer version to build with gcc7 is a challenge. > > When I go to the recipe-sysroot-native, I find clang in usr/bin. But from that > base location if I do a > > $ find . -name "*string*" -print > > I don't find any such include files. Should they not be installed to the > native sysroot alongside clang itself? > > Here's one example of a failing compile: > > | [16/25529] CXX obj/base/allocator/tcmalloc/sysinfo.o > | FAILED: obj/base/allocator/tcmalloc/sysinfo.o > | ../../../recipe-sysroot-native/usr/bin/clang++ -MMD -MF > obj/base/allocator/tcmalloc/sysinfo.o.d -DNO_HEAP_CHECK > -DV8_DEPRECATION_WARNINGS -DUSE_UDEV -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 > -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DDISABLE_NACL > -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL > -DCHROMIUM_BUILD -DENABLE_MEDIA_ROUTER=1 -DFIELDTRIAL_TESTING_ENABLED > -DCR_CLANG_REVISION=\"299960-1\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE > -D_LARGEFILE64_SOURCE -DCOMPONENT_BUILD -D_DEBUG > -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 > -DTCMALLOC_FOR_DEBUGALLOCATION -DTCMALLOC_DONT_REPLACE_SYSTEM_ALLOC > -I../../base/allocator -I../../third_party/tcmalloc/chromium/src/base > -I../../third_party/tcmalloc/chromium/src -I../.. -Igen -fno-strict-aliasing > --param=ssp-buffer-size=4 -fstack-protector -Wno-builtin-macro-redefined > -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -funwind-tables -fPIC -pipe > -fcolor-diagnostics --target=arm-linux-gnueabihf -march= armv7-a -mfloat-abi=hard -mtune=generic-armv7-a -pthread -mfpu=neon -O0 -fno-omit-frame-pointer -g2 --sysroot=../../build/linux/debian_jessie_arm-sysroot -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wall -Wno-unused-variable -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-unused-lambda-capture -Wno-user-defined-warnings -Wno-reorder -Wno-unused-function -Wno-unused-local-typedefs -Wno-unused-private-field -Wno-sign-compare -Wno-unused-result -fvisibility-inlines-hidden -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -std=gnu++11 -fno-rtti -fno-exceptions -Wno-deprecated -c ../../third_party/tcmalloc/chromium/src/base/sysinfo.cc -o obj/base/allocator/tcmalloc/sysinfo.o > | In file included from > ../../third_party/tcmalloc/chromium/src/base/sysinfo.cc:62: > | In file included from > ../../third_party/tcmalloc/chromium/src/base/sysinfo.h:49: > | In file included from > ../../third_party/tcmalloc/chromium/src/base/logging.h:49: > | ../../third_party/tcmalloc/chromium/src/base/commandlineflags.h:52:10: > fatal error: 'string' file not found > | #include > | ^~~~ > | 1 error generated. > > > I can send you the non-working, partial recipe if you're interested too. Yes chrome uses clang primarily. I think whats missing it dependency on C++ runtime. default is libstdc++ so I guess you have to add a dependency on gcc-runtime -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] using clang for one recipe
On Fri 2017-06-23 @ 03:57:06 PM, Khem Raj wrote: > On Fri, Jun 23, 2017 at 3:39 PM, Trevor Woerner wrote: > > Adding that line, and adding meta-clang to bblayers.conf, did get the > > llvm/clang compiler built and installed to recipe-sysroot-native. But > > the moment it starts to build the package, it fails immediately with: > > > > | fatal error: 'string' file not found > > | #include > > | ^~~~ > > > > Did I miss a step? That seems like a pretty basic thing that would be > > needed for using a toolchain. If feels like I'm missing something; > > like I need to add something else to my local.conf. Thoughts? > > Suggestions? > > which package is it ? it seems its missing proper -I paths.? I'm investigating moving chromium to a newer version, specifically something much closer to the current Linux stable (59.0.3071.109). My understanding is the chromium developers use clang, which would explain why it's always so much work to get it to compile with gcc. If I can get chromium to build with clang, I think it would make future maintenance much easier. Switching from gyp to gn was easy, but getting this newer version to build with gcc7 is a challenge. When I go to the recipe-sysroot-native, I find clang in usr/bin. But from that base location if I do a $ find . -name "*string*" -print I don't find any such include files. Should they not be installed to the native sysroot alongside clang itself? Here's one example of a failing compile: | [16/25529] CXX obj/base/allocator/tcmalloc/sysinfo.o | FAILED: obj/base/allocator/tcmalloc/sysinfo.o | ../../../recipe-sysroot-native/usr/bin/clang++ -MMD -MF obj/base/allocator/tcmalloc/sysinfo.o.d -DNO_HEAP_CHECK -DV8_DEPRECATION_WARNINGS -DUSE_UDEV -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DDISABLE_NACL -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DENABLE_MEDIA_ROUTER=1 -DFIELDTRIAL_TESTING_ENABLED -DCR_CLANG_REVISION=\"299960-1\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DCOMPONENT_BUILD -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -DTCMALLOC_FOR_DEBUGALLOCATION -DTCMALLOC_DONT_REPLACE_SYSTEM_ALLOC -I../../base/allocator -I../../third_party/tcmalloc/chromium/src/base -I../../third_party/tcmalloc/chromium/src -I../.. -Igen -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -funwind-tables -fPIC -pipe -fcolor-diagnostics --target=arm-linux-gnueabihf -march=ar mv7-a -mfloat-abi=hard -mtune=generic-armv7-a -pthread -mfpu=neon -O0 -fno-omit-frame-pointer -g2 --sysroot=../../build/linux/debian_jessie_arm-sysroot -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wall -Wno-unused-variable -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-unused-lambda-capture -Wno-user-defined-warnings -Wno-reorder -Wno-unused-function -Wno-unused-local-typedefs -Wno-unused-private-field -Wno-sign-compare -Wno-unused-result -fvisibility-inlines-hidden -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -std=gnu++11 -fno-rtti -fno-exceptions -Wno-deprecated -c ../../third_party/tcmalloc/chromium/src/base/sysinfo.cc -o obj/base/allocator/tcmalloc/sysinfo.o | In file included from ../../third_party/tcmalloc/chromium/src/base/sysinfo.cc:62: | In file included from ../../third_party/tcmalloc/chromium/src/base/sysinfo.h:49: | In file included from ../../third_party/tcmalloc/chromium/src/base/logging.h:49: | ../../third_party/tcmalloc/chromium/src/base/commandlineflags.h:52:10: fatal error: 'string' file not found | #include | ^~~~ | 1 error generated. I can send you the non-working, partial recipe if you're interested too. -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] New meta-quirky layer imports 140 packages
Hi guys, I am new to OE, only been using it about two months. I undertook the challenge of building the entire Puppy Linux and Quirky Linux distro from source in OE. I had to import approximately 140 packages, there are some failures. Some of those I can probably revisit, as my ability with OE has been slowly moving up the learning curve. Thanks to the guys who created those layers that I was able to use, such as meta-office and meta-browser -- so have libreoffice and firefox in my build. See my blog announcement: http://barryk.org/news/?viewDetailed=00576 And it is all on github, with a nice readme: https://github.com/bkauler/oe-qky-src Due to the fact that I am still somewhere low on the OE learning curve, if anyone notices anything dumb in my layer, let me know. Or any improvements or fixes. Regards, Barry Kauler -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] How do you remove an IMAGEFS?
x86-base.inc adds "live" to IMAGE_FSTYPES. I have no need for a live image, or an iso, so I thought adding IMAGE_FSTYPES_remove = "live iso" to my image recipe might work, but it complained in do_bootimg that my recipe "depends upon non-existent task do_image_ext4". On a hunch, I movved the IMAGE_FSTYPES_remove to before inheriting core-image, and then it didn't complain, but it didn't build ANY images. So what's the right way to suppress live image and iso image generation, where those things are included in some stock config file somewhere? -- Ciao, Paul D. DeRocco Paulmailto:pdero...@ix.netcom.com -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] using clang for one recipe
On Fri, Jun 23, 2017 at 3:39 PM, Trevor Woerner wrote: > I want to have one recipe build with clang instead of gcc (gcc is > being used for the rest of the image). I thought this was as simple as > adding the following line to the recipe: > > TOOLCHAIN = "clang" yes thats what should do it. > > Adding that line, and adding meta-clang to bblayers.conf, did get the > llvm/clang compiler built and installed to recipe-sysroot-native. But > the moment it starts to build the package, it fails immediately with: > > | fatal error: 'string' file not found > | #include > | ^~~~ > > Did I miss a step? That seems like a pretty basic thing that would be > needed for using a toolchain. If feels like I'm missing something; > like I need to add something else to my local.conf. Thoughts? > Suggestions? which package is it ? it seems its missing proper -I paths.? > > I went looking for examples of recipes using clang and found > meta-openembedded/meta-oe/recipes-support/tbb.bb which includes: > > COMPILER ?= "gcc" > COMPILER_toolchain-clang = "clang" > > Odd. Why "COMPILER" and not "TOOLCHAIN" like meta-clang's README mentions? this is tbb specific variable not clang or gcc specific. > > Best regards, > Trevor -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] using clang for one recipe
I want to have one recipe build with clang instead of gcc (gcc is being used for the rest of the image). I thought this was as simple as adding the following line to the recipe: TOOLCHAIN = "clang" Adding that line, and adding meta-clang to bblayers.conf, did get the llvm/clang compiler built and installed to recipe-sysroot-native. But the moment it starts to build the package, it fails immediately with: | fatal error: 'string' file not found | #include | ^~~~ Did I miss a step? That seems like a pretty basic thing that would be needed for using a toolchain. If feels like I'm missing something; like I need to add something else to my local.conf. Thoughts? Suggestions? I went looking for examples of recipes using clang and found meta-openembedded/meta-oe/recipes-support/tbb.bb which includes: COMPILER ?= "gcc" COMPILER_toolchain-clang = "clang" Odd. Why "COMPILER" and not "TOOLCHAIN" like meta-clang's README mentions? Best regards, Trevor -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] internet radio
On Fri, Jun 23, 2017 at 1:18 AM, Riko Ho wrote: > Hello everyone, > > What do you suggest me using for internet radio / playing multimedia on GUI > ? Which recipe is suitable for it ? > may be you could use mplayer or kodi > Thanks > > -- > > /***/ > Sent by Ubuntu LTS 16.04, > 谢谢, > Regards, > Riko Ho > /***/ > > > -- > ___ > yocto mailing list > yocto@yoctoproject.org > https://lists.yoctoproject.org/listinfo/yocto > -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [PATCH][meta-gplv2] gnutls: make it independent on gnutls.inc from oe-core
* also remove correct_rpl_gettimeofday_signature.patch like in commit e01e7c543a559c8926d72159b5cd55db0c661434 Author: Richard Purdie Date: Thu Jun 15 23:15:00 2017 +0100 meta: Remove further uclibc remnants (inc. patches and site files) Signed-off-by: Martin Jansa --- recipes-support/gnutls/gnutls.inc | 57 + recipes-support/gnutls/gnutls_3.3.27.bb | 8 + 2 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 recipes-support/gnutls/gnutls.inc diff --git a/recipes-support/gnutls/gnutls.inc b/recipes-support/gnutls/gnutls.inc new file mode 100644 index 000..4a5c3df --- /dev/null +++ b/recipes-support/gnutls/gnutls.inc @@ -0,0 +1,57 @@ +SUMMARY = "GNU Transport Layer Security Library" +HOMEPAGE = "http://www.gnu.org/software/gnutls/"; +BUGTRACKER = "https://savannah.gnu.org/support/?group=gnutls"; + +LICENSE = "GPLv3+ & LGPLv2.1+" +LICENSE_${PN} = "LGPLv2.1+" +LICENSE_${PN}-xx = "LGPLv2.1+" +LICENSE_${PN}-bin = "GPLv3+" +LICENSE_${PN}-openssl = "GPLv3+" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=71391c8e0c1cfe68077e7fce3b586283 \ +file://doc/COPYING;md5=d32239bcb673463ab874e80d47fae504 \ + file://doc/COPYING.LESSER;md5=a6f89e2100d9b6cdffcea4f398e37343" + +DEPENDS = "nettle gmp virtual/libiconv" +DEPENDS_append_libc-musl = " argp-standalone" + +SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}" + +SRC_URI = "ftp://ftp.gnutls.org/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar.xz"; + +inherit autotools texinfo binconfig pkgconfig gettext lib_package gtk-doc + +PACKAGECONFIG ??= "libidn zlib" + +PACKAGECONFIG[libidn] = "--with-idn,--without-idn,libidn" +PACKAGECONFIG[libtasn1] = "--with-included-libtasn1=no,--with-included-libtasn1,libtasn1" +PACKAGECONFIG[p11-kit] = "--with-p11-kit,--without-p11-kit,p11-kit" +PACKAGECONFIG[tpm] = "--with-tpm,--without-tpm,trousers" +PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib" + +EXTRA_OECONF = " \ +--enable-doc \ +--disable-libdane \ +--disable-guile \ +--disable-rpath \ +--enable-local-libopts \ +--enable-openssl-compatibility \ +--with-libpthread-prefix=${STAGING_DIR_HOST}${prefix} \ +" + +LDFLAGS_append_libc-musl = " -largp" +LDFLAGS_append_libc-uclibc = " -luargp -pthread" + +do_configure_prepend() { + for dir in . lib; do + rm -f ${dir}/aclocal.m4 ${dir}/m4/libtool.m4 ${dir}/m4/lt*.m4 + done +} + +PACKAGES =+ "${PN}-openssl ${PN}-xx" + +FILES_${PN}-dev += "${bindir}/gnutls-cli-debug" +FILES_${PN}-openssl = "${libdir}/libgnutls-openssl.so.*" +FILES_${PN}-xx = "${libdir}/libgnutlsxx.so.*" + +BBCLASSEXTEND = "native nativesdk" diff --git a/recipes-support/gnutls/gnutls_3.3.27.bb b/recipes-support/gnutls/gnutls_3.3.27.bb index 9a8cd40..a1dcdb5 100644 --- a/recipes-support/gnutls/gnutls_3.3.27.bb +++ b/recipes-support/gnutls/gnutls_3.3.27.bb @@ -1,12 +1,9 @@ -require recipes-support/gnutls/gnutls.inc +require gnutls.inc LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ file://COPYING.LESSER;md5=a6f89e2100d9b6cdffcea4f398e37343" -FILESEXTRAPATHS_prepend = "${THISDIR}/${BPN}:${COREBASE}/meta/recipes-support/${BPN}/${BPN}:" - SRC_URI += " \ -file://correct_rpl_gettimeofday_signature.patch \ file://configure.ac-fix-sed-command.patch \ file://use-pkg-config-to-locate-zlib.patch \ " @@ -18,6 +15,3 @@ SRC_URI[sha256sum] = "8dfda16c158ef5c134010d51d1a91d02aa5d43b8cb711b1572650a7ffb PACKAGECONFIG[libidn] = "" # but it still has the libidn dependency, without this option EXTRA_OECONF += "--disable-crywrap" - -# This version doesn't support this option added in newer gnutls -EXTRA_OECONF_remove = "--without-libunistring-prefix" -- 2.13.1 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] [PATCH][meta-gplv2] gnutls: add use-pkg-config-to-locate-zlib.patch
ERROR: gnutls-3.3.27-r0 do_fetch: Fetcher failure for URL: 'file://correct_rpl_gettimeofday_signature.patch'. Unable to fetch URL from any source. On Fri, Jun 23, 2017 at 11:25 AM, Martin Jansa wrote: > Probably yes as it got broken again yesterday: > > > On Mon, Jun 12, 2017 at 9:13 PM, Burton, Ross > wrote: > >> >> On 12 June 2017 at 20:04, Andre McCurdy wrote: >> >>> Would it be better to just make the meta-gplv2 gnutls recipe self >>> contained and stop trying to share a .inc file and patches with >>> oe-core? >>> >> >> Yes. >> >> Ross >> >> > -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] [PATCH][meta-gplv2] gnutls: add use-pkg-config-to-locate-zlib.patch
Probably yes as it got broken again yesterday: On Mon, Jun 12, 2017 at 9:13 PM, Burton, Ross wrote: > > On 12 June 2017 at 20:04, Andre McCurdy wrote: > >> Would it be better to just make the meta-gplv2 gnutls recipe self >> contained and stop trying to share a .inc file and patches with >> oe-core? >> > > Yes. > > Ross > > -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] internet radio
Hello everyone, What do you suggest me using for internet radio / playing multimedia on GUI ? Which recipe is suitable for it ? Thanks -- * /***/ Sent by Ubuntu LTS 16.04, 谢谢, Regards, Riko Ho /***/ * -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [layerindex-web][PATCH V5 10/10] update_layer.py: delete layerbranch for non-existed branch
The branch is not needed any more when it has been removed from the repo, so we also need remove its layerbranch, otherwise it still can be got from the web, which causes confusions. Note, we have to move the location of tinfiol's code to avoid creating tinfoil when not needed, otherewise, if tinfoil is created (but not needed), and the program exists earlier before "try ... finally" block, then tinfoil.shutdown() doesn't run so that it is not shutdown. Move the code back, right before where it is needed can fix the problem. Signed-off-by: Robert Yang --- layerindex/update_layer.py | 34 ++ 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py index b6c2f4a..7f0c08f 100644 --- a/layerindex/update_layer.py +++ b/layerindex/update_layer.py @@ -223,21 +223,6 @@ def main(): bitbakepath = os.path.join(fetchdir, 'bitbake') -try: -(tinfoil, tempdir) = recipeparse.init_parser(settings, branch, bitbakepath, nocheckout=options.nocheckout, logger=logger) -except recipeparse.RecipeParseError as e: -logger.error(str(e)) -sys.exit(1) -# Clear the default value of SUMMARY so that we can use DESCRIPTION instead if it hasn't been set -tinfoil.config_data.setVar('SUMMARY', '') -# Clear the default value of DESCRIPTION so that we can see where it's not set -tinfoil.config_data.setVar('DESCRIPTION', '') -# Clear the default value of HOMEPAGE ('unknown') -tinfoil.config_data.setVar('HOMEPAGE', '') -# Set a blank value for LICENSE so that it doesn't cause the parser to die (e.g. with meta-ti - -# why won't they just fix that?!) -tinfoil.config_data.setVar('LICENSE', '') - layer = utils.get_layer(options.layer) urldir = layer.get_fetch_dir() repodir = os.path.join(fetchdir, urldir) @@ -261,12 +246,29 @@ def main(): topcommit = repo.commit('origin/%s' % branchname) except: if layerbranch: -logger.error("Failed update of layer %s - branch %s no longer exists" % (layer.name, branchdesc)) +logger.info("layer %s - branch %s no longer exists, removing it from database" % (layer.name, branchdesc)) +if not options.dryrun: +layerbranch.delete() else: logger.info("Skipping update of layer %s - branch %s doesn't exist" % (layer.name, branchdesc)) sys.exit(1) try: +(tinfoil, tempdir) = recipeparse.init_parser(settings, branch, bitbakepath, nocheckout=options.nocheckout, logger=logger) +except recipeparse.RecipeParseError as e: +logger.error(str(e)) +sys.exit(1) +# Clear the default value of SUMMARY so that we can use DESCRIPTION instead if it hasn't been set +tinfoil.config_data.setVar('SUMMARY', '') +# Clear the default value of DESCRIPTION so that we can see where it's not set +tinfoil.config_data.setVar('DESCRIPTION', '') +# Clear the default value of HOMEPAGE ('unknown') +tinfoil.config_data.setVar('HOMEPAGE', '') +# Set a blank value for LICENSE so that it doesn't cause the parser to die (e.g. with meta-ti - +# why won't they just fix that?!) +tinfoil.config_data.setVar('LICENSE', '') + +try: with transaction.atomic(): newbranch = False if not layerbranch: -- 2.10.2 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [layerindex-web][PATCH V5 03/10] utils.py: add REMOVE_LAYER_DEPENDENCIES to remove dependencies
Fixed: - set LAYERDEPENDS_openembedded-layer = "core" - $ "update.py -l meta-oe -b master" Check from web, its dependency is "openembedded-core" - Change LAYERDEPENDS_openembedded-layer = "foo" - Run "update.py -l meta-oe -b master" Check from web, its dependency is "openembedded-core and foo", this might be incorrect, now if set REMOVE_LAYER_DEPENDENCIES to true, the old dependency openembedded-core will be removed, the default is False which prints warnings to notify users. And also the existing checking should filter(required=required), otherwise it can't work well when a layer is in both depends and recommends, this can't happen in a normal case, but it would surprise the user when this happens. Signed-off-by: Robert Yang --- layerindex/utils.py | 19 ++- settings.py | 3 +++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/layerindex/utils.py b/layerindex/utils.py index 186d342..5acf35f 100644 --- a/layerindex/utils.py +++ b/layerindex/utils.py @@ -88,6 +88,7 @@ def _add_dependency(var, name, layerbranch, config_data, logger=None, required=T logger.debug('Error parsing %s_%s for %s\n%s' % (var, var_name, layer_name, str(vse))) return +need_remove = None for dep, ver_list in list(dep_dict.items()): ver_str = None if ver_list: @@ -106,8 +107,14 @@ def _add_dependency(var, name, layerbranch, config_data, logger=None, required=T logger.error('Cannot resolve %s %s (version %s) for %s' % (name, dep, ver_str, layer_name)) continue +# Preparing to remove obsolete ones +if not need_remove: +need_remove = LayerDependency.objects.filter(layerbranch=layerbranch).filter(required=required).exclude(dependency=dep_layer) +else: +need_remove = need_remove.exclude(dependency=dep_layer) + # Skip existing entries. -existing = list(LayerDependency.objects.filter(layerbranch=layerbranch).filter(dependency=dep_layer)) +existing = list(LayerDependency.objects.filter(layerbranch=layerbranch).filter(required=required).filter(dependency=dep_layer)) if existing: logger.debug('Skipping %s - already a dependency for %s' % (dep, layer_name)) continue @@ -121,6 +128,16 @@ def _add_dependency(var, name, layerbranch, config_data, logger=None, required=T layerdep.required = required layerdep.save() +if need_remove: +import settings +remove_layer_dependencies = getattr(settings, 'REMOVE_LAYER_DEPENDENCIES', False) +if remove_layer_dependencies: +logger.info('Removing obsolete dependencies "%s" for layer %s' % (need_remove, layer_name)) +need_remove.delete() +else: +logger.warn('Dependencies "%s" is not in %s\'s conf/layer.conf' % (need_remove, layer_name)) +logger.warn('Either set REMOVE_LAYER_DEPENDENCIES to remove it from database or fix conf/layer.conf') + def set_layerbranch_collection_version(layerbranch, config_data, logger=None): layerbranch.collection = config_data.getVar('BBFILE_COLLECTIONS', True) ver_str = "LAYERVERSION_" diff --git a/settings.py b/settings.py index 0ecf90b..3498e7a 100644 --- a/settings.py +++ b/settings.py @@ -214,6 +214,9 @@ CORE_LAYER_NAME = "openembedded-core" # Update records older than this number of days will be deleted every update UPDATE_PURGE_DAYS = 30 +# Remove layer dependencies if it is not in conf/layer.conf +REMOVE_LAYER_DEPENDENCIES = False + # Settings for layer submission feature SUBMIT_EMAIL_FROM = 'nore...@example.com' SUBMIT_EMAIL_SUBJECT = 'OE Layerindex layer submission' -- 2.10.2 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [layerindex-web][PATCH V5 09/10] update.py: add -p to git fetch
-p, --prune Before fetching, remove any remote-tracking references that no longer exist on the remote. Fixed: $ git push origin :test_branch $ ./update.py The test_branch was still in fetched local repo which was incorrect, it should be gone since it has been removed by upstream. Signed-off-by: Robert Yang --- layerindex/update.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/layerindex/update.py b/layerindex/update.py index f8e5a37..2d578df 100755 --- a/layerindex/update.py +++ b/layerindex/update.py @@ -264,7 +264,7 @@ def main(): if not os.path.exists(repodir): out = utils.runcmd("git clone %s %s" % (layer.vcs_url, urldir), fetchdir, logger=logger, printerr=False) else: -out = utils.runcmd("git fetch", repodir, logger=logger, printerr=False) +out = utils.runcmd("git fetch -p", repodir, logger=logger, printerr=False) except subprocess.CalledProcessError as e: logger.error("Fetch of layer %s failed: %s" % (layer.name, e.output)) failedrepos[layer.vcs_url] = e.output @@ -279,7 +279,7 @@ def main(): if not os.path.exists(bitbakepath): out = utils.runcmd("git clone %s %s" % (settings.BITBAKE_REPO_URL, 'bitbake'), fetchdir, logger=logger) else: -out = utils.runcmd("git fetch", bitbakepath, logger=logger) +out = utils.runcmd("git fetch -p", bitbakepath, logger=logger) if options.actual_branch: update_actual_branch(layerquery, fetchdir, branches[0], options, update_bitbake, bitbakepath) -- 2.10.2 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [layerindex-web][PATCH V5 08/10] update_layer.py: move the location of transaction.atomic()
It doesn't need to be so ahead since we only need it when writing database, and a following patch will remove layerbranch from database when the branch had been removed from the repo, it's not easy to do the work in transaction.atomic() block. Signed-off-by: Robert Yang --- layerindex/update_layer.py | 56 +++--- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py index 1c33c78..b6c2f4a 100644 --- a/layerindex/update_layer.py +++ b/layerindex/update_layer.py @@ -238,36 +238,36 @@ def main(): # why won't they just fix that?!) tinfoil.config_data.setVar('LICENSE', '') +layer = utils.get_layer(options.layer) +urldir = layer.get_fetch_dir() +repodir = os.path.join(fetchdir, urldir) + +layerbranch = layer.get_layerbranch(options.branch) + +branchname = options.branch +branchdesc = options.branch +if layerbranch: +if layerbranch.actual_branch: +branchname = layerbranch.actual_branch +branchdesc = "%s (%s)" % (options.branch, branchname) + +# Collect repo info +repo = git.Repo(repodir) +assert repo.bare == False try: -with transaction.atomic(): -layer = utils.get_layer(options.layer) -urldir = layer.get_fetch_dir() -repodir = os.path.join(fetchdir, urldir) - -layerbranch = layer.get_layerbranch(options.branch) - -branchname = options.branch -branchdesc = options.branch -if layerbranch: -if layerbranch.actual_branch: -branchname = layerbranch.actual_branch -branchdesc = "%s (%s)" % (options.branch, branchname) - -# Collect repo info -repo = git.Repo(repodir) -assert repo.bare == False -try: -if options.nocheckout: -topcommit = repo.commit('HEAD') -else: -topcommit = repo.commit('origin/%s' % branchname) -except: -if layerbranch: -logger.error("Failed update of layer %s - branch %s no longer exists" % (layer.name, branchdesc)) -else: -logger.info("Skipping update of layer %s - branch %s doesn't exist" % (layer.name, branchdesc)) -sys.exit(1) +if options.nocheckout: +topcommit = repo.commit('HEAD') +else: +topcommit = repo.commit('origin/%s' % branchname) +except: +if layerbranch: +logger.error("Failed update of layer %s - branch %s no longer exists" % (layer.name, branchdesc)) +else: +logger.info("Skipping update of layer %s - branch %s doesn't exist" % (layer.name, branchdesc)) +sys.exit(1) +try: +with transaction.atomic(): newbranch = False if not layerbranch: # LayerBranch doesn't exist for this branch, create it -- 2.10.2 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [layerindex-web][PATCH V5 07/10] update_layer.py: remove --update-dependencies
It never works since it is in the middle of transaction.atomic() block, and update.py doesn't need it any more, so remove it. Signed-off-by: Robert Yang --- layerindex/update_layer.py | 27 --- 1 file changed, 27 deletions(-) diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py index 7b945e7..1c33c78 100644 --- a/layerindex/update_layer.py +++ b/layerindex/update_layer.py @@ -182,9 +182,6 @@ def main(): parser.add_option("-n", "--dry-run", help = "Don't write any data back to the database", action="store_true", dest="dryrun") -parser.add_option("", "--update-dependencies", -help = "Update layer dependencies only", -action="store_true", dest="updatedeps") parser.add_option("", "--nocheckout", help = "Don't check out branches", action="store_true", dest="nocheckout") @@ -256,30 +253,6 @@ def main(): branchname = layerbranch.actual_branch branchdesc = "%s (%s)" % (options.branch, branchname) -if options.updatedeps: -# Update layer dependencies only -if not layerbranch: -logger.debug('Skipping dependency update for layer %s on branch %s - no layerbranch record' % (layer, branchdesc)) -sys.exit(0) -if not options.nocheckout: -utils.checkout_layer_branch(layerbranch, repodir, logger=logger) -layerdir = os.path.join(repodir, layerbranch.vcs_subdir) -if not os.path.exists(layerdir): -# If this happens it was already flagged during the main update, so ignore it -logger.debug('Skipping dependency update for layer %s on branch %s - layer directory not found' % (layer, branchdesc)) -sys.exit(0) - -layerconfparser = layerconfparse.LayerConfParse(logger=logger, bitbakepath=bitbakepath, tinfoil=tinfoil) -config_data = layerconfparser.parse_layer(layerdir) -if not config_data: -logger.debug("Layer %s does not appear to be valid for branch %s" % (layer.name, branchdesc)) -sys.exit(0) - -utils.add_dependencies(layerbranch, config_data, logger=logger) -utils.add_recommends(layerbranch, config_data, logger=logger) - -sys.exit(0) - # Collect repo info repo = git.Repo(repodir) assert repo.bare == False -- 2.10.2 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [layerindex-web][PATCH V5 06/10] update.py: update layers orderly
* Problems The update.py couldn't handle new (not only new branch, in fact, but also existing branches, see below for more info) branch well, for example, there are 3 layers: layer_A, layer_B and layer_C, and create new branch "branch_1" for them, and they have depends: layer_A -> layer_B -> layer_C The "->" means depends on. Then run "update.py -b branch_1", there would be errors like: ERROR: Dependency layer_B of layer_A does not have branch record for branch branch_1 Though update.py runs "update_layer.py" twice, but it didn't help since layerbranch was None when it was failed to create in the first run. The reason is if update.py updates layer_A firstly, it would fail since it can't find layer_B:branch_1 in database (not added to database yet), similarly, if add layer_B before layer_C, it would also fail. Only layer_C can be added (assume it has no dependencies). So we have to re-run update.py again and again to make it work, here we may have to run update.py 3 times, and more runs are needed if the dependency chain is longer. * Solutions: Make update.py pass layers orderly to update_layer.py according to dependencies can fix the problem, we can get intial dependencies from tinfoil, add an option "-i, --initial" to update_layer.py to get them. Not only new branch, but also existing branches may have the problem, because collections and dependencies maybe changed in the coming update, so we can't trust database when the layer is going to be updated, for example, if there are 10 layers in database, and 3 of them will be updated (-l layer1,layer2,layer3), then we can not use the 3 layers' collections data from database, we need get them from tinfoil. * Performance improvement: It should be the same as before in theory, I have tested it with 97 layers: - Before: 11m6.472s, but only 75 layers were added, 22 ones were failed, I have to re-run update.py again and again (maybe 4 times to make all of them added). So: (11 * 60 + 6)/75*97/60 = 14m35s - Now 12m10.350s, all the layers are added in the first run. So about 2 minutes are saved. Signed-off-by: Robert Yang --- layerindex/update.py | 113 ++--- layerindex/update_layer.py | 10 +++- layerindex/utils.py| 41 3 files changed, 127 insertions(+), 37 deletions(-) diff --git a/layerindex/update.py b/layerindex/update.py index 1a0bbd0..f8e5a37 100755 --- a/layerindex/update.py +++ b/layerindex/update.py @@ -18,6 +18,8 @@ import signal from datetime import datetime, timedelta from distutils.version import LooseVersion import utils +import operator +import re import warnings warnings.filterwarnings("ignore", category=DeprecationWarning) @@ -62,15 +64,13 @@ def run_command_interruptible(cmd): return process.returncode, buf -def prepare_update_layer_command(options, branch, layer, updatedeps=False): +def prepare_update_layer_command(options, branch, layer, initial=False): """Prepare the update_layer.py command line""" if branch.update_environment: cmdprefix = branch.update_environment.get_command() else: cmdprefix = 'python3' cmd = '%s update_layer.py -l %s -b %s' % (cmdprefix, layer.name, branch.name) -if updatedeps: -cmd += ' --update-dependencies' if options.reload: cmd += ' --reload' if options.fullreload: @@ -79,6 +79,8 @@ def prepare_update_layer_command(options, branch, layer, updatedeps=False): cmd += ' --nocheckout' if options.dryrun: cmd += ' -n' +if initial: +cmd += ' -i' if options.loglevel == logging.DEBUG: cmd += ' -d' elif options.loglevel == logging.ERROR: @@ -191,6 +193,13 @@ def main(): logger.error("Please set LAYER_FETCH_DIR in settings.py") sys.exit(1) + +# We deliberately exclude status == 'X' ("no update") here +layerquery_all = LayerItem.objects.filter(classic=False).filter(status='P') +if layerquery_all.count() == 0: +logger.info("No published layers to update") +sys.exit(1) + # For -a option to update bitbake branch update_bitbake = False if options.layers: @@ -205,11 +214,7 @@ def main(): sys.exit(1) layerquery = LayerItem.objects.filter(classic=False).filter(name__in=layers) else: -# We deliberately exclude status == 'X' ("no update") here -layerquery = LayerItem.objects.filter(classic=False).filter(status='P') -if layerquery.count() == 0: -logger.info("No published layers to update") -sys.exit(1) +layerquery = layerquery_all update_bitbake = True if options.actual_branch: @@ -286,8 +291,72 @@ def main(): # they never get used during normal operation). last_rev = {} for branch in branches: +# If layer_A depends(or recommends) on layer_B, add layer_B before layer_A +
[yocto] [layerindex-web][PATCH V5 05/10] recipeparse.py: restore cwd when the parsing is done
Othewise it may cause troubles to the function who calls it. Signed-off-by: Robert Yang --- layerindex/recipeparse.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/layerindex/recipeparse.py b/layerindex/recipeparse.py index dd85bc3..f2a5235 100644 --- a/layerindex/recipeparse.py +++ b/layerindex/recipeparse.py @@ -70,10 +70,13 @@ def init_parser(settings, branch, bitbakepath, enable_tracking=False, nocheckout if not os.path.exists(settings.TEMP_BASE_DIR): os.makedirs(settings.TEMP_BASE_DIR) tempdir = tempfile.mkdtemp(dir=settings.TEMP_BASE_DIR) +saved_cwd = os.getcwd() os.chdir(tempdir) tinfoil = utils.setup_tinfoil(bitbakepath, enable_tracking) +os.chdir(saved_cwd) + # Ensure TMPDIR exists (or insane.bbclass will blow up trying to write to the QA log) oe_tmpdir = tinfoil.config_data.getVar('TMPDIR', True) if not os.path.exists(oe_tmpdir): -- 2.10.2 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [layerindex-web][PATCH V5 02/10] layerconfparse.py: remove unused layerbranch from parse_layer()
The layerbranch is not used in parse_layer(), so remove it. Signed-off-by: Robert Yang --- layerindex/layerconfparse.py | 2 +- layerindex/tools/import_layer.py | 2 +- layerindex/update_layer.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/layerindex/layerconfparse.py b/layerindex/layerconfparse.py index d599ed5..526d2c2 100644 --- a/layerindex/layerconfparse.py +++ b/layerindex/layerconfparse.py @@ -32,7 +32,7 @@ class LayerConfParse: self.config_data_copy = bb.data.createCopy(self.tinfoil.config_data) -def parse_layer(self, layerbranch, layerdir): +def parse_layer(self, layerdir): # This is not a valid layer, parsing will cause exception. if not utils.is_layer_valid(layerdir): diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/import_layer.py index ad16e40..a806dd1 100755 --- a/layerindex/tools/import_layer.py +++ b/layerindex/tools/import_layer.py @@ -377,7 +377,7 @@ def main(): layerdep.save() layerconfparser = LayerConfParse(logger=logger) try: -config_data = layerconfparser.parse_layer(layerbranch, layerdir) +config_data = layerconfparser.parse_layer(layerdir) if config_data: utils.add_dependencies(layerbranch, config_data, logger=logger) utils.add_recommends(layerbranch, config_data, logger=logger) diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py index 9fe96fb..05ab3e7 100644 --- a/layerindex/update_layer.py +++ b/layerindex/update_layer.py @@ -267,7 +267,7 @@ def main(): sys.exit(0) layerconfparser = layerconfparse.LayerConfParse(logger=logger, bitbakepath=bitbakepath, tinfoil=tinfoil) -config_data = layerconfparser.parse_layer(layerbranch, layerdir) +config_data = layerconfparser.parse_layer(layerdir) if not config_data: logger.debug("Layer %s does not appear to be valid for branch %s" % (layer.name, branchdesc)) sys.exit(0) @@ -355,7 +355,7 @@ def main(): logger.info("Collecting data for layer %s on branch %s" % (layer.name, branchdesc)) layerconfparser = layerconfparse.LayerConfParse(logger=logger, tinfoil=tinfoil) -layer_config_data = layerconfparser.parse_layer(layerbranch, layerdir) +layer_config_data = layerconfparser.parse_layer(layerdir) if not layer_config_data: logger.info("Skipping update of layer %s for branch %s - conf/layer.conf may have parse issues" % (layer.name, branchdesc)) layerconfparser.shutdown() -- 2.10.2 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [layerindex-web][PATCH V5 01/10] update.py: update actual branch for layer and bitbake
Add an option "-a" to update actual branch for layer and bitbake, it is useful when there are many layers and need update actual branches frequently. We only can update them via website without this patch, which is not fun and easy to make mistakes. * It works with "-l", and "-l bitbake" means update bitbake branch. * It requires "-b" to work, and only one branch is supported in a run. For example: $ update.py -b master -a branch_20170526 All the layers which have branch master and actual_branch branch_20170526 will be updated to branch_20170526. $ update.py -b master -l meta-oe -a branch_20170526 Only meta-oe layer will be updated. $ update.py -b master -l bitbake -a branch_20170526 The bitbake's bitbake_branch will be updated. Signed-off-by: Robert Yang --- layerindex/update.py | 71 layerindex/utils.py | 11 2 files changed, 77 insertions(+), 5 deletions(-) diff --git a/layerindex/update.py b/layerindex/update.py index d5c56cd..1a0bbd0 100755 --- a/layerindex/update.py +++ b/layerindex/update.py @@ -85,6 +85,43 @@ def prepare_update_layer_command(options, branch, layer, updatedeps=False): cmd += ' -q' return cmd +def update_actual_branch(layerquery, fetchdir, branch, options, update_bitbake, bitbakepath): +"""Update actual branch for layers and bitbake in database""" +to_save = set() +actual_branch = options.actual_branch +if update_bitbake: +branchobj = utils.get_branch(branch) +if actual_branch != branchobj.bitbake_branch: +if utils.is_branch_valid(bitbakepath, actual_branch): +logger.info("bitbake: %s.bitbake_branch: %s -> %s" % (branch, branchobj.bitbake_branch, actual_branch)) +branchobj.bitbake_branch = actual_branch +to_save.add(branchobj) +else: +logger.info("Skipping update bitbake_branch for bitbake - branch %s doesn't exist" % actual_branch) +else: +logger.info("bitbake: %s.bitbake_branch is already %s, so no change" % (branch, actual_branch)) + +for layer in layerquery: +urldir = layer.get_fetch_dir() +repodir = os.path.join(fetchdir, urldir) +if not utils.is_branch_valid(repodir, actual_branch): +logger.info("Skipping update actual_branch for %s - branch %s doesn't exist" % (layer.name, actual_branch)) +continue +layerbranch = layer.get_layerbranch(branch) +if not layerbranch: +logger.info("Skipping update actual_branch for %s - layerbranch %s doesn't exist" % (layer.name, branch)) +continue +if actual_branch != layerbranch.actual_branch: +logger.info("%s: %s.actual_branch: %s -> %s" % (layer.name, branch, layerbranch.actual_branch, actual_branch)) +layerbranch.actual_branch = actual_branch +to_save.add(layerbranch) +else: +logger.info("%s: %s.actual_branch is already %s, so no change" % (layer.name, branch, actual_branch)) + +# At last, do the save +if not options.dryrun: +for s in to_save: +s.save() def main(): if LooseVersion(git.__version__) < '0.3.1': @@ -117,6 +154,9 @@ def main(): parser.add_option("", "--nocheckout", help = "Don't check out branches", action="store_true", dest="nocheckout") +parser.add_option("-a", "--actual-branch", +help = "Update actual branch for layer and bitbake", +action="store", dest="actual_branch", default='') parser.add_option("-d", "--debug", help = "Enable debug output", action="store_const", const=logging.DEBUG, dest="loglevel", default=logging.INFO) @@ -151,17 +191,34 @@ def main(): logger.error("Please set LAYER_FETCH_DIR in settings.py") sys.exit(1) +# For -a option to update bitbake branch +update_bitbake = False if options.layers: -layerquery = LayerItem.objects.filter(classic=False).filter(name__in=options.layers.split(',')) -if layerquery.count() == 0: -logger.error('No layers matching specified query "%s"' % options.layers) -sys.exit(1) +layers = options.layers.split(',') +if 'bitbake' in layers: +update_bitbake = True +layers.remove('bitbake') +for layer in layers: +layerquery = LayerItem.objects.filter(classic=False).filter(name=layer) +if layerquery.count() == 0: +logger.error('No layers matching specified query "%s"' % layer) +sys.exit(1) +layerquery = LayerItem.objects.filter(classic=False).filter(name__in=layers) else: # We deliberately exclude status == 'X' ("no update") here layerquery = LayerItem.objects.filter(classic=False).filter(status='P') if layerquery.count() == 0: logger.info("No published
[yocto] [layerindex-web][PATCH V5 04/10] update_layer.py: set layerbranch's collection before add_dependencies
The _add_dependency() uses: if layerbranch.collection: var_name = layerbranch.collection The layerbranch.collection is none if it is newly created, thus it can't get LAYERDEPENDS, because what defined in layer.conf is LAYERDEPENDS_, but what it would get is LAYERDEPENDS_, this patch can fix the problem. Reproducer: $ python3 update_layer.py -l mete-xfce -b --fullreload -d It would get None LAYERDEPENDS. Signed-off-by: Robert Yang --- layerindex/update_layer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py index 05ab3e7..bcf7056 100644 --- a/layerindex/update_layer.py +++ b/layerindex/update_layer.py @@ -360,9 +360,9 @@ def main(): logger.info("Skipping update of layer %s for branch %s - conf/layer.conf may have parse issues" % (layer.name, branchdesc)) layerconfparser.shutdown() sys.exit(1) +utils.set_layerbranch_collection_version(layerbranch, layer_config_data, logger=logger) utils.add_dependencies(layerbranch, layer_config_data, logger=logger) utils.add_recommends(layerbranch, layer_config_data, logger=logger) -utils.set_layerbranch_collection_version(layerbranch, layer_config_data, logger=logger) layerbranch.save() try: -- 2.10.2 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [layerindex-web][PATCH V5 00/10] Several fixes for layerindex
* V5 - Fix Paul's comments - Add REMOVE_LAYER_DEPENDENCIES = False to settings, the _add_dependency() will check and remove dependencies which is not in conf/layer.conf when True (WARN when False).. * V4 - Add an option -i to update_layer.py to get initial layer value (dependencies, versions and so on), update.py doesn't use tinfoil any more since tinfoil before morty can't be shutdown totally if the process is not exited, this was why splitted update_layer.py from update.py. - Squash 11 patches (v3) into 10, since two of them have overlap. * V3: - Better error messages when required collections not found - Delete layerbranch for non-existed branch - update_layer.py: remove --update-dependencies * V2: - Remove "import bb" from update.py to avoid causing confusions when switch branches. * V1: - The "-a ACTUAL_BRANCH" is a litle different from what we had talked, now it respects "-l" and "-b", we can use -l to specify layers or default to all, and it requires "-b" to work, only one branch is supported in a run, for example: $ update.py -b master -a branch_20170526 All the layers which have branch master and actual_branch branch_20170526 will be updated to branch_20170526. $ update.py -b master -l meta-oe -a branch_20170526 Only meta-oe layer will be updated. $ update.py -b master -l bitbake -a branch_20170526 The bitbake's bitbake_branch will be updated. // Robert The following changes since commit b958a991caa947fde2ccb073e3cb7924e162562d: layerindex/views: support querying by layer name (2017-06-15 16:04:14 +0200) are available in the git repository at: git://git.pokylinux.org/poky-contrib rbt/layerindex-10fixes http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=rbt/layerindex-10fixes Robert Yang (10): update.py: update actual branch for layer and bitbake layerconfparse.py: remove unused layerbranch from parse_layer() utils.py: add REMOVE_LAYER_DEPENDENCIES to remove dependencies update_layer.py: set layerbranch's collection before add_dependencies recipeparse.py: restore cwd when the parsing is done update.py: update layers orderly update_layer.py: remove --update-dependencies update_layer.py: move the location of transaction.atomic() update.py: add -p to git fetch update_layer.py: delete layerbranch for non-existed branch layerindex/layerconfparse.py | 2 +- layerindex/recipeparse.py| 3 + layerindex/tools/import_layer.py | 2 +- layerindex/update.py | 186 ++- layerindex/update_layer.py | 99 + layerindex/utils.py | 71 ++- settings.py | 3 + 7 files changed, 263 insertions(+), 103 deletions(-) -- 2.10.2 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] [PATCH V4 03/10] utils.py: remove obsolete dependencies
On Friday, 23 June 2017 5:22:35 AM CEST Robert Yang wrote: > On 06/23/2017 11:03 AM, Robert Yang wrote: > > On 06/22/2017 07:54 PM, Paul Eggleton wrote: > >> How about this - could we start with a setting in the configuration that > >> specifies that dependencies should be updated automatically, and if not > >> set just gives a warning if the dependencies are not the same? We can > >> then decide how to handle it when we see the warnings we're getting in > >> the OE index. > > > > Sounds good to me, I will fix it in V5. > > After more thinking, I will use: > # Remove layer dependencies if it is not in conf/layer.conf > REMOVE_LAYER_DEPENDENCIES = False > > Currently it does can add dependencies from conf/layer.conf, but no remove, > so use REMOVE_LAYER_DEPENDENCIES makes it more clear. Sounds good to me. Cheers, Paul -- Paul Eggleton Intel Open Source Technology Centre -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto