Jump to content

ROSE Compiler Framework/Real-World Applications

From Wikibooks, open books for an open world

cherokee

[edit | edit source]
$ tar xvzf cherokee-1.2.101.tar.gz
$ cd cherokee-1.2.101

$ CC=identityTranslator ./configure --prefix=$(pwd)/install_tree
$ make
$ make install

Prerequisites:

  • Autoconf >= 2.63
  • CMake
$ tar xzvf dbus-1.6.4.tar.gz
$ cd dbus-1.6.4

$ mkdir dbus-build-dir
$ cd dbus-build-dir

$ CC=identityTranslator cmake -G "Unix Makefiles" ../cmake/
$ make
$ make install

epiphany

[edit | edit source]
$ unxz epiphany-3.0.4.tar.xz
$ tar xvf epiphany-3.0.4.tar
$ cd epiphany-3.0.4

$ CC=identityTranslator ./configure --prefix=$(pwd)/install_tree
$ make
$ make install
$ tar xzvf exim-4.66.tar.gz
$ cd exim-4.66

# Create main Makefile
#cat src/EDITME | sed 's/\(EXIM_USER=\)/\1'$USER'/g' > Local/Makefile

$ cp src/EDITME Local/Makefile
(
    echo "CC=identityTranslator"
    echo "CFLAGS=-I$(pwd)/build-Linux-x86_64"
    echo "EXIM_USER=$USER"
    echo "BIN_DIRECTORY=$(pwd)/install_tree/bin"
    echo "CONFIGURE_FILE=$(pwd)/install_tree/configure"
) 2>&1 >> Local/Makefile
[ ${PIPESTATUS[0]} -ne 0 ] && exit 1 || true

# Create eximon configuration
$ cp exim_monitor/EDITME Local/eximon.conf

$ cat src/pcre/config.h | sed 's/#include "..\/os.h"/#include "os.h"/g' > src/pcre/config.h-new
$ cp src/pcre/config.h src/pcre/config.h-old
$ cp src/pcre/config.h-new src/pcre/config.h

# Hack: Replace #include "cnumber.h" with the actual number contained in
# that header file:
#
# // DQ (10/23/2012): Modified source code to avoid this classic source-to-source
# // issue (represented by ROSE test code test2012_78.c).
files="$(grep -rn "#include \"cnumber.h\"" * | awk '{print $1}' | sed 's/:.*:.*//g')"
# Generated by Make
#cnumber_file="$(find . -iname "*cnumber\.h")"
#cnumber="$(cat "$cnumber_file")"
cnumber="6"
for f in $files; do
  echo "Hacking file '$f' to replace '#include \"cnumber.h\"' with the actual contents '${cnumber}'..."
  mv $f $f-old
  cat "${f}-old" | sed 's/#include "cnumber\.h"/'${cnumber}'/g' > "$f" 
done

$ make
$ unxz grep-2.14.tar.xz
$ tar xvf grep-2.14.tar
$ cd grep-2.14

$ CC=identityTranslator ./configure --prefix=$(pwd)/install_tree
$ make
$ make install

irssi

[edit | edit source]
$ tar xzvf irssi-0.8.15.tar.gz
$ cd irssi-0.8.15

$ CC=identityTranslator ./configure --prefix=$(pwd)/install_tree
$ make
$ make install
$ tar xzvf mutt-1.4.2.3.tar.gz
$ cd mutt-1.4.2.3

$ CC=identityTranslator ./configure --prefix=$(pwd)/install_tree
$ make
$ make install

nginx

[edit | edit source]
tar xzvf nginx-1.2.3.tar.gz
cd nginx-1.2.3

# Hack: Replace space in header file include paths: "-I "to> "-I":
files="$(grep -rn "\-I " * | awk '{print $1}' | sed 's/:.*:.*//g')"
for f in $files; do
  echo "Hacking file '$f' to remove space in -I header file include paths..."
  mv $f $f-old
  cat "${f}-old" | sed 's/-I /-I/g' > "$f" 
done

# Hack: Remove "-Werror" so warnings won't be treated as errors:
files="$(grep -rn "\-Werror" * | awk '{print $1}' | sed 's/:.*:.*//g')"
for f in $files; do
  echo "Hacking file '$f' to remove the -Werror CFLAG..."
  mv $f $f-old
  cat "${f}-old" | sed 's/-Werror//g' > "$f" 
done

CC=identityTranslator ./configure --prefix=$(pwd)/install_tree
make
make install

openssl

[edit | edit source]
$ tar xzvf openssl-1.0.1c.tar.gz
$ cd openssl-1.0.1c

$ CC=identityTranslator ./config --prefix=$(pwd)/install_tree
$ make
$ make test
$ make install

postfix

[edit | edit source]
$ tar xvzf postfix-2.9.4.tar.gz
$ cd postfix-2.9.4

$ make makefiles CC=identityTranslator
$ make
$ make install
$ tar xzvf sudo-1.8.6.tar.gz
$ cd sudo-1.8.6

$ CC=identityTranslator ./configure --prefix=$(pwd)/install_tree
$ make
$ make install

tcpdump

[edit | edit source]

Prerequisites:

  • PCAP (we use v1.3.0)
$ export WORKSPACE_HOME="$(pwd)"

# Build dependency pcap at same directory level as tcpdump
$ tar xzvf libpcap-1.3.0.tar.gz
$ cd libpcap-1.3.0

$ export PCAP_INSTALL=$(pwd)/install_tree
$ ./configure --prefix="$PCAP_INSTALL"
$ make -j16 install

cd "$WORKSPACE_HOME"
$ tar xzvf tcpdump-4.3.0.tar.gz
$ cd tcpdump-4.3.0

$ CC=identityTranslator ./configure --prefix=$(pwd)/install_tree
$ make
$ make install

w3c libwww

[edit | edit source]
$ tar xvzf w3c-libwww-5.4.0.tgz
$ cd w3c-libwww-5.4.0

$ CC=identityTranslator ./configure --prefix=$(pwd)/install_tree
$ make
$ make install
$ tar xvzf wget-1.14.tar.gz
$ cd wget-1.14

# Hack: Replace "GNUTLS_TLS1_2" by "GNUTLS_TLS1_1" so it will compile
# on our operating systems
f="src/gnutls.c"
echo "Hacking file '$f' to change 'GNUTLS_TLS1_2' to 'GNUTLS_TLS1_1'..."
mv $f $f-old
cat "${f}-old" | sed 's/GNUTLS_TLS1_2/GNUTLS_TLS1_1/g' > "$f" 

# Hack: Change include to be local instead of system:
# <sys/stat.h> to "sys/stat.h"
#
cp lib/utimens.c lib/utimens.c-old
cat lib/utimens.c-old | sed 's/#include <sys\/stat.h>/#include "sys\/stat.h"/g' > lib/utimens.c

$ CC=identityTranslator ./configure --prefix=$(pwd)/install_tree
$ make
$ make install
$ tar xzvf zsh-5.0.0.tar.gz
$ cd zsh-5.0.0

# Use "--without-tcsetpgrp", otherwise error "no controlling TTY" when run in Jenkins
$ CC=identityTranslator ./configure --prefix=$(pwd)/install_tree --without-tcsetpgrp
$ make
$ make install