* [Buildroot] [PATCH] package/librtlsdr: fix version fetching when code is extracted from tarball
@ 2020-08-11 21:36 Thomas Petazzoni
2020-08-11 21:54 ` Yann E. MORIN
0 siblings, 1 reply; 2+ messages in thread
From: Thomas Petazzoni @ 2020-08-11 21:36 UTC (permalink / raw)
To: buildroot
librtlsdr currently fails to build on the autobuilders, as it fails
for out of tree builds. Indeed, there is some CMake logic in librtlsdr
that determines the version using Git. This works fine when librtlsdr
is fetched from Git of course. But in the context of Buildroot,
librtlsdr is extracted from a tarball.
For an in-tree build, the "git describe" invocation goes all the way
up to the Buildroot .git/ metadata, and uses that as the librtlsdr
version (it's of course wrong, but the build works). In an out-of-tree
build, there is no parent directory with .git/ metadata, so Git fails,
the VERSION variable is empty and later CMake aborts the build because
of that.
We fix that by adjusting the version retrieving logic to only use Git
if a .git/ metadata folder is found at the root of the librtlsdr
source tree. The patch has been submitted upstream.
Fixes:
http://autobuild.buildroot.net/results/ea52be1da8ed03272db06679d5a0a441ffe6ea0c/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
...rsion.cmake-don-t-use-Git-version-if.patch | 47 +++++++++++++++++++
1 file changed, 47 insertions(+)
create mode 100644 package/librtlsdr/0002-cmake-Modules-Version.cmake-don-t-use-Git-version-if.patch
diff --git a/package/librtlsdr/0002-cmake-Modules-Version.cmake-don-t-use-Git-version-if.patch b/package/librtlsdr/0002-cmake-Modules-Version.cmake-don-t-use-Git-version-if.patch
new file mode 100644
index 0000000000..9c808edd41
--- /dev/null
+++ b/package/librtlsdr/0002-cmake-Modules-Version.cmake-don-t-use-Git-version-if.patch
@@ -0,0 +1,47 @@
+From feb5d9c6b7bcec788f9b01781c205e31fff260e7 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+Date: Tue, 11 Aug 2020 23:07:08 +0200
+Subject: [PATCH] cmake/Modules/Version.cmake: don't use Git version if not in
+ a Git repo
+
+If the librtlsdr code comes from a tarball, it doesn't have any .git/
+metadata, and therefore even if Git (as a tool) is found, the logic in
+cmake/Modules/Version.cmake fails finding a version through Git:
+
+-- Extracting version information from git describe...
+fatal: Not a git repository (or any of the parent directories): .git
+
+As a consequence, the VERSION variable is empty, which later causes
+cmake to bail out with:
+
+CMake Error at /home/test/autobuild/run/instance-1/output-1/host/share/cmake-3.15/Modules/WriteBasicConfigVersionFile.cmake:43 (message):
+ No VERSION specified for WRITE_BASIC_CONFIG_VERSION_FILE()
+Call Stack (most recent call first):
+ /home/test/autobuild/run/instance-1/output-1/host/share/cmake-3.15/Modules/CMakePackageConfigHelpers.cmake:225 (write_basic_config_version_file)
+ CMakeLists.txt:173 (write_basic_package_version_file)
+
+To avoid this, we only use Git to determine the version if the cmake
+project top-level source directory has a .git/ folder.
+
+Upstream: https://github.com/librtlsdr/librtlsdr/pull/75
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+---
+ cmake/Modules/Version.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/Modules/Version.cmake b/cmake/Modules/Version.cmake
+index 2d4e76d..6f67fa4 100644
+--- a/cmake/Modules/Version.cmake
++++ b/cmake/Modules/Version.cmake
+@@ -32,7 +32,7 @@ set(PATCH_VERSION ${VERSION_INFO_PATCH_VERSION})
+ ########################################################################
+ find_package(Git QUIET)
+
+-if(GIT_FOUND)
++if(GIT_FOUND AND EXISTS ${CMAKE_SOURCE_DIR}/.git)
+ message(STATUS "Extracting version information from git describe...")
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} describe --always --abbrev=4 --long
+--
+2.26.2
+
--
2.26.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [Buildroot] [PATCH] package/librtlsdr: fix version fetching when code is extracted from tarball
2020-08-11 21:36 [Buildroot] [PATCH] package/librtlsdr: fix version fetching when code is extracted from tarball Thomas Petazzoni
@ 2020-08-11 21:54 ` Yann E. MORIN
0 siblings, 0 replies; 2+ messages in thread
From: Yann E. MORIN @ 2020-08-11 21:54 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2020-08-11 23:36 +0200, Thomas Petazzoni spake thusly:
> librtlsdr currently fails to build on the autobuilders, as it fails
> for out of tree builds. Indeed, there is some CMake logic in librtlsdr
> that determines the version using Git. This works fine when librtlsdr
> is fetched from Git of course. But in the context of Buildroot,
> librtlsdr is extracted from a tarball.
>
> For an in-tree build, the "git describe" invocation goes all the way
> up to the Buildroot .git/ metadata, and uses that as the librtlsdr
> version (it's of course wrong, but the build works). In an out-of-tree
> build, there is no parent directory with .git/ metadata, so Git fails,
> the VERSION variable is empty and later CMake aborts the build because
> of that.
>
> We fix that by adjusting the version retrieving logic to only use Git
> if a .git/ metadata folder is found at the root of the librtlsdr
> source tree. The patch has been submitted upstream.
>
> Fixes:
>
> http://autobuild.buildroot.net/results/ea52be1da8ed03272db06679d5a0a441ffe6ea0c/
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Applied to master, thanks.
Also applied, the patch that adds Gwenhael as developper to librtlsdr.
Regards,
Yann E. MORIN.
> ---
> ...rsion.cmake-don-t-use-Git-version-if.patch | 47 +++++++++++++++++++
> 1 file changed, 47 insertions(+)
> create mode 100644 package/librtlsdr/0002-cmake-Modules-Version.cmake-don-t-use-Git-version-if.patch
>
> diff --git a/package/librtlsdr/0002-cmake-Modules-Version.cmake-don-t-use-Git-version-if.patch b/package/librtlsdr/0002-cmake-Modules-Version.cmake-don-t-use-Git-version-if.patch
> new file mode 100644
> index 0000000000..9c808edd41
> --- /dev/null
> +++ b/package/librtlsdr/0002-cmake-Modules-Version.cmake-don-t-use-Git-version-if.patch
> @@ -0,0 +1,47 @@
> +From feb5d9c6b7bcec788f9b01781c205e31fff260e7 Mon Sep 17 00:00:00 2001
> +From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> +Date: Tue, 11 Aug 2020 23:07:08 +0200
> +Subject: [PATCH] cmake/Modules/Version.cmake: don't use Git version if not in
> + a Git repo
> +
> +If the librtlsdr code comes from a tarball, it doesn't have any .git/
> +metadata, and therefore even if Git (as a tool) is found, the logic in
> +cmake/Modules/Version.cmake fails finding a version through Git:
> +
> +-- Extracting version information from git describe...
> +fatal: Not a git repository (or any of the parent directories): .git
> +
> +As a consequence, the VERSION variable is empty, which later causes
> +cmake to bail out with:
> +
> +CMake Error at /home/test/autobuild/run/instance-1/output-1/host/share/cmake-3.15/Modules/WriteBasicConfigVersionFile.cmake:43 (message):
> + No VERSION specified for WRITE_BASIC_CONFIG_VERSION_FILE()
> +Call Stack (most recent call first):
> + /home/test/autobuild/run/instance-1/output-1/host/share/cmake-3.15/Modules/CMakePackageConfigHelpers.cmake:225 (write_basic_config_version_file)
> + CMakeLists.txt:173 (write_basic_package_version_file)
> +
> +To avoid this, we only use Git to determine the version if the cmake
> +project top-level source directory has a .git/ folder.
> +
> +Upstream: https://github.com/librtlsdr/librtlsdr/pull/75
> +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> +---
> + cmake/Modules/Version.cmake | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/cmake/Modules/Version.cmake b/cmake/Modules/Version.cmake
> +index 2d4e76d..6f67fa4 100644
> +--- a/cmake/Modules/Version.cmake
> ++++ b/cmake/Modules/Version.cmake
> +@@ -32,7 +32,7 @@ set(PATCH_VERSION ${VERSION_INFO_PATCH_VERSION})
> + ########################################################################
> + find_package(Git QUIET)
> +
> +-if(GIT_FOUND)
> ++if(GIT_FOUND AND EXISTS ${CMAKE_SOURCE_DIR}/.git)
> + message(STATUS "Extracting version information from git describe...")
> + execute_process(
> + COMMAND ${GIT_EXECUTABLE} describe --always --abbrev=4 --long
> +--
> +2.26.2
> +
> --
> 2.26.2
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-08-11 21:54 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-08-11 21:36 [Buildroot] [PATCH] package/librtlsdr: fix version fetching when code is extracted from tarball Thomas Petazzoni
2020-08-11 21:54 ` Yann E. MORIN
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox