Bump to lipzip/rel-1-5-1/b95cf3fd (#1721)

Bumps to LibZipSharp/master/4d3e59c8

Main reason is to include fixes for a couple CVEs. Changes:

  * 1.3.0
    * Support bzip2 compressed zip archives
    * Improve file progress callback code
    * Fix `zip_fdopen()`
    * CVE-2017-12858: Fix double `free()`.
    * CVE-2017-14107: Improve EOCD64 parsing.
  * 1.3.1
    * Install `zipconf.h` into `${PREFIX}/include`
    * Add `zip_libzip_version()`
    * Fix AES tests on Linux
  * 1.3.2
    * Fix bug introduced in last: `zip_t` was erroneously freed if
      `zip_close()` failed.
  * 1.4.0
    * Improve build with `cmake`
    * Retire autoconf/automake build system
    * Add `zip_source_buffer_fragment()`.
    * Add support to clone unchanged beginning of archive (instead of
      rewriting it). Supported for buffer sources and on Apple File System.
    * Add support for Microsoft Universal Windows Platform.
  * 1.5.0
    * Use standard cryptographic library instead of custom AES
      implementation. This also simplifies the license.
    * Use clang-format to format the source code.
    * More Windows improvements.
  * 1.5.1
    * Choose format of installed documentation based on available tools.
    * Fix visibility of symbols.
    * Fix zipcmp directory support.
    * Don’t set RPATH on Linux.
    * Use Libs.private for link dependencies in pkg-config file.
    * Fix build with LibreSSL.
    * Various bugfixes.

Additionally:

  * make it possible to build Windows version of libzip on Linux with
    mingw (no mxe required)
  * build on macOS targeting Windows with system/brew cmake
  * Linux "host" builds *must* use the system `cmake`, to prevent it
    from using any MXE-cross-compiled versions.
  * export `MACOSX_DEPLOYMENT_TARGET=10.11` in the top-level Makefile
    to specify the minimum version of macOS we support. Without this
    it is possible that code built on 10.11 with Xcode targeting a
    newer version of the system will not work on macOS older than the
    version targetted by Xcode being used.  For instance, if we build
    on macOS 10.11 with Xcode 8.2 (which targets macOS 10.12) then
    the code which just built on 10.11 may not work on this very
    system - because it may use APIs available only starting from 10.12
This commit is contained in:
Marek Habersack 2018-05-29 14:13:13 +02:00 коммит произвёл Jonathan Pryor
Родитель 462add4c95
Коммит c87c61763f
12 изменённых файлов: 84 добавлений и 14 удалений

2
.gitmodules поставляемый
Просмотреть файл

@ -20,7 +20,7 @@
[submodule "external/libzip"]
path = external/libzip
url = https://github.com/nih-at/libzip.git
branch = master
branch = rel-1-5-1
[submodule "external/LibZipSharp"]
path = external/LibZipSharp
url = https://github.com/grendello/LibZipSharp.git

Просмотреть файл

@ -9,6 +9,10 @@ SOLUTION = Xamarin.Android.sln
TEST_TARGETS = build-tools/scripts/RunTests.targets
API_LEVEL ?=
ifeq ($(OS_NAME),Darwin)
export MACOSX_DEPLOYMENT_TARGET := 10.11
endif
ifneq ($(V),0)
MONO_OPTIONS += --debug
endif

2
external/LibZipSharp поставляемый

@ -1 +1 @@
Subproject commit b7aab1e26aed3e0269a73cc6f8ce973169741f76
Subproject commit 4d3e59c8960562309c817a4c367300e6a20bf9b7

2
external/libzip поставляемый

@ -1 +1 @@
Subproject commit 1d8b1ac4d20b8ef8d3f5d496dabebaa0ff9019ff
Subproject commit b95cf3fdd4c1271f922017f092d02a878873425c

Просмотреть файл

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Content Include="$(XAInstallPrefix)xbuild\Xamarin\Android\libzip.3.0.dylib">
<Content Include="$(XAInstallPrefix)xbuild\Xamarin\Android\libzip.5.0.dylib">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>

Просмотреть файл

@ -16,7 +16,7 @@
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.Common.targets" />
<PropertyGroup>
<BuildDependsOnLocal Condition=" '$(HostOS)' == 'Darwin' ">
<BuildDependsOnLocal Condition=" '$(HostOS)' == 'Darwin' Or '$(HostOS)' == 'Linux' ">
ResolveReferences;
_BuildUnlessCached
</BuildDependsOnLocal>

Просмотреть файл

@ -1,15 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(HostOS)' == 'Linux' ">
<CMakeBinary32>\usr\bin\cmake</CMakeBinary32>
<CMakeBinary64>$(CMakeBinary32)</CMakeBinary64>
<CMakeFlags32>-DCMAKE_TOOLCHAIN_FILE=$(MSBuildThisFileDirectory)\mingw-linux-32.cmake</CMakeFlags32>
<CMakeFlags64>-DCMAKE_TOOLCHAIN_FILE=$(MSBuildThisFileDirectory)\mingw-linux-64.cmake</CMakeFlags64>
</PropertyGroup>
<PropertyGroup Condition=" '$(HostOS)' == 'Darwin' ">
<CMakeBinary64>cmake</CMakeBinary64>
<CMakeBinary32>cmake</CMakeBinary32>
<CMakeCommonFlags>-DCMAKE_SYSTEM_NAME=Windows -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON -DBUILD_SHARED_LIBS=ON</CMakeCommonFlags>
<CMakeFlags32>$(CMakeCommonFlags) -DCMAKE_C_COMPILER=$(AndroidMxeFullPath)\bin\$(MingwCommandPrefix32)-gcc -DCMAKE_CXX_COMPILER=$(AndroidMxeFullPath)\bin\$(MingwCommandPrefix32)-g++ -DCMAKE_RC_COMPILER=$(AndroidMxeFullPath)\bin\$(MingwCommandPrefix32)-windres -DCMAKE_FIND_ROOT_PATH=$(AndroidMxeFullPath)\$(MingwCommandPrefix32)</CMakeFlags32>
<CMakeFlags64>$(CMakeCommonFlags) -DCMAKE_C_COMPILER=$(AndroidMxeFullPath)\bin\$(MingwCommandPrefix64)-gcc -DCMAKE_CXX_COMPILER=$(AndroidMxeFullPath)\bin\$(MingwCommandPrefix64)-g++ -DCMAKE_RC_COMPILER=$(AndroidMxeFullPath)\bin\$(MingwCommandPrefix64)-windres -DCMAKE_FIND_ROOT_PATH=$(AndroidMxeFullPath)\$(MingwCommandPrefix64)</CMakeFlags64>
</PropertyGroup>
<ItemGroup>
<_LibZipTarget Include="host-mxe-Win64" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))">
<CMake>$(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-cmake</CMake>
<CMakeFlags></CMakeFlags>
<CMake>$(CMakeBinary64)</CMake>
<CMakeFlags>$(CMakeFlags64)</CMakeFlags>
<OutputLibrary>x64/libzip.dll</OutputLibrary>
<OutputLibraryPath>lib/libzip.dll</OutputLibraryPath>
</_LibZipTarget>
<_LibZipTarget Include="host-mxe-Win32" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win32:'))">
<CMake>$(AndroidMxeFullPath)\bin\i686-w64-mingw32.static-cmake</CMake>
<CMakeFlags></CMakeFlags>
<CMake>$(CMakeBinary32)</CMake>
<CMakeFlags>$(CMakeFlags32)</CMakeFlags>
<OutputLibrary>libzip.dll</OutputLibrary>
<OutputLibraryPath>lib/libzip.dll</OutputLibraryPath>
</_LibZipTarget>

Просмотреть файл

@ -0,0 +1,20 @@
# the name of the target operating system
SET(CMAKE_SYSTEM_NAME Windows)
# which compilers to use for C and C++
SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
# here is the target environment located
SET(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32)
# adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search
# programs in the host environment
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
set(BUILD_SHARED_LIBS ON)

Просмотреть файл

@ -0,0 +1,20 @@
# the name of the target operating system
SET(CMAKE_SYSTEM_NAME Windows)
# which compilers to use for C and C++
SET(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
SET(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
SET(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
# here is the target environment located
SET(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
# adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search
# programs in the host environment
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
set(BUILD_SHARED_LIBS ON)

Просмотреть файл

@ -0,0 +1,13 @@
# Force minimum macOS version to be 10.11 as this is the oldest version of the OS we support.
# Setting this on command line won't work, for some reason, so we override the value her
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE STRING "Minimum OS X deployment version" FORCE)
# This is necessary when cmake runs on a 10.11 system with Xcode 8.x installed in which case
# the headers (and SDK libraries) target a later version of macOS but the host OS might not
# have some functions found. `clonefile` is one of them - it was added in 10.12. Cmake will
# happily "detect" clonefile even though the *host* OS doesn't have it which results in the
# library being build but failing to load.
#
# Forcing a cache entry here will override the detection result, even though cmake will *still*
# show clonefile as found in the detection output.
set(HAVE_CLONEFILE "" CACHE INTERNAL "Force 10.11 compatibility on XA build bots" FORCE)

Просмотреть файл

@ -3,13 +3,13 @@
<ItemGroup>
<_LibZipTarget Include="host-Darwin" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':Darwin:'))">
<CMake>cmake</CMake>
<CMakeFlags>-DCMAKE_OSX_ARCHITECTURES=&quot;i386;x86_64&quot;</CMakeFlags>
<OutputLibrary>libzip.3.0.dylib</OutputLibrary>
<OutputLibraryPath>lib/libzip.3.0.dylib</OutputLibraryPath>
<CMakeFlags>-C$(MSBuildThisFileDirectory)/CMakeCacheInitialOSX.txt -DCMAKE_OSX_ARCHITECTURES=&quot;i386;x86_64&quot; -DBUILD_SHARED_LIBS=ON</CMakeFlags>
<OutputLibrary>libzip.5.0.dylib</OutputLibrary>
<OutputLibraryPath>lib/libzip.5.0.dylib</OutputLibraryPath>
</_LibZipTarget>
<_LibZipTarget Include="host-Linux" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':Linux:')) AND '$(_LinuxBuildLibZip)' == 'true' ">
<CMake>cmake</CMake>
<CMakeFlags></CMakeFlags>
<CMakeFlags>-DBUILD_SHARED_LIBS=ON</CMakeFlags>
<OutputLibrary>libzip.so</OutputLibrary>
<OutputLibraryPath>lib/libzip.so</OutputLibraryPath>
</_LibZipTarget>

Просмотреть файл

@ -45,7 +45,7 @@
Inputs="@(_LibZipTargetMakefile)"
Outputs="@(Content)">
<Exec
Command="make"
Command="make VERBOSE=1"
WorkingDirectory="$(IntermediateOutputPath)\%(_LibZipTarget.Identity)"
/>
<Copy