#!/bin/sh [ `id -u` != 0 ] && { echo "fail"; exit 1; } export CFLAGS="-march=i486 -mtune=i686 -Os -pipe" export CXXFLAGS="-march=i486 -mtune=i686 -Os -pipe -fno-exceptions -fno-rtti" export CPPFLAGS="-I/usr/local/include" export LDFLAGS="-L/usr/local/lib" export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig mirror="ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/" basename="openssh" sep="-" version="5.2p1" description="OpenSSH Server and Client (TESTING)" author="Many contributors, see site" license="BSD" homepage="http://www.openssh.org" extensionby="Kingdomcome" comments="This extension depends on openssl-0.9.8h\n\t\t\t" comments="${comments}Config files are located in /usr/local/etc/ssh/\n\t\t\t" comments="${comments}Unique host keys will be created in /usr/local/etc/ssh/\n\t\t\t" comments="${comments}Use backup or PPI to save configs and keys\n\t\t\t" ppicompat="\n\n\t\t\tThis extension is PPI compatible" date=`date +%Y/%m/%d` tce="tce" tcz="tcz" compiledeps="compiletc.tce advcomp.tce cramfs-utils.tce" eval ${tce}deps="'openssl-0.9.8h.tcel'" eval ${tcz}deps="'openssl-0.9.8h.tczl'" builddeps="openssl-0.9.8h.tcel openssl-0.9.8h-devs.tce" writables="ssh_config sshd_config" flags="--prefix=/usr/local --sysconfdir=/usr/local/etc/ssh --with-privsep-user=nobody --with-privsep-path=/usr/local/var/ssh" flags="${flags} --datarootdir=/usr/local/man --with-xauth=/usr/bin/xauth --with-pid-dir=/var/run" flags="${flags} --with-default-path=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin" #editMake="" postinstall='#!/bin/sh\n\n[ -d /usr/local/var/ssh ] || sudo mkdir -p /usr/local/var/ssh\n[ -e /usr/local/etc/ssh/ssh_host_rsa_key ] || {\n sudo ssh-keygen -qt rsa -N "" -f /usr/local/etc/ssh/ssh_host_rsa_key;\n sudo ssh-keygen -qt dsa -N "" -f /usr/local/etc/ssh/ssh_host_dsa_key;\n}' ## prepare environment for i in ${compiledeps} ${builddeps}; do su - tc -c "tce-load ${i} wget install"; done mkdir -p ${basename}/tmp/package/ && cd ${basename}/ pwd=`pwd` ## move required lib to /usr/local/lib before running configure cp -a /usr/lib/libssp.so.0.0.0 /usr/local/lib/ ln -s /usr/local/lib/libssp.so.0.0.0 /usr/local/lib/libssp.so.0 ln -s /usr/local/lib/libssp.so.0 /usr/local/lib/libssp.so for i in libssp.so.0.0.0 libssp.so.0 libssp.so; do rm /usr/lib/${i}; done ## download and extract source wget ${mirror}${basename}${sep}${version}.tar.gz && tar xzf ${basename}${sep}${version}.tar.gz cd ${basename}${sep}${version}/ ## build, locate and strip package if [ "${flags}" ]; then ./configure ${flags} else ${editMake} fi make touch /tmp/mark sleep 2 make DESTDIR=${pwd}/tmp/package install sleep 3 if [ "$(ls -A ${pwd}/tmp/package/)" ]; then rm /tmp/mark fi if [ -e /tmp/mark ]; then cd / else cd ${pwd}/tmp/package/ fi find usr/local/ | xargs file | grep "executable" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find usr/local/ | xargs file | grep "shared object" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip -g 2> /dev/null ## remove build files, docs and create post-install script rm -rf ${pwd}/${basename}${sep}${version}/ ${pwd}/${basename}${sep}${version}.tar.gz rm -rf usr/local/man/ if [ "${postinstall}" ]; then mkdir usr/local/tce.installed/ echo -e "${postinstall}" > usr/local/tce.installed/${basename} chmod 755 usr/local/tce.installed/${basename} fi ## insert required lib into package knowing it supports DESTDIR= mkdir usr/local/lib/ cp -a /usr/local/lib/libssp.so.0.0.0 usr/local/lib/ ln -s usr/local/lib/libssp.so.0.0.0 usr/local/lib/libssp.so.0 ln -s usr/local/lib/libssp.so.0 usr/local/lib/libssp.so ## create tce if [ -e /tmp/mark ]; then find usr -newer /tmp/mark -not -type d > ${pwd}/${basename}.${tce}.list else find usr -not -type d > ${pwd}/${basename}.${tce}.list fi tar czvf ${pwd}/${basename}.${tce} --numeric-owner -T ${pwd}/${basename}.${tce}.list advdef -z4 ${pwd}/${basename}.${tce} ## create tcz if [ -e /tmp/mark ]; then cd ${pwd}/tmp/package && tar xzf ${pwd}/${basename}.${tce} fi if [ "${writables}" ]; then [ -e ../rwfiles.list ] && rm -f ../rwfiles.list for files in ${writables}; do find usr -not -type d -name ${files} >> ../rwfiles.list; done tar czvf user.tar.gz --numeric-owner -T ../rwfiles.list && advdef -z4 user.tar.gz for files in `cat ../rwfiles.list`; do rm -f ${files}; done rm -f ../rwfiles.list fi mkfs.cramfs ./ ${pwd}/${basename}.${tcz} cp ${pwd}/${basename}.${tce}.list ${pwd}/${basename}.${tcz}.list ## md5, dep, and info files for ext in ${tce} ${tcz}; do md5sum ${pwd}/${basename}.${ext} > ${pwd}/${basename}.${ext}.md5.txt eval deps=\${${ext}deps} if [ "${deps}" ]; then for files in ${deps}; do echo ${files} >> ${pwd}/${basename}.${ext}.dep; done fi eval ${tce}comments="'${comments}${ppicompat}'" eval ${tcz}comments="'${comments}'" eval thecomments=\${${ext}comments} echo -e "Title:\t\t\t${basename}.${ext}\nDescription:\t\t${description}\nVersion:\t\t${version}\nAuthor:\t\t\t${author}" > ${pwd}/${basename}.${ext}.info echo -en "Original-site:\t\t${homepage}\nCopying-policy:\t\t${license}\nSize:\t\t\t" >> ${pwd}/${basename}.${ext}.info du -sh ${pwd}/${basename}.${ext} | cut -f 1 >> ${pwd}/${basename}.${ext}.info echo -e "Extension_by:\t\t${extensionby}\nComments:\t\t${thecomments}\nChange-log:\t\t----\nCurrent:\t\t${date} First Version" >> ${pwd}/${basename}.${ext}.info done ## return lib to original location cp -a /usr/local/lib/libssp.so.0.0.0 /usr/lib/ ln -s /usr/lib/libssp.so.0.0.0 /usr/lib/libssp.so.0 ln -s /usr/lib/libssp.so.0 /usr/lib/libssp.so for i in libssp.so.0.0.0 libssp.so.0 libssp.so; do rm /usr/local/lib/${i}; done ## clean up package files rm -rf ${pwd}/tmp/ /tmp/mark && echo "Everything is in ${basename}/" exit 0