From: Sergey Kaplun via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: Sergey Bronnikov <sergeyb@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH luajit] cmake: fix build for Alpine Date: Fri, 13 Dec 2024 17:45:52 +0300 [thread overview] Message-ID: <Z1xIoN0NAZOBSSiV@root> (raw) In-Reply-To: <b6d6b026-d887-44ac-bb87-3b6d0245f03a@tarantool.org> Hi, Sergey! Thanks for your comments! Fixed them and force-pushed the branch. On 13.12.24, Sergey Bronnikov wrote: > Hello again, Sergey, > > thanks for the patch! > > LGTM with minor comments, see below > > On 13.12.2024 15:59, Sergey Kaplun wrote: > > Since Alpine uses musl [1] as its C standard library, the build for it > s/musl/Musl/ > > failed after the commit af0f59da76292f30ff75be1ab01458d47b226995 ("test: > > fix LuaJIT-tests for old libc version"), since `GetLibCVersion()` raises > > an error. This patch adds the check of the ID in the /etc/os-release [2] > > of the Linux distribution and avoids setting the GLibC version if the Replaced typo: s/GLibC/glibc/. > > distro is "alpine". > > > > [1]:https://wiki.alpinelinux.org/wiki/Musl > > [2]:https://www.linux.org/docs/man5/os-release.html > > There is also a documentation about os-release on Freedesktop [1]. > > I would add this link as well. Feel free to ignore. Added, thanks! > > > [1]: https://www.freedesktop.org/software/systemd/man/latest/os-release.html The new commit message is the following: | cmake: fix build for Alpine | | Since Alpine uses musl [1] as its C standard library, the build for it | failed after the commit af0f59da76292f30ff75be1ab01458d47b226995 ("test: | fix LuaJIT-tests for old libc version"), since `GetLibCVersion()` raises | an error. This patch adds the check of the ID in the | </etc/os-release> [2][3] of the Linux distribution and avoids setting | the glibc version if the distro is "alpine". | | [1]: https://wiki.alpinelinux.org/wiki/Musl | [2]: https://www.linux.org/docs/man5/os-release.html | [3]: https://www.freedesktop.org/software/systemd/man/latest/os-release.html > > > --- > > > > Branch:https://github.com/tarantool/luajit/tree/skaplun/gh-noticket-fix-alpine-build > > PR for tests on master:https://github.com/tarantool/tarantool/pull/10824 > > Side note: build locally in Docker for test for Alpine. > > <snipped> > > +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") > > + GetLinuxDistro(LINUX_DISTRO) > > + # Alpine uses musl instead of GLibC. > > s/musl/Musl/ I've used as a reference (don't be confused by the links themselfs) [1][2], looks like it should be "musl", after all. [1]: https://wiki.alpinelinux.org/wiki/Musl [2]: https://en.wikipedia.org/wiki/Musl > > s/GLibC/glibc/ or s/GLibC/GNU C Library/, see [2]. Replaced with glibc. =================================================================== diff --git a/test/LuaJIT-tests/CMakeLists.txt b/test/LuaJIT-tests/CMakeLists.txt index adc630f0..c1dbde35 100644 --- a/test/LuaJIT-tests/CMakeLists.txt +++ b/test/LuaJIT-tests/CMakeLists.txt @@ -64,7 +64,7 @@ endif() if(CMAKE_SYSTEM_NAME STREQUAL "Linux") GetLinuxDistro(LINUX_DISTRO) - # Alpine uses musl instead of GLibC. + # Alpine uses musl instead of glibc. if(NOT LINUX_DISTRO MATCHES "alpine") GetLibCVersion(LIBC_VERSION) # XXX: <tonumber_scan.lua> uses `strtod()`, old versions of =================================================================== > > [2]: https://www.gnu.org/software/libc/ > > > + if(NOT LINUX_DISTRO MATCHES "alpine") > > + GetLibCVersion(LIBC_VERSION) > > + # XXX: <tonumber_scan.lua> uses `strtod()`, old versions of > > + # which have the bug [1] for "0x1p-2075" parsing. Add the skip > > + # check for it. > > + # [1]:https://sourceware.org/bugzilla/show_bug.cgi?id=16151 > > + list(APPEND LUAJIT_TEST_TAGS_EXTRA +libc=${LIBC_VERSION}) > > + endif() > > endif() > > > > if(LUAJIT_ENABLE_TABLE_BUMP) > > diff --git a/test/cmake/GetLinuxDistro.cmake b/test/cmake/GetLinuxDistro.cmake > > new file mode 100644 > > index 00000000..027368be > > --- /dev/null > > +++ b/test/cmake/GetLinuxDistro.cmake > > @@ -0,0 +1,18 @@ > > +# Determine the Linux distro id and return it in the `output` > > +# variable. Seehttps://www.linux.org/docs/man5/os-release.html > > +# for details. > > +macro(GetLinuxDistro output) > > + if(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux") > > + message(FATAL_ERROR "GetLinuxDistro macro must be used only on Linux") > > + endif() > > + file(READ /etc/os-release OS_RELEASE) > > Fallback to /usr/lib/os-release as suggested in doc: > > > Applications should check for the former, and exclusively use its > data if it exists, and only fall back to /usr/lib/os-release if it is > missing. Added the fallback: =================================================================== diff --git a/test/cmake/GetLinuxDistro.cmake b/test/cmake/GetLinuxDistro.cmake index 027368be..2636019c 100644 --- a/test/cmake/GetLinuxDistro.cmake +++ b/test/cmake/GetLinuxDistro.cmake @@ -5,13 +5,18 @@ macro(GetLinuxDistro output) if(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux") message(FATAL_ERROR "GetLinuxDistro macro must be used only on Linux") endif() - file(READ /etc/os-release OS_RELEASE) + set(OS_RELEASE_FILE /etc/os-release) + if(NOT EXISTS ${OS_RELEASE_FILE}) + set(OS_RELEASE_FILE /usr/lib/os-release) + endif() + file(READ ${OS_RELEASE_FILE} OS_RELEASE) string(REGEX MATCH "ID=([0-9a-z._-]+)" MATCH ${OS_RELEASE}) if(MATCH) set(${output} ${CMAKE_MATCH_1}) else() set(${output} linux) endif() + unset(OS_RELEASE_FILE) unset(OS_RELEASE) unset(MATCH) unset(CMAKE_MATCH_1) =================================================================== > > > + string(REGEX MATCH "ID=([0-9a-z._-]+)" MATCH ${OS_RELEASE}) > > + if(MATCH) > > + set(${output} ${CMAKE_MATCH_1}) > > + else() > > + set(${output} linux) > > + endif() > > + unset(OS_RELEASE) > > + unset(MATCH) > > + unset(CMAKE_MATCH_1) > > +endmacro() -- Best regards, Sergey Kaplun
next prev parent reply other threads:[~2024-12-13 14:46 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-12-13 12:59 Sergey Kaplun via Tarantool-patches 2024-12-13 13:47 ` Sergey Bronnikov via Tarantool-patches 2024-12-13 14:45 ` Sergey Kaplun via Tarantool-patches [this message] 2024-12-13 15:19 ` Sergey Bronnikov via Tarantool-patches 2024-12-15 8:53 ` Maxim Kokryashkin via Tarantool-patches 2024-12-17 12:33 ` Sergey Kaplun via Tarantool-patches
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=Z1xIoN0NAZOBSSiV@root \ --to=tarantool-patches@dev.tarantool.org \ --cc=sergeyb@tarantool.org \ --cc=skaplun@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH luajit] cmake: fix build for Alpine' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox