diff mbox series

[v2,1/1] package/zziplib: create symlinks only if target is missing

Message ID 20220729163718.58963-1-br015@umbiko.net
State Accepted
Headers show
Series [v2,1/1] package/zziplib: create symlinks only if target is missing | expand

Commit Message

Andreas Ziegler July 29, 2022, 4:37 p.m. UTC
Symlink creation to base file names is only needed for versioned libraries. 
Modify CMake rules to prevent overwriting existing libraties with recursive
links.

Fixes the following autobuild failures:
http://autobuild.buildroot.net/results/dd1/dd1974dbc1a22a96a3cedb117417e66119821514/
http://autobuild.buildroot.net/results/df8/df8406402ccff7cec34ae5858b8da57d1a4ae9c1/
http://autobuild.buildroot.net/results/743/7433a2ad111e2f014c81f196d3d1e2f63dffa858/
http://autobuild.buildroot.net/results/79f/79f88e9ec14cda7d07cf689eee864791ba949892/
...
http://autobuild.buildroot.net/results/892/8922efbbbfe79e8286a411acce4086b5c77c57c0/
http://autobuild.buildroot.net/results/dfa/dfa8ade3a4c1750e6dd58e652f60af2a44f80dd8/
http://autobuild.buildroot.net/results/9cd/9cd4147486f32d642513ba14efca3a02d5745ab9/

Regression test cases:
http://autobuild.buildroot.net/results/ba7/ba711034c0abe980f677e26de41739223e2f66e9/
http://autobuild.buildroot.net/results/032/032aaff121fb114f388c67dbca3ad2b02f670e38/
http://autobuild.buildroot.net/results/6c5/6c56b645a2b723920f07b98474452824fba5e2c1/

Signed-off-by: Andreas Ziegler <br015@umbiko.net>
---
Changes v1 -> v2:
 - correct file name in generator expressions

 ...reate-symlinks-only-if-target-is-mis.patch | 59 +++++++++++++++++++
 1 file changed, 59 insertions(+)
 create mode 100644 package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch

Comments

Arnout Vandecappelle July 29, 2022, 8:15 p.m. UTC | #1
On 29/07/2022 18:37, Andreas Ziegler wrote:
> Symlink creation to base file names is only needed for versioned libraries.
> Modify CMake rules to prevent overwriting existing libraties with recursive
> links.
> 
> Fixes the following autobuild failures:
> http://autobuild.buildroot.net/results/dd1/dd1974dbc1a22a96a3cedb117417e66119821514/
> http://autobuild.buildroot.net/results/df8/df8406402ccff7cec34ae5858b8da57d1a4ae9c1/
> http://autobuild.buildroot.net/results/743/7433a2ad111e2f014c81f196d3d1e2f63dffa858/
> http://autobuild.buildroot.net/results/79f/79f88e9ec14cda7d07cf689eee864791ba949892/
> ...
> http://autobuild.buildroot.net/results/892/8922efbbbfe79e8286a411acce4086b5c77c57c0/
> http://autobuild.buildroot.net/results/dfa/dfa8ade3a4c1750e6dd58e652f60af2a44f80dd8/
> http://autobuild.buildroot.net/results/9cd/9cd4147486f32d642513ba14efca3a02d5745ab9/
> 
> Regression test cases:
> http://autobuild.buildroot.net/results/ba7/ba711034c0abe980f677e26de41739223e2f66e9/
> http://autobuild.buildroot.net/results/032/032aaff121fb114f388c67dbca3ad2b02f670e38/
> http://autobuild.buildroot.net/results/6c5/6c56b645a2b723920f07b98474452824fba5e2c1/
> 
> Signed-off-by: Andreas Ziegler <br015@umbiko.net>

  Applied to master, thanks.

> ---
> Changes v1 -> v2:
>   - correct file name in generator expressions
> 
>   ...reate-symlinks-only-if-target-is-mis.patch | 59 +++++++++++++++++++
>   1 file changed, 59 insertions(+)
>   create mode 100644 package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch
> 
> diff --git a/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch b/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch
> new file mode 100644
> index 0000000000..1fe4824a83
> --- /dev/null
> +++ b/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch
> @@ -0,0 +1,59 @@
> +From 5977725ecea038f32a86938703ca1ed2b080b31c Mon Sep 17 00:00:00 2001
> +From: Andreas Ziegler <br015@umbiko.net>
> +Date: Fri, 29 Jul 2022 12:32:27 +0200
> +Subject: [PATCH] ZZIP_LIBLATEST: create symlinks only if target is missing
> +
> +Signed-off-by: Andreas Ziegler <br015@umbiko.net>

  This was missing some detail about exactly what is going on, so I just copied 
