15f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#!/bin/bash 25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer# 35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer# install.sh [--uninstall] sourcefile targetfile [install options] 45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer# 50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner 60bc735ffcfb223c0186419547abaa5c84482663eChris Lattner 75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer# Check for uninstall option 85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerif test "x$1" == "x--uninstall" ; then 95f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer UNINSTALL=true 105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer SOURCE=$2 115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer TARGET=$3 125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer shift 3 135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerelse 145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer UNINSTALL=false 15bdc601b196c48d4cd56a5ceb45d41ae4e87371abKen Dyck SOURCE=$1 1649aa7ff1245abd03e6e998e01302df31e4c6f8f6Argyrios Kyrtzidis TARGET=$2 17980e508ca70d6de75d2abfd96b4681fc98bb2698Steve Naroff shift 2 18aaba5e346dffdbad5d1c42765a89e4a7afb0da67Douglas Gregorfi 19b17166c8077cd900cca83a895c43b30ea6660598Argyrios Kyrtzidis 20e91593ef084479340582b2ba177b44be50a717b7Daniel Dunbar# Check usage 21ea1471e0e967548c596a71469702f8846dbaf3c0John McCallif test -z "$SOURCE" || test -z "$TARGET" ; then 222cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor echo Usage: install.sh [--uninstall] source target [install options] >&2 2319cc4abea06a9b49e0e16a50d335c064cd723572Anders Carlsson exit 1 241b63e4f732dbc73d90abf886b4d21f8e3a165f6dChris Lattnerfi 25a9376d470ccb0eac74fe09a6b2a18a890f1d17c4Chris Lattner 265f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 27f5942a44880be26878592eb052b737579349411eBenjamin Kramer# 2885f9bceab1542aafff012d4d28e998f4ba16e362Anders Carlsson# do_install(SOURCE_FILE, TARGET_FILE) 296fe7c8aa8c7546743ecd0ac0138c2cf5d8155386Nate Begeman# 30f5942a44880be26878592eb052b737579349411eBenjamin Kramer 31071cc7deffad608165b1ddd5263e8bf181861520Charles Davisdo_install() 3229445a0542d128cd7ee587ee52229670b9b54a12Anders Carlsson{ 335f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer local SOURCE=$1 345f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer local TARGET=$2 351827403a7138946305c0058f262e02b595cf882fDouglas Gregor local PARAMS=$3 361827403a7138946305c0058f262e02b595cf882fDouglas Gregor 37225843186e3972ce798d3de00f86da9008b15a0eDouglas Gregor install -p -D $PARAMS $SOURCE $TARGET 38225843186e3972ce798d3de00f86da9008b15a0eDouglas Gregor} 39a376d10acfacf19d6dfa41069f7929739a18dd7aDouglas Gregor 40a376d10acfacf19d6dfa41069f7929739a18dd7aDouglas Gregor 414923aa25eb39d64106a5817c02d560a3aecf8b2cDouglas Gregor# 424923aa25eb39d64106a5817c02d560a3aecf8b2cDouglas Gregor# do_uninstall(SOURCE_FILE, TARGET_FILE) 434923aa25eb39d64106a5817c02d560a3aecf8b2cDouglas Gregor# 445f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 455f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerdo_uninstall() 465f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer{ 475f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer local SOURCE=$1 483e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor local TARGET=$2 493e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor 503e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor # Does target exist? 513e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor if test -r $TARGET ; then 523e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor # Is target of the same version as this package? 533e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor if diff $SOURCE $TARGET >/dev/null; then 543e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor rm -f $TARGET 553e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor else 563e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor echo WARNING: Skipping uninstall for $TARGET - versions differ! >&2 573e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor fi 583e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor else 593e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor echo WARNING: Skipping uninstall for $TARGET - not installed! >&2 603e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor fi 613e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor} 623e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor 633e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor 643e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor# Call sub routine 653e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregorif $UNINSTALL ; then 663e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor do_uninstall $SOURCE $TARGET 673e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregorelse 683e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor do_install $SOURCE $TARGET "$*" 693e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregorfi 703e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor 713e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregorexit 0 723e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor