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 (#88650):
https://lists.openembedded.org/g/openembedded-devel/message/88650
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]]
-=-=-=-=-=-=-=-=-=-=-=-