On Sat, Jan 9, 2021 at 11:12 AM Mark Jonas <[email protected]> wrote:

> Hi Khem,
>
> > This patch itself should be first upstreamed
>
> I had some doubts that removing -Werror would find love upstream.
> That's why I started investigating which warning caused the
> compilation to break. And then I realized that the upstream already
> compiles just fine with Clang 11 from https://apt.llvm.org/ on Ubuntu
> 20.04.
>
> Additionally, the removal of
>     ifneq ($(call pathsearch,$(COMPILER_clang)),)
> breaks the use of make without additional parameters and
> auto-detection of the installed compilers. That's what I experienced
> on Ubuntu with gcc before installing clang.



It will compile fine for native builds because it does not consider cross
compiling this patch mainly makes it use compiler from environment firstly

Because I might have gcc and clang installed on my build host but only have
clang cross compiler and no gcc cross compiler it will break in such cases

Warnings happen because it then tries to use gcc specific options which
clang rejects and warns as unknown options

>
>
> > On Sat, Jan 9, 2021 at 9:02 AM Mark Jonas <[email protected]> wrote:
> >>
> >> Hi Khem,
> >>
> >> I wanted to create a patch for beep's mainline so it could be used in
> >> meta-openembedded without your patch. That is, what hinders
> >> compilation with Clang 11 and -Werror. To my astonishment the
> >> unmodified beep v1.4.9 compiles just fine with clang-11 from
> >> https://apt.llvm.org/ on Ubuntu 20.04. And it definitely fails when
> >> building with meta-clang without your patch.
> >>
> >> What is the difference between the two Clangs?
> >>
> >> I have to admit that this is the first time I used clang.
> >>
> >> $ clang-11 --version
> >> Ubuntu clang version
> >> 11.0.1-++20201218093155+43ff75f2c3fe-1~exp1~20201218203809.158
> >> Target: x86_64-pc-linux-gnu
> >> Thread model: posix
> >> InstalledDir: /usr/bin
> >>
> >> $ make COMPILER_gcc=no COMPILER_clang=clang-11 LINKER_clang=clang-11
> >> /bin/sed  -e s/@PACKAGE_TARNAME@/beep/g -e s/@PACKAGE_VERSION@/1.4.9/g
> >> -e s/@DEFAULT_FREQ@/440/g -e s/@DEFAULT_LENGTH@/200/g -e
> >> s/@DEFAULT_DELAY@/100/g -e 's|[@]pkgdocdir@|/usr/share/doc/beep|g' <
> >> beep-config.h.in > beep-config.h.new
> >> mv -f beep-config.h.new beep-config.h
> >> clang-11 -MT beep-main.clang-o -MMD -MP -MF
> >> .deps/beep-main.clang-o.dep   -DPACKAGE_TARNAME='"beep"'
> >> -DPACKAGE_VERSION='"1.4.9"'    -Wall -Wextra -Weverything -Wno-padded
> >> -std=gnu99 -pedantic -Werror -fsanitize=undefined -O -g -o
> >> beep-main.clang-o -c beep-main.c
> >> /bin/sed  -e s/@PACKAGE_TARNAME@/beep/g -e s/@PACKAGE_VERSION@/1.4.9/g
> >> -e s/@DEFAULT_FREQ@/440/g -e s/@DEFAULT_LENGTH@/200/g -e
> >> s/@DEFAULT_DELAY@/100/g -e 's|[@]pkgdocdir@|/usr/share/doc/beep|g' <
> >> beep-usage.txt.in > beep-usage.txt.new
> >> mv -f beep-usage.txt.new beep-usage.txt
> >> echo '/* Auto-generated from `beep-usage.txt`. Modify that file
> >> instead. */' > beep-usage.c
> >> echo '#include "beep-usage.h"' >> beep-usage.c
> >> echo 'char beep_usage[] =' >> beep-usage.c
> >> set -e; IFS=""; while read line; do \
> >>     printf '  "%s\\n"\n' "${line}" >> beep-usage.c; \
> >> done < beep-usage.txt
> >> echo '  ;' >> beep-usage.c
> >> clang-11 -MT beep-usage.clang-o -MMD -MP -MF
> >> .deps/beep-usage.clang-o.dep   -DPACKAGE_TARNAME='"beep"'
> >> -DPACKAGE_VERSION='"1.4.9"'    -Wall -Wextra -Weverything -Wno-padded
> >> -std=gnu99 -pedantic -Werror -fsanitize=undefined -O -g -o
> >> beep-usage.clang-o -c beep-usage.c
> >> clang-11  -Wall -Wextra -Weverything -Wno-padded -std=gnu99 -pedantic
> >> -Werror -fsanitize=undefined -O -g   -o beep.clang beep-log.clang-o
> >> beep-main.clang-o beep-library.clang-o beep-usage.clang-o
> >> beep-drivers.clang-o beep-driver-console.clang-o
> >> beep-driver-evdev.clang-o
> >> cp -f beep.clang beep
> >> /bin/sed  -e s/@PACKAGE_TARNAME@/beep/g -e s/@PACKAGE_VERSION@/1.4.9/g
> >> -e s/@DEFAULT_FREQ@/440/g -e s/@DEFAULT_LENGTH@/200/g -e
> >> s/@DEFAULT_DELAY@/100/g -e 's|[@]pkgdocdir@|/usr/share/doc/beep|g' <
> >> beep.1.in > beep.1.new
> >> mv -f beep.1.new beep.1
> >>
> >> Cheers,
> >> Mark
> >>
> >> On Thu, Dec 24, 2020 at 7:59 AM Khem Raj <[email protected]> wrote:
> >> >
> >> > From: Mark Jonas <[email protected]>
> >> >
> >> > The previous version 1.2.2 of beep was provided by
> >> > http://johnath.com/beep and was released in 2002. The latest version
> 1.3
> >> > was released 2010-07-13. On https://github.com/johnath/beep the
> >> > development stopped 2013-02-07.
> >> >
> >> > In 2018 a developer worked on fixing CVE-2018-1000532 and realized
> that
> >> > fixing this would be more than just a simple patch. Because the
> original
> >> > repository was unmaintained for several years he created
> >> > https://github.com/spkr-beep/beep as the new home for beep.
> >> >
> >> > Debian switched to the new beep with Buster.
> >> >     https://packages.debian.org/buster/beep
> >> >
> >> > Alpine 3.11, Arch Linux, Fedora, and Ubuntu 20.04 also switched to the
> >> > same new beep.
> >> >
> >> > Fix build with clang
> >> >
> >> > Signed-off-by: Mark Jonas <[email protected]>
> >> > Signed-off-by: Khem Raj <[email protected]>
> >> > ---
> >> > v2: Fix build with clang
> >> > v3: Do not build with both clang and gcc
> >> >
> >> >  meta-oe/recipes-extended/beep/beep_1.2.2.bb   | 25 --------
> >> >  meta-oe/recipes-extended/beep/beep_1.4.9.bb   | 32 ++++++++++
> >> >  ...rror-as-it-fails-with-newer-clang-11.patch | 63
> +++++++++++++++++++
> >> >  3 files changed, 95 insertions(+), 25 deletions(-)
> >> >  delete mode 100644 meta-oe/recipes-extended/beep/beep_1.2.2.bb
> >> >  create mode 100644 meta-oe/recipes-extended/beep/beep_1.4.9.bb
> >> >  create mode 100644
> meta-oe/recipes-extended/beep/files/0001-Do-not-use-Werror-as-it-fails-with-newer-clang-11.patch
> >> >
> >> > diff --git a/meta-oe/recipes-extended/beep/beep_1.2.2.bb
> b/meta-oe/recipes-extended/beep/beep_1.2.2.bb
> >> > deleted file mode 100644
> >> > index cafc869645..0000000000
> >> > --- a/meta-oe/recipes-extended/beep/beep_1.2.2.bb
> >> > +++ /dev/null
> >> > @@ -1,25 +0,0 @@
> >> > -DESCRIPTION = "beep is a command line tool for linux that beeps the
> PC speaker"
> >> > -LICENSE = "GPL-2.0"
> >> > -LIC_FILES_CHKSUM =
> "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
> >> > -
> >> > -SRC_URI = "\
> >> > -    http://johnath.com/beep/beep-${PV}.tar.gz \
> >> > -    file://linux-input.patch \
> >> > -"
> >> > -
> >> > -SRC_URI[sha256sum] =
> "5c0445dac43950b7c7c3f235c6fb21f620ab3fd2f3aafaf09896e5730fcf49a1"
> >> > -
> >> > -S = "${WORKDIR}/${BPN}-${PV}"
> >> > -
> >> > -EXTRA_OEMAKE += 'CC="${CC}"'
> >> > -EXTRA_OEMAKE += 'FLAGS="${CFLAGS} ${LDFLAGS}"'
> >> > -
> >> > -do_configure[noexec] = "1"
> >> > -
> >> > -do_compile() {
> >> > -   oe_runmake
> >> > -}
> >> > -
> >> > -do_install() {
> >> > -       install -Dm 0755 ${B}/${PN} ${D}${bindir}/${PN}
> >> > -}
> >> > diff --git a/meta-oe/recipes-extended/beep/beep_1.4.9.bb
> b/meta-oe/recipes-extended/beep/beep_1.4.9.bb
> >> > new file mode 100644
> >> > index 0000000000..8d332b2faf
> >> > --- /dev/null
> >> > +++ b/meta-oe/recipes-extended/beep/beep_1.4.9.bb
> >> > @@ -0,0 +1,32 @@
> >> > +SUMMARY = "beep allows you to have the PC speaker issue beeps and
> beep patterns"
> >> > +DESCRIPTION = "beep allows you to have the PC speaker issue beeps
> and beep \
> >> > +patterns with given frequencies, durations, and spacing."
> >> > +HOMEPAGE = "https://github.com/spkr-beep/beep";
> >> > +BUGTRACKER = "https://github.com/spkr-beep/beep/issues";
> >> > +
> >> > +LICENSE = "GPLv2+"
> >> > +LIC_FILES_CHKSUM =
> "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
> >> > +
> >> > +SRC_URI = "git://github.com/spkr-beep/beep.git;protocol=https \
> >> > +
>  file://0001-Do-not-use-Werror-as-it-fails-with-newer-clang-11.patch \
> >> > +"
> >> > +SRCREV = "8b85ddd09f73b9fd7caa5679298781a57af194ac"
> >> > +S = "${WORKDIR}/git"
> >> > +
> >> > +EXTRA_OEMAKE = " \
> >> > +    COMPILER_gcc='${CC}' \
> >> > +    LINKER_gcc='${CC}' \
> >> > +    COMPILER_clang=no \
> >> > +    LINKER_clang=no \
> >> > +"
> >> > +
> >> > +EXTRA_OEMAKE_toolchain-clang = " \
> >> > +    COMPILER_clang='${CC}' \
> >> > +    LINKER_clang='${CC}' \
> >> > +    COMPILER_gcc=no \
> >> > +    LINKER_gcc=no \
> >> > +"
> >> > +
> >> > +do_install() {
> >> > +    oe_runmake install DESTDIR='${D}'
> >> > +}
> >> > diff --git
> a/meta-oe/recipes-extended/beep/files/0001-Do-not-use-Werror-as-it-fails-with-newer-clang-11.patch
> b/meta-oe/recipes-extended/beep/files/0001-Do-not-use-Werror-as-it-fails-with-newer-clang-11.patch
> >> > new file mode 100644
> >> > index 0000000000..ba7681b983
> >> > --- /dev/null
> >> > +++
> b/meta-oe/recipes-extended/beep/files/0001-Do-not-use-Werror-as-it-fails-with-newer-clang-11.patch
> >> > @@ -0,0 +1,63 @@
> >> > +From 6b33adfa438e35b6a37cfb0364274370ef4f9fc1 Mon Sep 17 00:00:00
> 2001
> >> > +From: Khem Raj <[email protected]>
> >> > +Date: Wed, 23 Dec 2020 18:00:59 +0000
> >> > +Subject: [PATCH] Do not use -Werror as it fails with newer clang 11+
> >> > +
> >> > +Upstream-Status: Pending
> >> > +Signed-off-by: Khem Raj <[email protected]>
> >> > +---
> >> > + GNUmakefile | 1 -
> >> > + 1 file changed, 1 deletion(-)
> >> > +
> >> > +--- a/GNUmakefile
> >> > ++++ b/GNUmakefile
> >> > +@@ -91,12 +91,13 @@ comma := ,
> >> > + # If supported by COMPILER_gcc, add given flags to CFLAGS_gcc.
> >> > + # Example usage:
> >> > + #   $(eval $(call CHECK_CFLAGS_gcc,-fasynchronous-unwind-tables))
> >> > +-define CHECK_CFLAGS_gcc
> >> > +-CFLAGS_gcc += $$(if $$(shell if $$(COMPILER_gcc) $(1) -x c -o
> compile-check.gcc-o -c - < /dev/null > /dev/null 2>&1; then echo yes; else
> :; fi; rm -f compile-check.gcc-o > /dev/null 2>&1),$(1))
> >> > +-endef
> >> > +
> >> > + COMPILER_gcc = gcc
> >> > + LINKER_gcc = gcc
> >> > ++ifneq ($(COMPILER_gcc),no)
> >> > ++define CHECK_CFLAGS_gcc
> >> > ++CFLAGS_gcc += $$(if $$(shell if $$(COMPILER_gcc) $(1) -x c -o
> compile-check.gcc-o -c - < /dev/null > /dev/null 2>&1; then echo yes; else
> :; fi; rm -f compile-check.gcc-o > /dev/null 2>&1),$(1))
> >> > ++endef
> >> > + CPPFLAGS_gcc =
> >> > + CFLAGS_gcc =
> >> > + CFLAGS_gcc += -std=gnu99 -pedantic
> >> > +@@ -113,30 +114,24 @@ CFLAGS_gcc += -save-temps=obj
> >> > + LDFLAGS_gcc =
> >> > + LIBS_gcc =
> >> > +
> >> > +-ifneq ($(call pathsearch,$(COMPILER_gcc)),)
> >> > +-ifneq ($(COMPILER_gcc)),no)
> >> > + COMPILERS += gcc
> >> > + endif
> >> > +-endif
> >> > +
> >> > + COMPILER_clang = clang
> >> > + LINKER_clang = clang
> >> > ++
> >> > ++ifneq ($(COMPILER_clang),no)
> >> > + CPPFLAGS_clang =
> >> > + CFLAGS_clang += -Wall -Wextra
> >> > + CFLAGS_clang += -Weverything
> >> > + CFLAGS_clang += -Wno-padded
> >> > + CFLAGS_clang += -std=gnu99 -pedantic
> >> > +-CFLAGS_clang += -Werror
> >> > +-CFLAGS_clang += -fsanitize=undefined
> >> > + CFLAGS_clang += -O -g
> >> > + LDFLAGS_clang =
> >> > + LIBS_clang =
> >> > +
> >> > +-ifneq ($(call pathsearch,$(COMPILER_clang)),)
> >> > +-ifneq ($(COMPILER_clang),no)
> >> > + COMPILERS += clang
> >> > + endif
> >> > +-endif
> >> > +
> >> > +
> >> > +
> ########################################################################
> >> > --
> >> > 2.29.2
> >> >
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#88655): 
https://lists.openembedded.org/g/openembedded-devel/message/88655
Mute This Topic: https://lists.openembedded.org/mt/79198024/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to