Permalink
Browse files

Add a small script to easily build binary versions of OPAM

  • Loading branch information...
1 parent d649f81 commit 61dec9bff15e35583a76adb6f5fc9cf51c101eaf @samoht samoht committed Mar 20, 2013
Showing with 81 additions and 0 deletions.
  1. +81 −0 shell/make_opam_binary.sh
View
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+# (c) Copyright Fabrice Le Fessant INRIA/OCamlPro 2013
+# (c) Copyright Thomas Gazagnaire OCamlPro 2013
+
+set -e
+
+usage() {
+cat <<EOF
+
+Usage:
+ ./make_opam_binary VERSION
+
+ Script to create a binary version of opam.
+ VERSION is the version of OPAM you want to build.directory where you want to install OPAM.
+EOF
+ exit 1
+}
+
+#
+# Report an error and exit
+#
+PROGNAME=$0
+error() {
+ echo "`basename $PROGNAME`: $1" >&2
+ exit 1
+}
+
+if [ $# = 0 ]; then
+ echo "OPAM binary builder."
+ usage
+fi
+
+VERSION=$1
+BUILDDIR=tmp-opam-$VERSION
+CURRENTDIR=`pwd`
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+if which wget >/dev/null; then
+ WGETOPTS="--passive-ftp -q -O"
+else
+ WGETOPTS="-OL -o"
+ wget() {
+ shift
+ curl -OL $*
+ }
+fi
+
+# Download the source archive from the web
+download() {
+ url="$1"
+ mkdir -p $BUILDDIR
+ cd $BUILDDIR
+ file=opam-full-$VERSION.tar.gz
+ wget $WGETOPTS $file "$url/$file" ||
+ error "Couldn't download $url/$file"
+}
+
+# Extract the source archive
+extract() {
+ tar xfvz opam-full-$VERSION.tar.gz
+ cd opam-full-$VERSION
+}
+
+# Build the binary
+build() {
+ file="opam-${VERSION}-${UNAME_MACHINE}-${UNAME_SYSTEM}"
+ ./configure
+ pwd
+ make
+ cd $CURRENTDIR
+ ln -sf $BUILDDIR/opam-full-$VERSION/_obuild/opam/opam.asm $file
+}
+
+echo Downloading OPAM...
+download "http://www.ocamlpro.com/pub"
+extract
+build

0 comments on commit 61dec9b

Please sign in to comment.