1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
#!/bin/bash
#**************************************************************
# mikutter environment builder for developer (debian & ubuntu)
#**************************************************************
RUBY_SERVER='http://ftp.ruby-lang.org/pub/ruby'
INSTALL_DIR='/opt/miku'
SRC_DIR="${INSTALL_DIR}/src"
DEPENDS='gcc make bzip2 wget pkg-config subversion
libgtk2.0-dev libyaml-dev libssl-dev zlib1g-dev'
if [ -e ${INSTALL_DIR} ] && [ -d ${INSTALL_DIR} ]; then
echo "mikutter setup to ${INSTALL_DIR}"
elif [ -e ${INSTALL_DIR} ] && [ ! -d ${INSTALL_DIR} ]; then
echo "${INSTALL_DIR} is not directory."
exit 1
else
mkdir -p ${INSTALL_DIR}
fi
if [ ! -w ${INSTALL_DIR} ]; then
echo "${INSTALL_DIR} is not writable."
exit 1
fi
if [ ! -w ${HOME} ]; then
echo "${HOME} is not writable."
exit 1
fi
mkdir -p ${SRC_DIR}
cd ${INSTALL_DIR}
cat > mikutter-update.sh <<EOF
#!/bin/bash
#- mikutter environment updater -
EOF
#-------------------------------------------------------
# Setup build environment
#-------------------------------------------------------
OLDLANG=${LANG}
LANG=C
LOG=`apt-get -sy install ${DEPENDS}`
LANG=${OLDLANG}
if [ ! `echo ${LOG} | grep "No packages will be" | sed 's/ //g'` ]; then
echo apt-get install ${DEPENDS}
if [ $UID = '0' ]; then
apt-get update
apt-get -y install ${DEPENDS}
else
sudo apt-get update
sudo apt-get -y install ${DEPENDS}
fi
fi
#-------------------------------------------------------
# Expand rubygems
#-------------------------------------------------------
echo 'download rubygems.'
GEMS_PATH=`wget -O- 'http://rubyforge.org/frs/?group_id=126&release_id=45671' | \
egrep -o 'href=".*.tgz"' | head -n 1 | egrep -o '/.*.tgz'`
GEMS_SRC=`echo ${GEMS_PATH} | sed 's/.*\///'`
GEMS_DIR=`echo ${GEMS_SRC} | sed 's/\.tgz//'`
if [ ! -e ${SRC_DIR}/${GEMS_SRC} ]; then
wget -P ${SRC_DIR} http://rubyforge.org${GEMS_PATH}
fi
tar xzf ${SRC_DIR}/${GEMS_SRC} -C ${SRC_DIR}
#-------------------------------------------------------
# Setup ruby environment
#-------------------------------------------------------
wget -O- ${RUBY_SERVER} |
egrep -o '1..?..?-p[0-9]{1,3}' | sort | uniq |
while read RUBY_VERSION; do
S_VERSION=`echo ${RUBY_VERSION} | sed 's/-p.*//' | sed 's/\.//g'`
# ruby 1.8.6 is not supported.
[ ${S_VERSION} = '186' ] && continue
# [ ${S_VERSION} = '191' ] && continue
RUBY_SRC=ruby-${RUBY_VERSION}.tar.bz2
# RUBY_SUFFIX=${S_VERSION}
RUBY_SUFFIX=""
# Download ruby source
if [ ! -e ${SRC_DIR}/${RUBY_SRC} ]; then
echo "download ${RUBY_SRC}"
wget ${RUBY_SERVER}/${RUBY_SRC} -P ${SRC_DIR}
else
echo "${RUBY_SRC} is already exist."
fi
# Build ruby
echo build ${RUBY_VERSION}
cd ${SRC_DIR}
tar xpf ${RUBY_SRC}
cd ruby-${RUBY_VERSION}
./configure --prefix=${INSTALL_DIR}/rb${S_VERSION} \
--program-suffix="${RUBY_SUFFIX}" \
--enable-shared && \
make && make install
# Install rubygems(for 1.8.x)
echo "setup gems."
cd ${INSTALL_DIR}
if [ `echo ${RUBY_VERSION} | grep '1.8.'` ]; then
${INSTALL_DIR}/rb${S_VERSION}/bin/ruby${RUBY_SUFFIX} ${SRC_DIR}/${GEMS_DIR}/setup.rb
fi
# Install require libs
echo 'gem update --system'
${INSTALL_DIR}/rb${S_VERSION}/bin/gem${RUBY_SUFFIX} update --system
echo 'gem install pkg-config'
${INSTALL_DIR}/rb${S_VERSION}/bin/gem${RUBY_SUFFIX} install pkg-config
echo 'gem install ruby-hmac'
${INSTALL_DIR}/rb${S_VERSION}/bin/gem${RUBY_SUFFIX} install ruby-hmac
echo 'gem install gtk2'
${INSTALL_DIR}/rb${S_VERSION}/bin/gem${RUBY_SUFFIX} install gtk2
# Install scripts
cd ${INSTALL_DIR}
echo 'create start, debug, test scripts'
cat > mikutter-start${S_VERSION}.sh << EOS
#!/bin/bash
cd ${INSTALL_DIR}/mikutter
../rb${S_VERSION}/bin/ruby${RUBY_SUFFIX} \\
-rubygems mikutter.rb
EOS
cat > mikutter-debug${S_VERSION}.sh << EOS
#!/bin/bash
cd ${INSTALL_DIR}/mikutter
../rb${S_VERSION}/bin/ruby${RUBY_SUFFIX} -d \\
-rubygems mikutter.rb --debug
EOS
cat > mikutter-test${S_VERSION}.sh <<EOF
#!/bin/bash
#- mikutter test script -
cd ${INSTALL_DIR}/mikutter
../rb${S_VERSION}/bin/ruby${RUBY_SUFFIX} -v
../rb${S_VERSION}/bin/gem${RUBY_SUFFIX} -v
../rb${S_VERSION}/bin/ruby${RUBY_SUFFIX} -rubygems \\
-e 'require "gtk2"; printf("Gtk2: %s\n", Gtk::VERSION.join("."))'
../rb${S_VERSION}/bin/ruby${RUBY_SUFFIX} -rubygems \\
-e 'require "hmac"; printf("HMAC: %s\n", HMAC::VERSION)'
EOF
echo "${INSTALL_DIR}/rb${S_VERSION}/bin/gem${RUBY_SUFFIX} update --system" >> mikutter-update.sh
echo "${INSTALL_DIR}/rb${S_VERSION}/bin/gem${RUBY_SUFFIX} update" >> mikutter-update.sh
done
#-------------------------------------------------------
# Setup mikutter
#-------------------------------------------------------
cd ${INSTALL_DIR}
echo 'checkout mikutter'
svn co svn://mikutter.hachune.net/mikutter/trunk mikutter
cat >> mikutter-update.sh << EOS
cd ${INSTALL_DIR}/mikutter
svn up
EOS
chmod +x mikutter-*.sh
echo 'done.'
|