the text from your upstream PR and added that here.

  It was also missing the upstream URL.

> +---
> + zzip/CMakeLists.txt | 18 +++++++++++++++---
> + 1 file changed, 15 insertions(+), 3 deletions(-)
> +
> +diff --git a/zzip/CMakeLists.txt b/zzip/CMakeLists.txt
> +index 4fa6b9c..dd1e56a 100644
> +--- a/zzip/CMakeLists.txt
> ++++ b/zzip/CMakeLists.txt
> +@@ -350,8 +350,12 @@ if(ZZIP_LIBLATEST)
> +   endif()
> +     get_target_property(libname libzzip OUTPUT_NAME)
> +     get_target_property(librelease libzzip RELEASE_POSTFIX)
> ++    set(libzzip_target "${lib}${libname}${dll}")
> ++    add_custom_command(OUTPUT ${libzzip_target}
> ++        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzip> ${libzzip_target}
> ++        )
> +     add_custom_target(libzzip_latest ALL
> +-        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzip> ${lib}${libname}${dll}
> ++        DEPENDS ${libzzip_target}

  This is actually not really great - it will not create the symlink if the 
unversioned file exists already, but that may in fact be a leftover from a 
previous build. The correct way to do it would be to add a condition that it's 
only done if target_file_name != liblibname.dll

  But for buildroot it's good enough (since the version will always be the same 
anyway when you do a rebuild), so applied to master as is.

  Regards,
  Arnout

