| Submitter | Elizabeth Flanagan |
|---|---|
| Date | Dec. 7, 2011, 7:34 p.m. |
| Message ID | <6c65669e1c223d59020c581750599c11ee222063.1323286080.git.elizabeth.flanagan@intel.com> |
| Download | mbox | patch |
| Permalink | /patch/16413/ |
| State | New |
| Headers | show |
Comments
On (07/12/11 11:34), Beth Flanagan wrote: > From: Christopher Larson <kergoth@gmail.com> > > Deploys sources for recipes for compliance with copyleft-style licenses > Defaults to using symlinks, as it's a quick operation, and one can easily > follow the links when making use of the files (e.g. tar with the -h arg). > > By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. > > Signed-off-by: Christopher Larson <kergoth@gmail.com> > --- > meta/classes/copyleft_compliance.bbclass | 94 ++++++++++++++++++++++++++++++ > 1 files changed, 94 insertions(+), 0 deletions(-) > create mode 100644 meta/classes/copyleft_compliance.bbclass > > diff --git a/meta/classes/copyleft_compliance.bbclass b/meta/classes/copyleft_compliance.bbclass > new file mode 100644 > index 0000000..5d9ab11 > --- /dev/null > +++ b/meta/classes/copyleft_compliance.bbclass > @@ -0,0 +1,94 @@ > +# Deploy sources for recipes for compliance with copyleft-style licenses > +# Defaults to using symlinks, as it's a quick operation, and one can easily > +# follow the links when making use of the files (e.g. tar with the -h arg). > +# > +# By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. > +# > +# vi:sts=4:sw=4:et > + > +COPYLEFT_SOURCES_DIR ?= '${DEPLOY_DIR}/copyleft_sources' > + > +COPYLEFT_LICENSE_INCLUDE ?= 'GPL* LGPL*' > +COPYLEFT_LICENSE_INCLUDE[type] = 'list' > +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs which include licenses' > + > +COPYLEFT_LICENSE_EXCLUDE ?= 'CLOSED Proprietary' > +COPYLEFT_LICENSE_EXCLUDE[type] = 'list' > +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs which exclude licenses' > + > + > +def copyleft_should_include(d): > + """Determine if this recipe's sources should be deployed for compliance""" > + import ast > + import oe.license > + from fnmatch import fnmatchcase as fnmatch > + > + if oe.utils.inherits(d, 'native', 'nativesdk', 'cross', 'crossdk'): we do ship some of them in SDK so IMO they should not be excluded.
On Wed, Dec 7, 2011 at 2:53 PM, Khem Raj <raj.khem@gmail.com> wrote: >> diff --git a/meta/classes/copyleft_compliance.bbclass b/meta/classes/copyleft_compliance.bbclass >> new file mode 100644 >> index 0000000..5d9ab11 >> --- /dev/null >> +++ b/meta/classes/copyleft_compliance.bbclass >> @@ -0,0 +1,94 @@ >> +# Deploy sources for recipes for compliance with copyleft-style licenses >> +# Defaults to using symlinks, as it's a quick operation, and one can easily >> +# follow the links when making use of the files (e.g. tar with the -h arg). >> +# >> +# By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. >> +# >> +# vi:sts=4:sw=4:et >> + >> +COPYLEFT_SOURCES_DIR ?= '${DEPLOY_DIR}/copyleft_sources' >> + >> +COPYLEFT_LICENSE_INCLUDE ?= 'GPL* LGPL*' >> +COPYLEFT_LICENSE_INCLUDE[type] = 'list' >> +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs which include licenses' >> + >> +COPYLEFT_LICENSE_EXCLUDE ?= 'CLOSED Proprietary' >> +COPYLEFT_LICENSE_EXCLUDE[type] = 'list' >> +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs which exclude licenses' >> + >> + >> +def copyleft_should_include(d): >> + """Determine if this recipe's sources should be deployed for compliance""" >> + import ast >> + import oe.license >> + from fnmatch import fnmatchcase as fnmatch >> + >> + if oe.utils.inherits(d, 'native', 'nativesdk', 'cross', 'crossdk'): > > we do ship some of them in SDK so IMO they should not be excluded. Fair enough. It'd probably be useful to hook something in to use the output of this class to produce a tree of just the sources that went into a given image or sdk, to go alongside the new manifests. I think this is good to go in though, I'll submit a second patch in the next day or two to enhance it to cover more, unless someone disagrees with that approach.
On 2011-12-07 22:53, Khem Raj wrote: > On (07/12/11 11:34), Beth Flanagan wrote: >> From: Christopher Larson<kergoth@gmail.com> >> >> Deploys sources for recipes for compliance with copyleft-style licenses >> Defaults to using symlinks, as it's a quick operation, and one can easily >> follow the links when making use of the files (e.g. tar with the -h arg). >> >> By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. >> >> Signed-off-by: Christopher Larson<kergoth@gmail.com> >> --- >> meta/classes/copyleft_compliance.bbclass | 94 ++++++++++++++++++++++++++++++ >> 1 files changed, 94 insertions(+), 0 deletions(-) >> create mode 100644 meta/classes/copyleft_compliance.bbclass >> >> diff --git a/meta/classes/copyleft_compliance.bbclass b/meta/classes/copyleft_compliance.bbclass >> new file mode 100644 >> index 0000000..5d9ab11 >> --- /dev/null >> +++ b/meta/classes/copyleft_compliance.bbclass >> @@ -0,0 +1,94 @@ >> +# Deploy sources for recipes for compliance with copyleft-style licenses >> +# Defaults to using symlinks, as it's a quick operation, and one can easily >> +# follow the links when making use of the files (e.g. tar with the -h arg). >> +# >> +# By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. >> +# >> +# vi:sts=4:sw=4:et >> + >> +COPYLEFT_SOURCES_DIR ?= '${DEPLOY_DIR}/copyleft_sources' >> + >> +COPYLEFT_LICENSE_INCLUDE ?= 'GPL* LGPL*' >> +COPYLEFT_LICENSE_INCLUDE[type] = 'list' >> +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs which include licenses' If the Ampersand is not accepted in the LICENSE string, then the recipes below are broken. From my latest build, at least recipes with "&&" fail... This means that nothing really completes that I have tested. MAJOR BREAKAGE!!!! I think it would be better FIRST to fix the recipes, and then introduce checking. BR Ulf meta-bugfix/meta/recipes-connectivity/connman/connman-gnome_0.5.bb:LICENSE = "GPLv2 & LGPLv2.1" meta-openembedded/meta-gnome/recipes-gnome/gobject-introspection/gobject-introspection_0.9.10.bb:LICENSE = "GPLv2+ & LGPLv2+" meta-openembedded/meta-gnome/recipes-gnome/gobject-introspection/gobject-introspection_git.bb:LICENSE = "GPLv2+ & LGPLv2+" meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus_2.30.5.bb:LICENSE = "GPLv2 && LGPLv2" meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs_2.24.4.bb:LICENSE = "GPLv2+ & LGPLv2+" meta-openembedded/meta-gnome/recipes-gnome/gtk+/gtk+3_3.0.11.bb:LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+" meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus3_3.0.2.bb:LICENSE="GPLv2 && LGPLv2" meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_2.32.2.bb:LICENSE="GPLv2 && LGPLv2" meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo.inc:LICENSE = "GPLv2 && LGPLv2.1" meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonoboui_2.24.3.bb:LICENSE = "GPLv2 && LGPLv2.1" meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_2.32.1.bb:LICENSE = "GPLv2 & LGPLv2" meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.0.2.bb:LICENSE = "GPLv2 & LGPLv2" meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_2.32.1.bb:LICENSE = "GPLv2 && LGPLv2 && GFDLv1.1" meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel3_3.0.2.bb:LICENSE = "GPLv2 && LGPLv2 && GFDLv1.1" meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_2.32.0.bb:LICENSE = "GPLv2 && LGPLv2.1" meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnome-keyring_2.32.0.bb:LICENSE = "LGPLv2 && GPLv2" meta-openembedded/meta-oe/recipes-multimedia/jack/jack_0.121.0.bb:LICENSE = "GPLv2 && LGPLv2.1" meta-openembedded/meta-oe/recipes-multimedia/audiofile/audiofile_0.2.7.bb:LICENSE = "LGPLv2 && GPLv2" meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.5.bb:LICENSE = "GPLv2 && LGPLv2.1" meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm.inc:LICENSE = "LGPLv2.1 && GPLv2" meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_0.4.12.bb:LICENSE = "MIT && zlib" meta-openembedded/meta-oe/recipes-devtools/python/python-numeric_24.2.bb:LICENSE = "PSF & LLNL" meta-openembedded/meta-oe/recipes-devtools/swig/swig.inc:LICENSE = "BSD && GPLv3" meta-openembedded/meta-oe/recipes-devtools/gcc/gcc-4.5.inc:LICENSE="GCC RUNTIME LIBRARY EXCEPTION & GPLv2 & GPLv3 & LGPLv2.1 & LGPLv3" meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm.inc:LICENSE = "LGPLv2.1 && GPLv2" meta-openembedded/meta-oe/recipes-core/udev/udev_175.bb:LICENSE = "GPLv2+ & LGPLv2.1+" meta-openembedded/meta-oe/recipes-core/udev/udev_173.bb:LICENSE = "GPLv2+ & LGPLv2.1+" meta-openembedded/meta-oe/recipes-support/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2011.4.12.bb:LICENSE = "GPLv2 & LGPLv2" meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.31.bb:LICENSE = "GPLv2+ && BSD" meta-openembedded/meta-oe/recipes-support/debianutils/debianutils_2.30.bb:LICENSE = "GPLv2 & BSD & SMAIL_GPL" meta-openembedded/meta-oe/recipes-support/mpfr/mpfr_3.0.0.bb:LICENSE="GPLv3&LGPLv3" meta-openembedded/meta-oe/recipes-support/fuse/fuse_2.8.6.bb:LICENSE = "GPLv2&LGPLv2" meta-openembedded/meta-oe/recipes-support/fuse/fuse_2.8.5.bb:LICENSE = "GPLv2&LGPLv2" meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc:LICENSE = "GPLv2 && LGPLv2" meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.28.2.bb:LICENSE = "LGPLv2.1 && GPLv2" meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb:LICENSE_URL = "http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=OFL" meta-smartphone/meta-aurora/recipes-aurora/aurora/aurora-daemon_git.bb:LICENSE = "GPLv2 & Other" meta-ti/recipes-misc/payload/beaglebone-getting-started.bb:LICENSE = "GPLv2+ && MIT && PD && others" openembedded-core/meta/recipes-multimedia/flac/flac_1.2.1.bb:LICENSE = "FDLv1.2 & GPLv2+ & LGPLv2.1+ & BSD" openembedded-core/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb:LICENSE = "LGPLv2.1 & GPLv2+" openembedded-core/meta/recipes-multimedia/alsa/alsa-tools_1.0.24.1.bb:LICENSE = "GPLv2 & LGPLv2+" openembedded-core/meta/recipes-multimedia/pulseaudio/pulseaudio.inc:LICENSE = "GPLv2+ & LGPLv2.1" openembedded-core/meta/recipes-multimedia/pulseaudio/libatomics-ops_1.2.bb:LICENSE = "GPLv2 & MIT" openembedded-core/meta/recipes-multimedia/gstreamer/gst-plugins-ugly_0.10.17.bb:LICENSE = "GPLv2+ & LGPLv2.1+ & LGPLv2+" openembedded-core/meta/recipes-multimedia/gstreamer/gst-ffmpeg_0.10.11.bb:LICENSE = "GPLv2+ & LGPLv2+ & ( (GPLv2+ & LGPLv2.1+) | (GPLv3+ & LGPLv3+) )" openembedded-core/meta/recipes-multimedia/gstreamer/gst-plugins-base_0.10.35.bb:LICENSE = "GPLv2+ & LGPLv2+" openembedded-core/meta/recipes-multimedia/gstreamer/gst-plugins-bad_0.10.21.bb:LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+ " openembedded-core/meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.30.bb:LICENSE = "GPLv2+ & LGPLv2.1+" openembedded-core/meta/classes/src_distribute.bbclass: licenses = d.getVar('LICENSE', 1).replace('&', '|') openembedded-core/meta/classes/license.bbclass: pkged_lic="$(sed -n '/^LICENSE: /{ s/^LICENSE: //; s/[+|&()*]/ /g; s/ */ /g; p }' ${filename})" openembedded-core/meta/recipes-connectivity/bluez/bluez4.inc:LICENSE = "GPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-connectivity/bind/bind_9.8.1.bb:LICENSE = "ISC & BSD" openembedded-core/meta/recipes-connectivity/wireless-tools/wireless-tools_29.bb:LICENSE = "GPLv2 & (LGPL | MPL | BSD)" openembedded-core/meta/recipes-connectivity/gypsy/gypsy_git.bb:LICENSE = "GPLv2+ & LGPLv2+" openembedded-core/meta/recipes-connectivity/gypsy/gypsy_0.8.bb:LICENSE = "GPLv2+ & LGPLv2+" openembedded-core/meta/recipes-connectivity/avahi/avahi.inc:LICENSE = "GPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-connectivity/connman/connman-gnome_0.5.bb:LICENSE = "GPLv2 & LGPLv2.1" openembedded-core/meta/recipes-connectivity/ppp/ppp_2.4.5.bb:LICENSE = "BSD & GPLv2+ & LGPLv2+ & PD" openembedded-core/meta/recipes-connectivity/gsm/gsmd.inc:LICENSE = "GPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-gnome/gtk+/gtk+.inc:LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-gnome/libglade/libglade_2.6.4.bb:LICENSE = "LGPLv2 & LGPLv2+" openembedded-core/meta/recipes-gnome/gnome/gnome-desktop.inc:LICENSE = "GPLv2 & LGPLv2" openembedded-core/meta/recipes-gnome/gnome/gobject-introspection_git.bb:LICENSE = "GPLv2+ & LGPLv2+" openembedded-core/meta/recipes-gnome/gnome/gnome-doc-utils.inc:LICENSE = "GPL & LGPL" openembedded-core/meta/recipes-gnome/gnome/libgnome-keyring_2.32.0.bb:LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-gnome/gnome/gnome-mime-data_2.18.0.bb:LICENSE = "GPLv2 & GPLv2+" openembedded-core/meta/recipes-gnome/gnome/gnome-keyring_2.32.1.bb:LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-extended/quota/quota_4.00-pre1.bb:LICENSE = "BSD & GPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-extended/sudo/sudo.inc:LICENSE = "ISC & UCB & Zlib" openembedded-core/meta/recipes-extended/sysklogd/sysklogd.inc:LICENSE = "GPLv2+ & BSD" openembedded-core/meta/recipes-extended/xz/xz_5.0.3.bb:LICENSE = "GPLv2+ & GPLv3+ & LGPLv2.1+" openembedded-core/meta/recipes-extended/cronie/cronie_1.4.8.bb:LICENSE = "ISC & BSD" openembedded-core/meta/recipes-extended/libidn/libidn_0.6.14.bb:LICENSE = "LGPLv2.1+ & GPLv2+" openembedded-core/meta/recipes-extended/libidn/libidn_1.22.bb:LICENSE = "LGPLv2.1+ & GPLv3+" openembedded-core/meta/recipes-extended/iputils/iputils_s20101006.bb:LICENSE = "BSD & GPLv2+" openembedded-core/meta/recipes-extended/bc/bc_1.06.bb:LICENSE = "GPLv2+ & LGPLv2.1" openembedded-core/meta/recipes-extended/mailx/mailx_12.5.bb:LICENSE = "BSD & MPL-1" openembedded-core/meta/recipes-extended/procps/procps.inc:LICENSE = "GPLv2+ & LGPLv2+" openembedded-core/meta/files/common-licenses/CDDL-1.0:COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. openembedded-core/meta/files/common-licenses/CPAL-1.0:COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER, ORIGINAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. openembedded-core/meta/recipes-devtools/elfutils/elfutils_0.148.bb:LICENSE = "(GPL-2+ & Elfutils-Exception)" openembedded-core/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc:LICENSE = "GPLv2 & LGPLv2 & BSD & MIT" openembedded-core/meta/recipes-devtools/valgrind/valgrind_3.6.1.bb:LICENSE = "GPLv2 & GPLv2+ & BSD" openembedded-core/meta/recipes-devtools/gdb/gdb_7.3.1.bb:LICENSE="GPLv2 & GPLv3 & LGPLv2 & LGPLv3" openembedded-core/meta/recipes-devtools/python/python-pycairo_1.8.10.bb:LICENSE = "LGPLv2.1 & MPL-1" openembedded-core/meta/recipes-devtools/gcc/gcc-4.6.inc:LICENSE="GPL-3.0-with-GCC-exception & GPLv3" openembedded-core/meta/recipes-devtools/squashfs-tools/squashfs-tools_4.2.bb:LICENSE = "GPL-2 & PD" openembedded-core/meta/recipes-devtools/libtool/libtool-2.4.2.inc:LICENSE = "GPLv2 & LGPLv2.1" openembedded-core/meta/recipes-devtools/autoconf/autoconf_2.68.bb:LICENSE = "GPLv2 & GPLv3" openembedded-core/meta/recipes-devtools/qemu/qemu.inc:LICENSE = "GPLv2 & LGPLv2.1" openembedded-core/meta/recipes-devtools/make/make_3.82.bb:LICENSE="GPLv3&LGPLv2" openembedded-core/meta/recipes-core/gettext/gettext_0.18.1.1.bb:LICENSE = "GPL-3+ & LGPL-2.1+" openembedded-core/meta/recipes-core/glib-2.0/glib.inc:LICENSE = "LGPLv2+ & BSD & PD" openembedded-core/meta/recipes-core/busybox/busybox.inc:LICENSE = "GPLv2 & BSD-4-Clause" openembedded-core/meta/recipes-core/udev/udev-new.inc:LICENSE = "GPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb:LICENSE = "GPLv2 & LGPLv2.1" openembedded-core/meta/recipes-core/eglibc/eglibc-locale.inc:LICENSE = "GPLv2 & LGPLv2.1" openembedded-core/meta/recipes-core/eglibc/eglibc-common.inc:LICENSE = "GPLv2 & LGPLv2.1" openembedded-core/meta/recipes-core/util-linux/util-linux.inc:LICENSE = "GPLv2+ & LGPLv2.1+ & BSD" openembedded-core/meta/recipes-kernel/oprofile/oprofile.inc:LICENSE = "LGPLv2.1+ & GPLv2" openembedded-core/meta/recipes-kernel/lttng/lttng-ust_0.15.bb:LICENSE = "LGPLv2.1+ & BSD" openembedded-core/meta/recipes-kernel/lttng/lttng-viewer_0.12.38.bb:LICENSE = "GPLv2 & LGPLv2.1" openembedded-core/meta/recipes-sato/pimlico/contacts.inc:LICENSE = "GPLv2 & GPLv2+ & GPLv3+ " openembedded-core/meta/recipes-sato/pimlico/tasks.inc:LICENSE = "GPLv2 & GPLv2+" openembedded-core/meta/recipes-sato/pimlico/dates.inc:LICENSE = "GPLv2 & GPLv2+ & LGPLv2+" openembedded-core/meta/recipes-sato/sato-screenshot/sato-screenshot_git.bb:LICENSE = "GPLv2 & GPLv2+" openembedded-core/meta/recipes-sato/matchbox-desktop/matchbox-desktop_git.bb:LICENSE = "GPLv2+ & LGPLv2+" openembedded-core/meta/recipes-sato/gtk-engines/gtk-sato-engine.inc:LICENSE = "LGPLv2.1 & LGPLv2+" openembedded-core/meta/recipes-sato/libowl/libowl_git.bb:LICENSE = "GPLv2 & LGPLv2+" openembedded-core/meta/recipes-sato/eds/eds-dbus_2.20.0.bb:LICENSE = "LGPLv2 & LGPLv2+" openembedded-core/meta/recipes-sato/eds/eds-dbus_git.bb:LICENSE = "LGPLv2 & LGPLv2+" openembedded-core/meta/recipes-sato/owl-video-widget/owl-video_git.bb:LICENSE = "LGPLv2.1 & GPLv2+" openembedded-core/meta/recipes-sato/leafpad/leafpad_0.8.18.1.bb:LICENSE = "GPLv2 & GPLv2+" openembedded-core/meta/recipes-sato/webkit/webkit-gtk_svn.bb:LICENSE = "BSD & LGPLv2+" openembedded-core/meta/recipes-sato/pcmanfm/pcmanfm_0.9.10.bb:LICENSE = "GPLv2 & GPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-support/gmp/gmp_5.0.2.bb:LICENSE="LGPLv3&GPLv3" openembedded-core/meta/recipes-support/libfm/libfm_0.1.17.bb:LICENSE = "GPLv2 & GPLv2+" openembedded-core/meta/recipes-support/boost/boost.inc:LICENSE = "BSL-1 & MIT & Python-2.0" openembedded-core/meta/recipes-support/gpgme/gpgme_1.3.1.bb:LICENSE = "GPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-support/beecrypt/beecrypt_4.2.1.bb:LICENSE = "GPLv2 & LGPLv2.1" openembedded-core/meta/recipes-support/libcroco/libcroco_0.6.3.bb:LICENSE = "LGPLv2 & LGPLv2.1" openembedded-core/meta/recipes-support/libgdbus/libgdbus_git.bb:LICENSE = "GPLv2 & LGPLv2.1" openembedded-core/meta/recipes-support/libgpg-error/libgpg-error_1.10.bb:LICENSE = "GPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-support/atk/atk.inc:LICENSE = "LGPLv2 & LGPLv2+" openembedded-core/meta/recipes-support/gnutls/gnutls.inc:LICENSE = "GPLv3+ & LGPLv2.1+" openembedded-core/meta/recipes-support/gnutls/libtasn1_2.11.bb:LICENSE = "GPLv3+ & LGPLv2.1+" openembedded-core/meta/recipes-support/libgcrypt/libgcrypt.inc:LICENSE = "GPLv2+ & LGPLv2.1+" openembedded-core/meta/recipes-support/liburcu/liburcu_0.6.4.bb:LICENSE = "LGPLv2.1+ & MIT-style" openembedded-core/meta/recipes-support/libassuan/libassuan_2.0.2.bb:LICENSE = "GPLv3 & LGPLv2.1+" openembedded-core/meta/recipes-support/attr/acl.inc:LICENSE = "LGPLv2.1+ & GPLv2+" openembedded-core/meta/recipes-support/attr/attr.inc:LICENSE = "LGPLv2.1+ & GPLv2+" openembedded-core/meta/recipes-support/mpfr/mpfr_3.1.0.bb:LICENSE="GPLv3&LGPLv3" openembedded-core/meta/recipes-graphics/xorg-util/util-macros_1.15.0.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xtscal/xtscal_0.6.3.bb:LICENSE = "GPLv2 & GPLv2+" openembedded-core/meta/recipes-graphics/cairo/cairo.inc:LICENSE = "MPL-1 & LGPLv2.1" openembedded-core/meta/recipes-graphics/mesa/mesa-demos_8.0.1.bb:LICENSE = "MIT & PD" openembedded-core/meta/recipes-graphics/xorg-font/font-util_1.2.0.bb:LICENSE = "BSD & MIT" openembedded-core/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb:LICENSE = "MIT-X & GPLv2+" openembedded-core/meta/recipes-graphics/fontconfig/fontconfig_2.8.0.bb:LICENSE = "MIT-style & MIT & PD" openembedded-core/meta/recipes-graphics/menu-cache/menu-cache_0.3.2.bb:LICENSE = "GPLv2 & GPLv2+" openembedded-core/meta/recipes-graphics/xorg-proto/fixesproto_5.0.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-proto/xextproto_7.2.0.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-proto/videoproto_2.3.1.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-proto/xproto_7.0.22.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-proto/inputproto_2.0.2.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-lib/libxt_1.1.1.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-lib/libxmu_1.1.0.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-lib/xtrans_1.2.6.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-lib/libx11-trim_1.3.4.bb:LICENSE = "MIT & MIT-style & BSD" openembedded-core/meta/recipes-graphics/xorg-lib/pixman_0.24.0.bb:LICENSE = "MIT & MIT-style & PD" openembedded-core/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.1.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-lib/libpciaccess_0.12.1.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-lib/libxfont_1.4.4.bb:LICENSE= "MIT & MIT-style & BSD" openembedded-core/meta/recipes-graphics/xorg-lib/libxp_1.0.1.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-lib/libxi_1.4.3.bb:LICENSE = "MIT & MIT-style" openembedded-core/meta/recipes-graphics/xorg-lib/libx11-trim_1.4.4.bb:LICENSE = "MIT & MIT-style & BSD" openembedded-core/meta/recipes-graphics/xorg-lib/libx11.inc:LICENSE = "MIT & MIT-style & BSD" openembedded-core/meta/recipes-rt/rt-tests/rt-tests_0.83.bb:LICENSE = "GPLv2 & GPLv2+" >> + >> +COPYLEFT_LICENSE_EXCLUDE ?= 'CLOSED Proprietary' >> +COPYLEFT_LICENSE_EXCLUDE[type] = 'list' >> +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs which exclude licenses' >> + >> + >> +def copyleft_should_include(d): >> + """Determine if this recipe's sources should be deployed for compliance""" >> + import ast >> + import oe.license >> + from fnmatch import fnmatchcase as fnmatch >> + >> + if oe.utils.inherits(d, 'native', 'nativesdk', 'cross', 'crossdk'): > we do ship some of them in SDK so IMO they should not be excluded. > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
On 2011-12-09 03:21, Ulf Samuelsson wrote: > On 2011-12-07 22:53, Khem Raj wrote: >> On (07/12/11 11:34), Beth Flanagan wrote: >>> From: Christopher Larson<kergoth@gmail.com> >>> >>> Deploys sources for recipes for compliance with copyleft-style licenses >>> Defaults to using symlinks, as it's a quick operation, and one can >>> easily >>> follow the links when making use of the files (e.g. tar with the -h >>> arg). >>> >>> By default, includes all GPL and LGPL, and excludes CLOSED and >>> Proprietary. >>> >>> Signed-off-by: Christopher Larson<kergoth@gmail.com> >>> --- >>> meta/classes/copyleft_compliance.bbclass | 94 >>> ++++++++++++++++++++++++++++++ >>> 1 files changed, 94 insertions(+), 0 deletions(-) >>> create mode 100644 meta/classes/copyleft_compliance.bbclass >>> >>> diff --git a/meta/classes/copyleft_compliance.bbclass >>> b/meta/classes/copyleft_compliance.bbclass >>> new file mode 100644 >>> index 0000000..5d9ab11 >>> --- /dev/null >>> +++ b/meta/classes/copyleft_compliance.bbclass >>> @@ -0,0 +1,94 @@ >>> +# Deploy sources for recipes for compliance with copyleft-style >>> licenses >>> +# Defaults to using symlinks, as it's a quick operation, and one >>> can easily >>> +# follow the links when making use of the files (e.g. tar with the >>> -h arg). >>> +# >>> +# By default, includes all GPL and LGPL, and excludes CLOSED and >>> Proprietary. >>> +# >>> +# vi:sts=4:sw=4:et >>> + >>> +COPYLEFT_SOURCES_DIR ?= '${DEPLOY_DIR}/copyleft_sources' >>> + >>> +COPYLEFT_LICENSE_INCLUDE ?= 'GPL* LGPL*' >>> +COPYLEFT_LICENSE_INCLUDE[type] = 'list' >>> +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs >>> which include licenses' > If the Ampersand is not accepted in the LICENSE string, then the > recipes below are broken. > > From my latest build, at least recipes with "&&" fail... > This means that nothing really completes that I have tested. > > MAJOR BREAKAGE!!!! > > I think it would be better FIRST to fix the recipes, and then > introduce checking. > BR > Ulf > Some more failing! meta-angstrom/recipes-angstrom/angstrom/e-wm-config-angstrom.bb:LICENSE = "MIT/BSD" meta-angstrom/recipes-angstrom/angstrom/exquisite-theme-angstrom.bb:LICENSE = "MIT/BSD" meta-openembedded/meta-oe/recipes-graphics/xinput-calibrator/xinput-calibrator_0.7.5.bb:LICENSE = "MIT/X11" meta-smartphone/meta-fso/recipes-freesmartphone/freesmartphone/illume-theme-freesmartphone_git.bb:LICENSE = "MIT/BSD" BR Ulf > > meta-bugfix/meta/recipes-connectivity/connman/connman-gnome_0.5.bb:LICENSE > = "GPLv2 & LGPLv2.1" > meta-openembedded/meta-gnome/recipes-gnome/gobject-introspection/gobject-introspection_0.9.10.bb:LICENSE > = "GPLv2+ & LGPLv2+" > meta-openembedded/meta-gnome/recipes-gnome/gobject-introspection/gobject-introspection_git.bb:LICENSE > = "GPLv2+ & LGPLv2+" > meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus_2.30.5.bb:LICENSE > = "GPLv2 && LGPLv2" > meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs_2.24.4.bb:LICENSE > = "GPLv2+ & LGPLv2+" > meta-openembedded/meta-gnome/recipes-gnome/gtk+/gtk+3_3.0.11.bb:LICENSE = > "LGPLv2 & LGPLv2+ & LGPLv2.1+" > meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus3_3.0.2.bb:LICENSE="GPLv2 > && LGPLv2" > meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_2.32.2.bb:LICENSE="GPLv2 > && LGPLv2" > meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo.inc:LICENSE = > "GPLv2 && LGPLv2.1" > meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonoboui_2.24.3.bb:LICENSE > = "GPLv2 && LGPLv2.1" > meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_2.32.1.bb:LICENSE > = "GPLv2 & LGPLv2" > meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.0.2.bb:LICENSE > = "GPLv2 & LGPLv2" > meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_2.32.1.bb:LICENSE > = "GPLv2 && LGPLv2 && GFDLv1.1" > meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel3_3.0.2.bb:LICENSE > = "GPLv2 && LGPLv2 && GFDLv1.1" > meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_2.32.0.bb:LICENSE > = "GPLv2 && LGPLv2.1" > meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnome-keyring_2.32.0.bb:LICENSE > = "LGPLv2 && GPLv2" > meta-openembedded/meta-oe/recipes-multimedia/jack/jack_0.121.0.bb:LICENSE > = "GPLv2 && LGPLv2.1" > meta-openembedded/meta-oe/recipes-multimedia/audiofile/audiofile_0.2.7.bb:LICENSE > = "LGPLv2 && GPLv2" > meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.5.bb:LICENSE > = "GPLv2 && LGPLv2.1" > meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm.inc:LICENSE = > "LGPLv2.1 && GPLv2" > meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_0.4.12.bb:LICENSE > = "MIT && zlib" > meta-openembedded/meta-oe/recipes-devtools/python/python-numeric_24.2.bb:LICENSE > = "PSF & LLNL" > meta-openembedded/meta-oe/recipes-devtools/swig/swig.inc:LICENSE = > "BSD && GPLv3" > meta-openembedded/meta-oe/recipes-devtools/gcc/gcc-4.5.inc:LICENSE="GCC RUNTIME > LIBRARY EXCEPTION & GPLv2 & GPLv3 & LGPLv2.1 & LGPLv3" > meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm.inc:LICENSE = > "LGPLv2.1 && GPLv2" > meta-openembedded/meta-oe/recipes-core/udev/udev_175.bb:LICENSE = > "GPLv2+ & LGPLv2.1+" > meta-openembedded/meta-oe/recipes-core/udev/udev_173.bb:LICENSE = > "GPLv2+ & LGPLv2.1+" > meta-openembedded/meta-oe/recipes-support/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2011.4.12.bb:LICENSE > = "GPLv2 & LGPLv2" > meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.31.bb:LICENSE > = "GPLv2+ && BSD" > meta-openembedded/meta-oe/recipes-support/debianutils/debianutils_2.30.bb:LICENSE > = "GPLv2 & BSD & SMAIL_GPL" > meta-openembedded/meta-oe/recipes-support/mpfr/mpfr_3.0.0.bb:LICENSE="GPLv3&LGPLv3" > > meta-openembedded/meta-oe/recipes-support/fuse/fuse_2.8.6.bb:LICENSE = > "GPLv2&LGPLv2" > meta-openembedded/meta-oe/recipes-support/fuse/fuse_2.8.5.bb:LICENSE = > "GPLv2&LGPLv2" > meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc:LICENSE = > "GPLv2 && LGPLv2" > meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.28.2.bb:LICENSE > = "LGPLv2.1 && GPLv2" > meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb:LICENSE_URL > = "http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=OFL" > meta-smartphone/meta-aurora/recipes-aurora/aurora/aurora-daemon_git.bb:LICENSE > = "GPLv2 & Other" > meta-ti/recipes-misc/payload/beaglebone-getting-started.bb:LICENSE = > "GPLv2+ && MIT && PD && others" > openembedded-core/meta/recipes-multimedia/flac/flac_1.2.1.bb:LICENSE = > "FDLv1.2 & GPLv2+ & LGPLv2.1+ & BSD" > openembedded-core/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb:LICENSE > = "LGPLv2.1 & GPLv2+" > openembedded-core/meta/recipes-multimedia/alsa/alsa-tools_1.0.24.1.bb:LICENSE > = "GPLv2 & LGPLv2+" > openembedded-core/meta/recipes-multimedia/pulseaudio/pulseaudio.inc:LICENSE > = "GPLv2+ & LGPLv2.1" > openembedded-core/meta/recipes-multimedia/pulseaudio/libatomics-ops_1.2.bb:LICENSE > = "GPLv2 & MIT" > openembedded-core/meta/recipes-multimedia/gstreamer/gst-plugins-ugly_0.10.17.bb:LICENSE > = "GPLv2+ & LGPLv2.1+ & LGPLv2+" > openembedded-core/meta/recipes-multimedia/gstreamer/gst-ffmpeg_0.10.11.bb:LICENSE > = "GPLv2+ & LGPLv2+ & ( (GPLv2+ & LGPLv2.1+) | (GPLv3+ & LGPLv3+) )" > openembedded-core/meta/recipes-multimedia/gstreamer/gst-plugins-base_0.10.35.bb:LICENSE > = "GPLv2+ & LGPLv2+" > openembedded-core/meta/recipes-multimedia/gstreamer/gst-plugins-bad_0.10.21.bb:LICENSE > = "GPLv2+ & LGPLv2+ & LGPLv2.1+ " > openembedded-core/meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.30.bb:LICENSE > = "GPLv2+ & LGPLv2.1+" > openembedded-core/meta/classes/src_distribute.bbclass: licenses = > d.getVar('LICENSE', 1).replace('&', '|') > openembedded-core/meta/classes/license.bbclass: > pkged_lic="$(sed -n '/^LICENSE: /{ s/^LICENSE: //; s/[+|&()*]/ /g; s/ > */ /g; p }' ${filename})" > openembedded-core/meta/recipes-connectivity/bluez/bluez4.inc:LICENSE = > "GPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-connectivity/bind/bind_9.8.1.bb:LICENSE > = "ISC & BSD" > openembedded-core/meta/recipes-connectivity/wireless-tools/wireless-tools_29.bb:LICENSE > = "GPLv2 & (LGPL | MPL | BSD)" > openembedded-core/meta/recipes-connectivity/gypsy/gypsy_git.bb:LICENSE > = "GPLv2+ & LGPLv2+" > openembedded-core/meta/recipes-connectivity/gypsy/gypsy_0.8.bb:LICENSE > = "GPLv2+ & LGPLv2+" > openembedded-core/meta/recipes-connectivity/avahi/avahi.inc:LICENSE = > "GPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-connectivity/connman/connman-gnome_0.5.bb:LICENSE > = "GPLv2 & LGPLv2.1" > openembedded-core/meta/recipes-connectivity/ppp/ppp_2.4.5.bb:LICENSE = > "BSD & GPLv2+ & LGPLv2+ & PD" > openembedded-core/meta/recipes-connectivity/gsm/gsmd.inc:LICENSE = > "GPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-gnome/gtk+/gtk+.inc:LICENSE = "LGPLv2 & > LGPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-gnome/libglade/libglade_2.6.4.bb:LICENSE = > "LGPLv2 & LGPLv2+" > openembedded-core/meta/recipes-gnome/gnome/gnome-desktop.inc:LICENSE = > "GPLv2 & LGPLv2" > openembedded-core/meta/recipes-gnome/gnome/gobject-introspection_git.bb:LICENSE > = "GPLv2+ & LGPLv2+" > openembedded-core/meta/recipes-gnome/gnome/gnome-doc-utils.inc:LICENSE > = "GPL & LGPL" > openembedded-core/meta/recipes-gnome/gnome/libgnome-keyring_2.32.0.bb:LICENSE > = "LGPLv2 & LGPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-gnome/gnome/gnome-mime-data_2.18.0.bb:LICENSE > = "GPLv2 & GPLv2+" > openembedded-core/meta/recipes-gnome/gnome/gnome-keyring_2.32.1.bb:LICENSE > = "GPLv2+ & LGPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-extended/quota/quota_4.00-pre1.bb:LICENSE > = "BSD & GPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-extended/sudo/sudo.inc:LICENSE = "ISC & > UCB & Zlib" > openembedded-core/meta/recipes-extended/sysklogd/sysklogd.inc:LICENSE > = "GPLv2+ & BSD" > openembedded-core/meta/recipes-extended/xz/xz_5.0.3.bb:LICENSE = > "GPLv2+ & GPLv3+ & LGPLv2.1+" > openembedded-core/meta/recipes-extended/cronie/cronie_1.4.8.bb:LICENSE > = "ISC & BSD" > openembedded-core/meta/recipes-extended/libidn/libidn_0.6.14.bb:LICENSE = > "LGPLv2.1+ & GPLv2+" > openembedded-core/meta/recipes-extended/libidn/libidn_1.22.bb:LICENSE > = "LGPLv2.1+ & GPLv3+" > openembedded-core/meta/recipes-extended/iputils/iputils_s20101006.bb:LICENSE > = "BSD & GPLv2+" > openembedded-core/meta/recipes-extended/bc/bc_1.06.bb:LICENSE = > "GPLv2+ & LGPLv2.1" > openembedded-core/meta/recipes-extended/mailx/mailx_12.5.bb:LICENSE = > "BSD & MPL-1" > openembedded-core/meta/recipes-extended/procps/procps.inc:LICENSE = > "GPLv2+ & LGPLv2+" > openembedded-core/meta/files/common-licenses/CDDL-1.0:COVERED SOFTWARE > IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, > WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, > WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF > DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. > THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED > SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN > ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) > ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS > DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. > NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER > THIS DISCLAIMER. > openembedded-core/meta/files/common-licenses/CPAL-1.0:COVERED CODE IS > PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT > WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT > LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, > MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE > ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS > WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU > (NOT THE INITIAL DEVELOPER, ORIGINAL DEVELOPER OR ANY OTHER > CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR > CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART > OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER > EXCEPT UNDER THIS DISCLAIMER. > openembedded-core/meta/recipes-devtools/elfutils/elfutils_0.148.bb:LICENSE > = "(GPL-2+ & Elfutils-Exception)" > openembedded-core/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc:LICENSE = > "GPLv2 & LGPLv2 & BSD & MIT" > openembedded-core/meta/recipes-devtools/valgrind/valgrind_3.6.1.bb:LICENSE > = "GPLv2 & GPLv2+ & BSD" > openembedded-core/meta/recipes-devtools/gdb/gdb_7.3.1.bb:LICENSE="GPLv2 & > GPLv3 & LGPLv2 & LGPLv3" > openembedded-core/meta/recipes-devtools/python/python-pycairo_1.8.10.bb:LICENSE > = "LGPLv2.1 & MPL-1" > openembedded-core/meta/recipes-devtools/gcc/gcc-4.6.inc:LICENSE="GPL-3.0-with-GCC-exception > & GPLv3" > openembedded-core/meta/recipes-devtools/squashfs-tools/squashfs-tools_4.2.bb:LICENSE > = "GPL-2 & PD" > openembedded-core/meta/recipes-devtools/libtool/libtool-2.4.2.inc:LICENSE > = "GPLv2 & LGPLv2.1" > openembedded-core/meta/recipes-devtools/autoconf/autoconf_2.68.bb:LICENSE > = "GPLv2 & GPLv3" > openembedded-core/meta/recipes-devtools/qemu/qemu.inc:LICENSE = "GPLv2 > & LGPLv2.1" > openembedded-core/meta/recipes-devtools/make/make_3.82.bb:LICENSE="GPLv3&LGPLv2" > > openembedded-core/meta/recipes-core/gettext/gettext_0.18.1.1.bb:LICENSE = > "GPL-3+ & LGPL-2.1+" > openembedded-core/meta/recipes-core/glib-2.0/glib.inc:LICENSE = > "LGPLv2+ & BSD & PD" > openembedded-core/meta/recipes-core/busybox/busybox.inc:LICENSE = > "GPLv2 & BSD-4-Clause" > openembedded-core/meta/recipes-core/udev/udev-new.inc:LICENSE = > "GPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb:LICENSE > = "GPLv2 & LGPLv2.1" > openembedded-core/meta/recipes-core/eglibc/eglibc-locale.inc:LICENSE = > "GPLv2 & LGPLv2.1" > openembedded-core/meta/recipes-core/eglibc/eglibc-common.inc:LICENSE = > "GPLv2 & LGPLv2.1" > openembedded-core/meta/recipes-core/util-linux/util-linux.inc:LICENSE > = "GPLv2+ & LGPLv2.1+ & BSD" > openembedded-core/meta/recipes-kernel/oprofile/oprofile.inc:LICENSE = > "LGPLv2.1+ & GPLv2" > openembedded-core/meta/recipes-kernel/lttng/lttng-ust_0.15.bb:LICENSE > = "LGPLv2.1+ & BSD" > openembedded-core/meta/recipes-kernel/lttng/lttng-viewer_0.12.38.bb:LICENSE > = "GPLv2 & LGPLv2.1" > openembedded-core/meta/recipes-sato/pimlico/contacts.inc:LICENSE = > "GPLv2 & GPLv2+ & GPLv3+ " > openembedded-core/meta/recipes-sato/pimlico/tasks.inc:LICENSE = "GPLv2 > & GPLv2+" > openembedded-core/meta/recipes-sato/pimlico/dates.inc:LICENSE = "GPLv2 > & GPLv2+ & LGPLv2+" > openembedded-core/meta/recipes-sato/sato-screenshot/sato-screenshot_git.bb:LICENSE > = "GPLv2 & GPLv2+" > openembedded-core/meta/recipes-sato/matchbox-desktop/matchbox-desktop_git.bb:LICENSE > = "GPLv2+ & LGPLv2+" > openembedded-core/meta/recipes-sato/gtk-engines/gtk-sato-engine.inc:LICENSE > = "LGPLv2.1 & LGPLv2+" > openembedded-core/meta/recipes-sato/libowl/libowl_git.bb:LICENSE = > "GPLv2 & LGPLv2+" > openembedded-core/meta/recipes-sato/eds/eds-dbus_2.20.0.bb:LICENSE = > "LGPLv2 & LGPLv2+" > openembedded-core/meta/recipes-sato/eds/eds-dbus_git.bb:LICENSE = > "LGPLv2 & LGPLv2+" > openembedded-core/meta/recipes-sato/owl-video-widget/owl-video_git.bb:LICENSE > = "LGPLv2.1 & GPLv2+" > openembedded-core/meta/recipes-sato/leafpad/leafpad_0.8.18.1.bb:LICENSE = > "GPLv2 & GPLv2+" > openembedded-core/meta/recipes-sato/webkit/webkit-gtk_svn.bb:LICENSE = > "BSD & LGPLv2+" > openembedded-core/meta/recipes-sato/pcmanfm/pcmanfm_0.9.10.bb:LICENSE > = "GPLv2 & GPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-support/gmp/gmp_5.0.2.bb:LICENSE="LGPLv3&GPLv3" > > openembedded-core/meta/recipes-support/libfm/libfm_0.1.17.bb:LICENSE = > "GPLv2 & GPLv2+" > openembedded-core/meta/recipes-support/boost/boost.inc:LICENSE = > "BSL-1 & MIT & Python-2.0" > openembedded-core/meta/recipes-support/gpgme/gpgme_1.3.1.bb:LICENSE = > "GPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-support/beecrypt/beecrypt_4.2.1.bb:LICENSE > = "GPLv2 & LGPLv2.1" > openembedded-core/meta/recipes-support/libcroco/libcroco_0.6.3.bb:LICENSE > = "LGPLv2 & LGPLv2.1" > openembedded-core/meta/recipes-support/libgdbus/libgdbus_git.bb:LICENSE = > "GPLv2 & LGPLv2.1" > openembedded-core/meta/recipes-support/libgpg-error/libgpg-error_1.10.bb:LICENSE > = "GPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-support/atk/atk.inc:LICENSE = "LGPLv2 & > LGPLv2+" > openembedded-core/meta/recipes-support/gnutls/gnutls.inc:LICENSE = > "GPLv3+ & LGPLv2.1+" > openembedded-core/meta/recipes-support/gnutls/libtasn1_2.11.bb:LICENSE > = "GPLv3+ & LGPLv2.1+" > openembedded-core/meta/recipes-support/libgcrypt/libgcrypt.inc:LICENSE > = "GPLv2+ & LGPLv2.1+" > openembedded-core/meta/recipes-support/liburcu/liburcu_0.6.4.bb:LICENSE = > "LGPLv2.1+ & MIT-style" > openembedded-core/meta/recipes-support/libassuan/libassuan_2.0.2.bb:LICENSE > = "GPLv3 & LGPLv2.1+" > openembedded-core/meta/recipes-support/attr/acl.inc:LICENSE = > "LGPLv2.1+ & GPLv2+" > openembedded-core/meta/recipes-support/attr/attr.inc:LICENSE = > "LGPLv2.1+ & GPLv2+" > openembedded-core/meta/recipes-support/mpfr/mpfr_3.1.0.bb:LICENSE="GPLv3&LGPLv3" > > openembedded-core/meta/recipes-graphics/xorg-util/util-macros_1.15.0.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xtscal/xtscal_0.6.3.bb:LICENSE > = "GPLv2 & GPLv2+" > openembedded-core/meta/recipes-graphics/cairo/cairo.inc:LICENSE = > "MPL-1 & LGPLv2.1" > openembedded-core/meta/recipes-graphics/mesa/mesa-demos_8.0.1.bb:LICENSE > = "MIT & PD" > openembedded-core/meta/recipes-graphics/xorg-font/font-util_1.2.0.bb:LICENSE > = "BSD & MIT" > openembedded-core/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb:LICENSE > = "MIT-X & GPLv2+" > openembedded-core/meta/recipes-graphics/fontconfig/fontconfig_2.8.0.bb:LICENSE > = "MIT-style & MIT & PD" > openembedded-core/meta/recipes-graphics/menu-cache/menu-cache_0.3.2.bb:LICENSE > = "GPLv2 & GPLv2+" > openembedded-core/meta/recipes-graphics/xorg-proto/fixesproto_5.0.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-proto/xextproto_7.2.0.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-proto/videoproto_2.3.1.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-proto/xproto_7.0.22.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-proto/inputproto_2.0.2.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-lib/libxt_1.1.1.bb:LICENSE = > "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-lib/libxmu_1.1.0.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-lib/xtrans_1.2.6.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-lib/libx11-trim_1.3.4.bb:LICENSE > = "MIT & MIT-style & BSD" > openembedded-core/meta/recipes-graphics/xorg-lib/pixman_0.24.0.bb:LICENSE > = "MIT & MIT-style & PD" > openembedded-core/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.1.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-lib/libpciaccess_0.12.1.bb:LICENSE > = "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-lib/libxfont_1.4.4.bb:LICENSE= > "MIT & MIT-style & BSD" > openembedded-core/meta/recipes-graphics/xorg-lib/libxp_1.0.1.bb:LICENSE = > "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-lib/libxi_1.4.3.bb:LICENSE = > "MIT & MIT-style" > openembedded-core/meta/recipes-graphics/xorg-lib/libx11-trim_1.4.4.bb:LICENSE > = "MIT & MIT-style & BSD" > openembedded-core/meta/recipes-graphics/xorg-lib/libx11.inc:LICENSE = > "MIT & MIT-style & BSD" > openembedded-core/meta/recipes-rt/rt-tests/rt-tests_0.83.bb:LICENSE = > "GPLv2 & GPLv2+" > > > > >>> + >>> +COPYLEFT_LICENSE_EXCLUDE ?= 'CLOSED Proprietary' >>> +COPYLEFT_LICENSE_EXCLUDE[type] = 'list' >>> +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs >>> which exclude licenses' >>> + >>> + >>> +def copyleft_should_include(d): >>> + """Determine if this recipe's sources should be deployed for >>> compliance""" >>> + import ast >>> + import oe.license >>> + from fnmatch import fnmatchcase as fnmatch >>> + >>> + if oe.utils.inherits(d, 'native', 'nativesdk', 'cross', >>> 'crossdk'): >> we do ship some of them in SDK so IMO they should not be excluded. >> >> _______________________________________________ >> Openembedded-core mailing list >> Openembedded-core@lists.openembedded.org >> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > >
On Fri, 2011-12-09 at 03:21 +0100, Ulf Samuelsson wrote: > On 2011-12-07 22:53, Khem Raj wrote: > > On (07/12/11 11:34), Beth Flanagan wrote: > >> From: Christopher Larson<kergoth@gmail.com> > >> > >> Deploys sources for recipes for compliance with copyleft-style licenses > >> Defaults to using symlinks, as it's a quick operation, and one can easily > >> follow the links when making use of the files (e.g. tar with the -h arg). > >> > >> By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. > >> > >> Signed-off-by: Christopher Larson<kergoth@gmail.com> > >> --- > >> meta/classes/copyleft_compliance.bbclass | 94 ++++++++++++++++++++++++++++++ > >> 1 files changed, 94 insertions(+), 0 deletions(-) > >> create mode 100644 meta/classes/copyleft_compliance.bbclass > >> > >> diff --git a/meta/classes/copyleft_compliance.bbclass b/meta/classes/copyleft_compliance.bbclass > >> new file mode 100644 > >> index 0000000..5d9ab11 > >> --- /dev/null > >> +++ b/meta/classes/copyleft_compliance.bbclass > >> @@ -0,0 +1,94 @@ > >> +# Deploy sources for recipes for compliance with copyleft-style licenses > >> +# Defaults to using symlinks, as it's a quick operation, and one can easily > >> +# follow the links when making use of the files (e.g. tar with the -h arg). > >> +# > >> +# By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. > >> +# > >> +# vi:sts=4:sw=4:et > >> + > >> +COPYLEFT_SOURCES_DIR ?= '${DEPLOY_DIR}/copyleft_sources' > >> + > >> +COPYLEFT_LICENSE_INCLUDE ?= 'GPL* LGPL*' > >> +COPYLEFT_LICENSE_INCLUDE[type] = 'list' > >> +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs which include licenses' > If the Ampersand is not accepted in the LICENSE string, then the recipes > below are broken. > > From my latest build, at least recipes with "&&" fail... > This means that nothing really completes that I have tested. > > MAJOR BREAKAGE!!!! > > I think it would be better FIRST to fix the recipes, and then introduce > checking. I think the single ampersand is accepted, the double might no longer be. Certainly oe-core does continue to work. I hadn't realised there were incompatibilities introduced by this patch :( Not sure what we should do about this at this point, probably fix the layers :/. Cheers, Richard
On 2011-12-09 12:45, Richard Purdie wrote: > On Fri, 2011-12-09 at 03:21 +0100, Ulf Samuelsson wrote: >> On 2011-12-07 22:53, Khem Raj wrote: >>> On (07/12/11 11:34), Beth Flanagan wrote: >>>> From: Christopher Larson<kergoth@gmail.com> >>>> >>>> Deploys sources for recipes for compliance with copyleft-style licenses >>>> Defaults to using symlinks, as it's a quick operation, and one can easily >>>> follow the links when making use of the files (e.g. tar with the -h arg). >>>> >>>> By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. >>>> >>>> Signed-off-by: Christopher Larson<kergoth@gmail.com> >>>> --- >>>> meta/classes/copyleft_compliance.bbclass | 94 ++++++++++++++++++++++++++++++ >>>> 1 files changed, 94 insertions(+), 0 deletions(-) >>>> create mode 100644 meta/classes/copyleft_compliance.bbclass >>>> >>>> diff --git a/meta/classes/copyleft_compliance.bbclass b/meta/classes/copyleft_compliance.bbclass >>>> new file mode 100644 >>>> index 0000000..5d9ab11 >>>> --- /dev/null >>>> +++ b/meta/classes/copyleft_compliance.bbclass >>>> @@ -0,0 +1,94 @@ >>>> +# Deploy sources for recipes for compliance with copyleft-style licenses >>>> +# Defaults to using symlinks, as it's a quick operation, and one can easily >>>> +# follow the links when making use of the files (e.g. tar with the -h arg). >>>> +# >>>> +# By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. >>>> +# >>>> +# vi:sts=4:sw=4:et >>>> + >>>> +COPYLEFT_SOURCES_DIR ?= '${DEPLOY_DIR}/copyleft_sources' >>>> + >>>> +COPYLEFT_LICENSE_INCLUDE ?= 'GPL* LGPL*' >>>> +COPYLEFT_LICENSE_INCLUDE[type] = 'list' >>>> +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs which include licenses' >> If the Ampersand is not accepted in the LICENSE string, then the recipes >> below are broken. >> >> From my latest build, at least recipes with "&&" fail... >> This means that nothing really completes that I have tested. >> >> MAJOR BREAKAGE!!!! >> >> I think it would be better FIRST to fix the recipes, and then introduce >> checking. > I think the single ampersand is accepted, the double might no longer be. Yes, the single ampersand works, but the double ampersand will break the build as well as the slash '/'. > Certainly oe-core does continue to work. I hadn't realised there were > incompatibilities introduced by this patch :( > > Not sure what we should do about this at this point, probably fix the > layers :/. > True, question is who and when ? > Cheers, > > Richard > > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Op 9 dec. 2011, om 14:46 heeft Ulf Samuelsson het volgende geschreven: > On 2011-12-09 12:45, Richard Purdie wrote: >> On Fri, 2011-12-09 at 03:21 +0100, Ulf Samuelsson wrote: >>> On 2011-12-07 22:53, Khem Raj wrote: >>>> On (07/12/11 11:34), Beth Flanagan wrote: >>>>> From: Christopher Larson<kergoth@gmail.com> >>>>> >>>>> Deploys sources for recipes for compliance with copyleft-style licenses >>>>> Defaults to using symlinks, as it's a quick operation, and one can easily >>>>> follow the links when making use of the files (e.g. tar with the -h arg). >>>>> >>>>> By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. >>>>> >>>>> Signed-off-by: Christopher Larson<kergoth@gmail.com> >>>>> --- >>>>> meta/classes/copyleft_compliance.bbclass | 94 ++++++++++++++++++++++++++++++ >>>>> 1 files changed, 94 insertions(+), 0 deletions(-) >>>>> create mode 100644 meta/classes/copyleft_compliance.bbclass >>>>> >>>>> diff --git a/meta/classes/copyleft_compliance.bbclass b/meta/classes/copyleft_compliance.bbclass >>>>> new file mode 100644 >>>>> index 0000000..5d9ab11 >>>>> --- /dev/null >>>>> +++ b/meta/classes/copyleft_compliance.bbclass >>>>> @@ -0,0 +1,94 @@ >>>>> +# Deploy sources for recipes for compliance with copyleft-style licenses >>>>> +# Defaults to using symlinks, as it's a quick operation, and one can easily >>>>> +# follow the links when making use of the files (e.g. tar with the -h arg). >>>>> +# >>>>> +# By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. >>>>> +# >>>>> +# vi:sts=4:sw=4:et >>>>> + >>>>> +COPYLEFT_SOURCES_DIR ?= '${DEPLOY_DIR}/copyleft_sources' >>>>> + >>>>> +COPYLEFT_LICENSE_INCLUDE ?= 'GPL* LGPL*' >>>>> +COPYLEFT_LICENSE_INCLUDE[type] = 'list' >>>>> +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs which include licenses' >>> If the Ampersand is not accepted in the LICENSE string, then the recipes >>> below are broken. >>> >>> From my latest build, at least recipes with "&&" fail... >>> This means that nothing really completes that I have tested. >>> >>> MAJOR BREAKAGE!!!! >>> >>> I think it would be better FIRST to fix the recipes, and then introduce >>> checking. >> I think the single ampersand is accepted, the double might no longer be. > Yes, the single ampersand works, but the double ampersand will break the build > as well as the slash '/'. > > >> Certainly oe-core does continue to work. I hadn't realised there were >> incompatibilities introduced by this patch :( >> >> Not sure what we should do about this at this point, probably fix the >> layers :/. >> > True, question is who and when ? The people complaining about it and right now.
>> Certainly oe-core does continue to work. I hadn't realised there were >> incompatibilities introduced by this patch :( >> >> Not sure what we should do about this at this point, probably fix the >> layers :/. >> > True, question is who and when ? > layer maintainers. I think this change deserved an early warning so layer maintainers could have buckled up.
On Fri, Dec 9, 2011 at 5:51 AM, Koen Kooi <koen@dominion.thruhere.net>wrote: > > Op 9 dec. 2011, om 14:46 heeft Ulf Samuelsson het volgende geschreven: > > > On 2011-12-09 12:45, Richard Purdie wrote: > >> On Fri, 2011-12-09 at 03:21 +0100, Ulf Samuelsson wrote: > >>> On 2011-12-07 22:53, Khem Raj wrote: > >>>> On (07/12/11 11:34), Beth Flanagan wrote: > >>>>> From: Christopher Larson<kergoth@gmail.com> > >>>>> > >>>>> Deploys sources for recipes for compliance with copyleft-style > licenses > >>>>> Defaults to using symlinks, as it's a quick operation, and one can > easily > >>>>> follow the links when making use of the files (e.g. tar with the -h > arg). > >>>>> > >>>>> By default, includes all GPL and LGPL, and excludes CLOSED and > Proprietary. > >>>>> > >>>>> Signed-off-by: Christopher Larson<kergoth@gmail.com> > >>>>> --- > >>>>> meta/classes/copyleft_compliance.bbclass | 94 > ++++++++++++++++++++++++++++++ > >>>>> 1 files changed, 94 insertions(+), 0 deletions(-) > >>>>> create mode 100644 meta/classes/copyleft_compliance.bbclass > >>>>> > >>>>> diff --git a/meta/classes/copyleft_compliance.bbclass > b/meta/classes/copyleft_compliance.bbclass > >>>>> new file mode 100644 > >>>>> index 0000000..5d9ab11 > >>>>> --- /dev/null > >>>>> +++ b/meta/classes/copyleft_compliance.bbclass > >>>>> @@ -0,0 +1,94 @@ > >>>>> +# Deploy sources for recipes for compliance with copyleft-style > licenses > >>>>> +# Defaults to using symlinks, as it's a quick operation, and one > can easily > >>>>> +# follow the links when making use of the files (e.g. tar with the > -h arg). > >>>>> +# > >>>>> +# By default, includes all GPL and LGPL, and excludes CLOSED and > Proprietary. > >>>>> +# > >>>>> +# vi:sts=4:sw=4:et > >>>>> + > >>>>> +COPYLEFT_SOURCES_DIR ?= '${DEPLOY_DIR}/copyleft_sources' > >>>>> + > >>>>> +COPYLEFT_LICENSE_INCLUDE ?= 'GPL* LGPL*' > >>>>> +COPYLEFT_LICENSE_INCLUDE[type] = 'list' > >>>>> +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs > which include licenses' > >>> If the Ampersand is not accepted in the LICENSE string, then the > recipes > >>> below are broken. > >>> > >>> From my latest build, at least recipes with "&&" fail... > >>> This means that nothing really completes that I have tested. > >>> > >>> MAJOR BREAKAGE!!!! > >>> > >>> I think it would be better FIRST to fix the recipes, and then introduce > >>> checking. > >> I think the single ampersand is accepted, the double might no longer be. > > Yes, the single ampersand works, but the double ampersand will break the > build > > as well as the slash '/'. > > > > > >> Certainly oe-core does continue to work. I hadn't realised there were > >> incompatibilities introduced by this patch :( > >> > >> Not sure what we should do about this at this point, probably fix the > >> layers :/. > >> > > True, question is who and when ? > > The people complaining about it and right now. > I know there was a conversation a while back about standardizing this field and documenting it. If anything fell out of it, IDK, If there is any documentation for what is valid form, I've not seen it. If it exists, could someone point me to it? If it doesn't could we get a standards discussion going here about how to move forward with this so we have something documented? I've seen a bunch of different standards here and I really want to get something nailed down as trying to write code for a field that isn't well defined is a pain. A few things I've been thinking about here. - LICENSE should be ast parsable. - license within LICENSE should have no spaces. - At last count there are 100+ OSI opensource licenses. I've been pulling from spdx.org and trying to use their naming convention while also supporting mappings to non-spdx naming conventions. However there are some LICENSE entries that are just wrong (GPL without a version) and need to be fixed. - the operands I've been supporting are & or |, with a modifier of +. I've also been supporting parens grouping of license. example: "(Foo-1.0 & Bar-1.0 ) | (Foo-2.0 & Bar-2.0)". - There is an actual issue with LICENSE in that LICENSE is recipe based. We should probably discuss the ability to support LICENSE_pkg, because the recipe may contain multiple packages some of which don't share a license in LICENSE. - LICENSE priority should probably be dealt in a config but not in the recipe. To me, it would make more sense as the main use case would probably center around "If I can avoid getting XXX license in this image, please do". I'll look at this to see if there is a way to handle some of the issues this code introduces better, as I'm sure other 3rd party layers exist that will have the same issue with this. -b > -----BEGIN PGP SIGNATURE----- > > iEYEARECAAYFAk7iEksACgkQMkyGM64RGpEPYQCeMpX884EmuwpUaIdFrvJ4Pp09 > aPoAn08cOAO5X2JMPXSoOEcFBPzDt+0V > =LDRp > -----END PGP SIGNATURE----- > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > >
Patch
diff --git a/meta/classes/copyleft_compliance.bbclass b/meta/classes/copyleft_compliance.bbclass new file mode 100644 index 0000000..5d9ab11 --- /dev/null +++ b/meta/classes/copyleft_compliance.bbclass @@ -0,0 +1,94 @@ +# Deploy sources for recipes for compliance with copyleft-style licenses +# Defaults to using symlinks, as it's a quick operation, and one can easily +# follow the links when making use of the files (e.g. tar with the -h arg). +# +# By default, includes all GPL and LGPL, and excludes CLOSED and Proprietary. +# +# vi:sts=4:sw=4:et + +COPYLEFT_SOURCES_DIR ?= '${DEPLOY_DIR}/copyleft_sources' + +COPYLEFT_LICENSE_INCLUDE ?= 'GPL* LGPL*' +COPYLEFT_LICENSE_INCLUDE[type] = 'list' +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs which include licenses' + +COPYLEFT_LICENSE_EXCLUDE ?= 'CLOSED Proprietary' +COPYLEFT_LICENSE_EXCLUDE[type] = 'list' +COPYLEFT_LICENSE_INCLUDE[doc] = 'Space separated list of globs which exclude licenses' + + +def copyleft_should_include(d): + """Determine if this recipe's sources should be deployed for compliance""" + import ast + import oe.license + from fnmatch import fnmatchcase as fnmatch + + if oe.utils.inherits(d, 'native', 'nativesdk', 'cross', 'crossdk'): + # not a target recipe + return + + include = oe.data.typed_value('COPYLEFT_LICENSE_INCLUDE', d) + exclude = oe.data.typed_value('COPYLEFT_LICENSE_EXCLUDE', d) + + def include_license(license): + if any(fnmatch(license, pattern) for pattern in exclude): + return False + if any(fnmatch(license, pattern) for pattern in include): + return True + return False + + def choose_licenses(a, b): + """Select the left option in an OR if all its licenses are to be included""" + if all(include_license(lic) for lic in a): + return a + else: + return b + + try: + licenses = oe.license.flattened_licenses(d.getVar('LICENSE', True), choose_licenses) + except oe.license.InvalidLicense as exc: + bb.fatal('%s: %s' % (d.getVar('PF', True), exc)) + + return all(include_license(lic) for lic in licenses) + +python do_prepare_copyleft_sources () { + """Populate a tree of the recipe sources and emit patch series files""" + import os.path + import shutil + + if not copyleft_should_include(d): + return + + sources_dir = d.getVar('COPYLEFT_SOURCES_DIR', 1) + src_uri = d.getVar('SRC_URI', 1).split() + fetch = bb.fetch2.Fetch(src_uri, d) + ud = fetch.ud + + locals = (fetch.localpath(url) for url in fetch.urls) + localpaths = [local for local in locals if not local.endswith('.bb')] + if not localpaths: + return + + pf = d.getVar('PF', True) + dest = os.path.join(sources_dir, pf) + shutil.rmtree(dest, ignore_errors=True) + bb.mkdirhier(dest) + + for path in localpaths: + os.symlink(path, os.path.join(dest, os.path.basename(path))) + + patches = src_patches(d) + for patch in patches: + _, _, local, _, _, parm = bb.decodeurl(patch) + patchdir = parm.get('patchdir') + if patchdir: + series = os.path.join(dest, 'series.subdir.%s' % patchdir.replace('/', '_')) + else: + series = os.path.join(dest, 'series') + + with open(series, 'a') as s: + s.write('%s -p%s\n' % (os.path.basename(local), parm['striplevel'])) +} + +addtask prepare_copyleft_sources after do_fetch before do_build +do_build[recrdeptask] += 'do_prepare_copyleft_sources'