Message ID | 20250927054916.363249-1-raj.khem@gmail.com |
---|---|
State | New |
Headers | show |
Series | gn: Add recipe | expand |
> -----Original Message----- > From: openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org> On Behalf Of Khem Raj via lists.openembedded.org > Sent: den 27 september 2025 07:49 > To: openembedded-core@lists.openembedded.org > Cc: Khem Raj <raj.khem@gmail.com> > Subject: [OE-core] [PATCH] gn: Add recipe > > gn is a commonly used build tool to generate ninja files, used > in a lot of recipes e.g. chromium, qtwebengine, perfetto, hafnium etc. > these recipes come from different layers e.g. meta-qt6/meta-arm/meta-oe > > since not all layers depend on meta-oe ( meta-arm does not ), its not > a possible option. > > Given the usecases, putting it in core will benefit the ecosystem > and reduce some duplication. This recipe is taken from meta-arm > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > --- > meta/conf/distro/include/maintainers.inc | 1 + > meta/recipes-devtools/gn/gn_git.bb | 46 ++++++++++++++++++++++++ > 2 files changed, 47 insertions(+) > create mode 100644 meta/recipes-devtools/gn/gn_git.bb > > diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc > index 0988bf50a72..85a9914469b 100644 > --- a/meta/conf/distro/include/maintainers.inc > +++ b/meta/conf/distro/include/maintainers.inc > @@ -224,6 +224,7 @@ RECIPE_MAINTAINER:pn-glibc-scripts = "Khem Raj <raj.khem@gmail.com>" > RECIPE_MAINTAINER:pn-glibc-testsuite = "Khem Raj <raj.khem@gmail.com>" > RECIPE_MAINTAINER:pn-gmp = "Khem Raj <raj.khem@gmail.com>" > RECIPE_MAINTAINER:pn-glslang = "Jose Quaresma <quaresma.jose@gmail.com>" > +RECIPE_MAINTAINER:pn-gn = "Khem Raj <raj.khem@gmail.com>" > RECIPE_MAINTAINER:pn-gnome-desktop-testing = "Ross Burton <ross.burton@arm.com>" > RECIPE_MAINTAINER:pn-gnu-config = "Robert Yang <liezhi.yang@windriver.com>" > RECIPE_MAINTAINER:pn-gnu-efi = "Yi Zhao <yi.zhao@windriver.com>" > diff --git a/meta/recipes-devtools/gn/gn_git.bb b/meta/recipes-devtools/gn/gn_git.bb > new file mode 100644 > index 00000000000..abc81a9549f > --- /dev/null > +++ b/meta/recipes-devtools/gn/gn_git.bb > @@ -0,0 +1,46 @@ > +SUMMARY = "GN is a meta-build system that generates build files for Ninja" > +DEPENDS += "ninja-native" > + > +LICENSE = "BSD-3-Clause" > +LIC_FILES_CHKSUM = "file://LICENSE;md5=0fca02217a5d49a14dfe2d11837bb34d" > + > +UPSTREAM_CHECK_COMMITS = "1" > + > +SRC_URI = "git://gn.googlesource.com/gn;protocol=https;branch=main" > +SRCREV = "4ce861fc06ec87ff74eb6a17ebbd55e4755ebdeb" > +PV = "0+git" > + > +B = "${WORKDIR}/build" > + > +# Map from our _OS strings to the GN's platform values. > +def gn_platform(variable, d): > + os = d.getVar(variable) > + if "linux" in os: > + return "linux" > + elif "mingw" in os: > + return "mingw" > + else: > + return os > + > +do_configure[cleandirs] += "${B}" > +do_configure() { > + python3 ${S}/build/gen.py \ > + --platform=${@gn_platform("TARGET_OS", d)} \ > + --out-path=${B} \ > + --no-static-libstdc++ \ > + --no-strip > +} > + Add do_compile[progress] to catch the progress info from ninja: do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+" > +do_compile() { > + ninja -C ${B} --verbose > +} > + > +do_install() { > + install -d ${D}${bindir} > + install ${B}/gn ${D}${bindir} > +} > + > +BBCLASSEXTEND = "native" > + > +COMPATIBLE_HOST = "^(?!riscv32).*" > +CFLAGS += "-Wno-error=maybe-uninitialized" //Peter
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc index 0988bf50a72..85a9914469b 100644 --- a/meta/conf/distro/include/maintainers.inc +++ b/meta/conf/distro/include/maintainers.inc @@ -224,6 +224,7 @@ RECIPE_MAINTAINER:pn-glibc-scripts = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER:pn-glibc-testsuite = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER:pn-gmp = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER:pn-glslang = "Jose Quaresma <quaresma.jose@gmail.com>" +RECIPE_MAINTAINER:pn-gn = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER:pn-gnome-desktop-testing = "Ross Burton <ross.burton@arm.com>" RECIPE_MAINTAINER:pn-gnu-config = "Robert Yang <liezhi.yang@windriver.com>" RECIPE_MAINTAINER:pn-gnu-efi = "Yi Zhao <yi.zhao@windriver.com>" diff --git a/meta/recipes-devtools/gn/gn_git.bb b/meta/recipes-devtools/gn/gn_git.bb new file mode 100644 index 00000000000..abc81a9549f --- /dev/null +++ b/meta/recipes-devtools/gn/gn_git.bb @@ -0,0 +1,46 @@ +SUMMARY = "GN is a meta-build system that generates build files for Ninja" +DEPENDS += "ninja-native" + +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=0fca02217a5d49a14dfe2d11837bb34d" + +UPSTREAM_CHECK_COMMITS = "1" + +SRC_URI = "git://gn.googlesource.com/gn;protocol=https;branch=main" +SRCREV = "4ce861fc06ec87ff74eb6a17ebbd55e4755ebdeb" +PV = "0+git" + +B = "${WORKDIR}/build" + +# Map from our _OS strings to the GN's platform values. +def gn_platform(variable, d): + os = d.getVar(variable) + if "linux" in os: + return "linux" + elif "mingw" in os: + return "mingw" + else: + return os + +do_configure[cleandirs] += "${B}" +do_configure() { + python3 ${S}/build/gen.py \ + --platform=${@gn_platform("TARGET_OS", d)} \ + --out-path=${B} \ + --no-static-libstdc++ \ + --no-strip +} + +do_compile() { + ninja -C ${B} --verbose +} + +do_install() { + install -d ${D}${bindir} + install ${B}/gn ${D}${bindir} +} + +BBCLASSEXTEND = "native" + +COMPATIBLE_HOST = "^(?!riscv32).*" +CFLAGS += "-Wno-error=maybe-uninitialized"
gn is a commonly used build tool to generate ninja files, used in a lot of recipes e.g. chromium, qtwebengine, perfetto, hafnium etc. these recipes come from different layers e.g. meta-qt6/meta-arm/meta-oe since not all layers depend on meta-oe ( meta-arm does not ), its not a possible option. Given the usecases, putting it in core will benefit the ecosystem and reduce some duplication. This recipe is taken from meta-arm Signed-off-by: Khem Raj <raj.khem@gmail.com> --- meta/conf/distro/include/maintainers.inc | 1 + meta/recipes-devtools/gn/gn_git.bb | 46 ++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 meta/recipes-devtools/gn/gn_git.bb