Skip to content

Commit

Permalink
Bump to lipzip/rel-1-5-1/b95cf3fdd4c1271f922017f092d02a878873425c (do…
Browse files Browse the repository at this point in the history
…tnet#863)

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 for Windows with system/brew cmake
 * 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
  • Loading branch information
grendello committed May 28, 2018
1 parent d8fdbcf commit e409538
Show file tree
Hide file tree
Showing 12 changed files with 84 additions and 14 deletions.
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion external/LibZipSharp
2 changes: 1 addition & 1 deletion external/libzip
Submodule libzip updated 551 files
Original file line number Diff line number Diff line change
@@ -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>
Expand Down
2 changes: 1 addition & 1 deletion src/libzip-windows/libzip-windows.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
21 changes: 17 additions & 4 deletions src/libzip-windows/libzip-windows.projitems
Original file line number Diff line number Diff line change
@@ -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>
Expand Down
20 changes: 20 additions & 0 deletions src/libzip-windows/mingw-linux-32.cmake
Original file line number Diff line number Diff line change
@@ -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)
20 changes: 20 additions & 0 deletions src/libzip-windows/mingw-linux-64.cmake
Original file line number Diff line number Diff line change
@@ -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)
13 changes: 13 additions & 0 deletions src/libzip/CMakeCacheInitialOSX.txt
Original file line number Diff line number Diff line change
@@ -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)
8 changes: 4 additions & 4 deletions src/libzip/libzip.projitems
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
2 changes: 1 addition & 1 deletion src/libzip/libzip.targets
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
Inputs="@(_LibZipTargetMakefile)"
Outputs="@(Content)">
<Exec
Command="make"
Command="make VERBOSE=1"
WorkingDirectory="$(IntermediateOutputPath)\%(_LibZipTarget.Identity)"
/>
<Copy
Expand Down

0 comments on commit e409538

Please sign in to comment.