Low commit activity in last 3 years
No release in over a year
The wrapper source originated from the 0.1.1 Ruby libarchive wrapper. This package just static-links it with its libarchive and zlib dependencies, for the cross-platform convenience of 'gem install fig'.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

A libarchive Ruby wrapper (derived by unpacking libarchive-0.1.1.gem) that has its libarchive and zlib dependencies statically linked with it.

At my company, we use libarchive as a pre-requisite for a dependency manager named Fig on various platforms--Linux RedHat and Ubuntu, Windows--and Ruby 1.8.6 and 1.9.2. On Windows, we see mswin32 and mingw32 flavors of Ruby (especially with 1.8.6).

Anyway, a "gem install fig" would often fail due to missing dependencies. For instance, Ubuntu doesn't come with zlib, and Windows usually isn't set up to build anything at all. If the platform flavor didn't match up with the "mswin32" version of prebuilt libarchive-0.1.1 that's available...FAIL. AND, if that was all correct, but the gem install was done with Ruby 1.9.2...FAIL (libarchive-0.1.1-mswin32.gem only works with Ruby 1.8.6, and as of October 2011--as far as I know, a gem's Ruby version dependency cannot be cleanly specified. One is forced to pick a default version and append a Ruby version to the name, e.g., fig18, libarchive-static-ruby186).

How to package prebuilt libarchive-static gems for Windows:

Most target Windows machines do not have an environment suitable for building. Therefore, the binary is prebuilt and packaged into the gem so that a compile/link is not necessary.

Windows Build Environment Prerequisites

  • C:\Ruby192
  • C:\rubydev

To install the Windows pre-requisites...

Run the Ruby 1.9.2 MingW installer: http://files.rubyforge.vm.bytemark.co.uk/rubyinstaller/rubyinstaller-1.9.2-p290.exe (Install in C:\ruby192)

Download and run http://github.com/downloads/oneclick/rubyinstaller/DevKit-tdm-32-4.5.2-20110712-1620-sfx.exe (Install in C:\rubydev)

Run the Ruby 1.8.6 MingW installer: http://rubyforge.org/frs/download.php/71066/rubyinstaller-1.8.6-p398.exe (Install in C:\ruby186)

Follow these instructions to set up your dev env: https://github.com/oneclick/rubyinstaller/wiki/Development-Kit

This gem supports a "gem install fig" (as of a fig version soon after 0.1.37) that should work on any Linux or Mac system, and on Windows systems running ruby-1.9.2 mingw32 and mswin32 platforms. A "gem install fig18" will work for Windows systems running Ruby 1.8.6.

Building the 1.9.2 Windows gems

When the pre-reqs are in place, run ruby winbuild.rb. This unpacks all the sources, builds zlib, builds libarchive, and builds the Ruby wrapper around them all, producing a libarchive_ruby.so. This libarchive_ruby.so is then packaged into two gems via a 'gem build' command: one for mingw32, and one for mswin32.

Building the 1.8.6 Windows gems

Set your path to 1.8.6--c:\libarchive-ruby-static>set PATH=C:\ruby186\bin;%PATH%--and run ruby winbuild.rb.

Push the gems to http://rubygems.org

To push the gems, cd to windows-gem-package and run gem push <the-gem> for each gem.

How to package the libarchive-static gem for Linux and Mac:

Unlike Windows, the gem produced for Linux and Mac is not prebuilt; rather, the building is left up to the 'gem install', which assumes a suitable build environment on the target machine.

Run ruby generic-gem-package.rb. The sources are unpacked, as for Windows, but then instead of being built, they are copied into the 'generic-gem-package/ext' directory (or rather, the files essential to building are copied). A single 'gem build' then produces the libarchive-static gem.

Here is what happens when fig is installed on different architectures and rubies:

  1.8.6 1.9.2
redhat, ubuntu, MacOS gem install fig18
fig18-0.1.38-x86_64-linux.gem
\->libarchive-static-1.0.0.gem (compiles native ext)
gem install fig
fig-0.1.38-x86_64-linux.gem
\->libarchive-static-1.0.0.gem (compiles native ext)
mswin32 gem install fig18
fig18-0.1.38.gem
\->libarchive-static-ruby186-1.0.0-i386-mswin32.gem (no compile)
gem install fig
fig-0.1.38.gem
\->libarchive-static-1.0.0-i386-mswin32.gem (no compile)
mingw32 gem install fig18
fig18-0.1.38.gem
\->libarchive-static-ruby186-1.0.0-i386-mingw32.gem (no compile)
gem install fig
fig-0.1.38.gem
\->libarchive-static-1.0.0-i386-mingw32.gem (no compile)

If you want to update the versions of the various sources, here is how to get them:

libarchive-wrapper: gem fetch libarchive --version 0.1.1

libarchive: wget https://github.com/libarchive/libarchive/releases/download/v3.6.2/libarchive-3.6.2.zip

zlib: wget http://zlib.net/zlib1213.zip -O zlib-1.2.13.zip