> +         )
> +     install(FILES
> +         ${outdir}/${lib}${libname}${dll}
> +@@ -359,8 +363,12 @@ if(ZZIP_LIBLATEST)
> +     if(ZZIPFSEEKO)
> +     get_target_property(libname libzzipfseeko OUTPUT_NAME)
> +     get_target_property(librelease libzzipfseeko RELEASE_POSTFIX)
> ++    set(libzzipfseeko_target "${lib}${libname}${dll}")
> ++    add_custom_command(OUTPUT ${libzzipfseeko_target}
> ++        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzipfseeko> ${libzzipfseeko_target}
> ++        )
> +     add_custom_target(libzzipfseeko_latest ALL
> +-        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzipfseeko> ${lib}${libname}${dll}
> ++        DEPENDS ${libzzipfseeko_target}
> +         )
> +     install(FILES
> +         ${outdir}/${lib}${libname}${dll}
> +@@ -369,8 +377,12 @@ if(ZZIP_LIBLATEST)
> +     if(ZZIPMMAPPED)
> +     get_target_property(libname libzzipmmapped OUTPUT_NAME)
> +     get_target_property(librelease libzzipmmapped RELEASE_POSTFIX)
> ++    set(libzzipmmapped_target "${lib}${libname}${dll}")
> ++    add_custom_command(OUTPUT ${libzzipmmapped_target}
> ++        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzipmmapped> ${libzzipmmapped_target}
> ++        )
> +     add_custom_target(libzzipmmaped_latest ALL
> +-        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzipmmapped> ${lib}${libname}${dll}
> ++        DEPENDS ${libzzipmmapped_target}
> +         )
> +     install(FILES
> +         ${outdir}/${lib}${libname}${dll}
> +--
> +2.34.1
> +
Peter Korsgaard Sept. 13, 2022, 2:18 p.m. UTC | #2
>>>>> "Andreas" == Andreas Ziegler <br015@umbiko.net> writes:

 > Symlink creation to base file names is only needed for versioned libraries. 
 > Modify CMake rules to prevent overwriting existing libraties with recursive
 > links.

 > Fixes the following autobuild failures:
 > http://autobuild.buildroot.net/results/dd1/dd1974dbc1a22a96a3cedb117417e66119821514/
 > http://autobuild.buildroot.net/results/df8/df8406402ccff7cec34ae5858b8da57d1a4ae9c1/
 > http://autobuild.buildroot.net/results/743/7433a2ad111e2f014c81f196d3d1e2f63dffa858/
 > http://autobuild.buildroot.net/results/79f/79f88e9ec14cda7d07cf689eee864791ba949892/
 > ...
 > http://autobuild.buildroot.net/results/892/8922efbbbfe79e8286a411acce4086b5c77c57c0/
 > http://autobuild.buildroot.net/results/dfa/dfa8ade3a4c1750e6dd58e652f60af2a44f80dd8/
 > http://autobuild.buildroot.net/results/9cd/9cd4147486f32d642513ba14efca3a02d5745ab9/

 > Regression test cases:
 > http://autobuild.buildroot.net/results/ba7/ba711034c0abe980f677e26de41739223e2f66e9/
 > http://autobuild.buildroot.net/results/032/032aaff121fb114f388c67dbca3ad2b02f670e38/
 > http://autobuild.buildroot.net/results/6c5/6c56b645a2b723920f07b98474452824fba5e2c1/

 > Signed-off-by: Andreas Ziegler <br015@umbiko.net>
 > ---
 > Changes v1 -> v2:
 >  - correct file name in generator expressions

Committed to 2022.05.x and 2022.02.x, thanks.
diff mbox series

Patch

diff --git a/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch b/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch
new file mode 100644
index 0000000000..1fe4824a83
--- /dev/null
+++ b/package/zziplib/0002-ZZIP_LIBLATEST-create-symlinks-only-if-target-is-mis.patch
@@ -0,0 +1,59 @@ 
+From 5977725ecea038f32a86938703ca1ed2b080b31c Mon Sep 17 00:00:00 2001
+From: Andreas Ziegler <br015@umbiko.net>
+Date: Fri, 29 Jul 2022 12:32:27 +0200
+Subject: [PATCH] ZZIP_LIBLATEST: create symlinks only if target is missing
+
+Signed-off-by: Andreas Ziegler <br015@umbiko.net>
+---
+ zzip/CMakeLists.txt | 18 +++++++++++++++---
+ 1 file changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/zzip/CMakeLists.txt b/zzip/CMakeLists.txt
+index 4fa6b9c..dd1e56a 100644
+--- a/zzip/CMakeLists.txt
++++ b/zzip/CMakeLists.txt
+@@ -350,8 +350,12 @@ if(ZZIP_LIBLATEST)
+   endif()
+     get_target_property(libname libzzip OUTPUT_NAME)
+     get_target_property(librelease libzzip RELEASE_POSTFIX)
++    set(libzzip_target "${lib}${libname}${dll}")
++    add_custom_command(OUTPUT ${libzzip_target} 
++        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzip> ${libzzip_target}
++        )
+     add_custom_target(libzzip_latest ALL
+-        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzip> ${lib}${libname}${dll}
++        DEPENDS ${libzzip_target}
+         )
+     install(FILES
+         ${outdir}/${lib}${libname}${dll}
+@@ -359,8 +363,12 @@ if(ZZIP_LIBLATEST)
+     if(ZZIPFSEEKO)
+     get_target_property(libname libzzipfseeko OUTPUT_NAME)
+     get_target_property(librelease libzzipfseeko RELEASE_POSTFIX)
++    set(libzzipfseeko_target "${lib}${libname}${dll}")
++    add_custom_command(OUTPUT ${libzzipfseeko_target} 
++        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzipfseeko> ${libzzipfseeko_target}
++        )
+     add_custom_target(libzzipfseeko_latest ALL
+-        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzipfseeko> ${lib}${libname}${dll}
++        DEPENDS ${libzzipfseeko_target}
+         )
+     install(FILES
+         ${outdir}/${lib}${libname}${dll}
+@@ -369,8 +377,12 @@ if(ZZIP_LIBLATEST)
+     if(ZZIPMMAPPED)
+     get_target_property(libname libzzipmmapped OUTPUT_NAME)
+     get_target_property(librelease libzzipmmapped RELEASE_POSTFIX)
++    set(libzzipmmapped_target "${lib}${libname}${dll}")
++    add_custom_command(OUTPUT ${libzzipmmapped_target} 
++        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzipmmapped> ${libzzipmmapped_target}
++        )
+     add_custom_target(libzzipmmaped_latest ALL
+-        COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:libzzipmmapped> ${lib}${libname}${dll}
++        DEPENDS ${libzzipmmapped_target}
+         )
+     install(FILES
+         ${outdir}/${lib}${libname}${dll}
+-- 
+2.34.1
+