#!/bin/sh # ###################################################### # Build script for Core 8.2 # # # # See .info for details # ###################################################### ###################################################### # Configure extension creation parameters # ###################################################### export EXTNAM=frr VERSION="3.0.3" SRCNAM=$EXTNAM-$VERSION.tar.gz WRKDIR=$EXTNAM-$EXTNAM-$VERSION TMPDIR=/tmp/$EXTNAM DESTDIR=/tmp/frrouting/package TODAY=`date +%Y/%m/%d` DESCRIPTION="FRRouting is a routing software suite" DOCDESCRIPTION="Documentation part of the FRRouting routing software suite" DEVDESCRIPTION="Development files part of the FRRouting routing software suite" AUTHORS="See Original-site" HOMEPAGE="https://frrouting.org/" LICENSE="LGPL" ME="rhermsen" TAGS="frr zebra routing quagga" DOCTAGS="man pages frr zebra routing quagga" DEVTAGS="development frr zebra routing quagga" ###################################################### # Prepare extension creation # ###################################################### # Load extensions needed for compiling Frr # Compile tools: tce-load -wi compiletc.tcz tce-load -wi squashfs-tools.tcz tce-load -wi autoconf.tcz tce-load -wi automake.tcz tce-load -wi libtool.tcz tce-load -wi libltdl.tcz tce-load -wi pkg-config.tcz tce-load -wi intltool.tcz tce-load -wi libtool-dev.tcz # Configure dependancy tce-load -wi json-c-dev.tcz tce-load -wi readline-dev.tcz tce-load -wi libxml2.tcz #tce-load -wi libxml2-dev.tcz #tce-load -wi XML-NamespaceSupport.tcz tce-load -wi perl_XML-SAX-Base.tcz tce-load -wi perl_XML-SAX.tcz tce-load -wi perl_XML-LibXML.tcz tce-load -wi libcares-dev.tcz tce-load -wi texinfo.tcz # Other tce-load -wi ipv6-KERNEL.tcz # Remove dirs and files left from previous creation rm -r -f $WRKDIR 2>/dev/null sudo rm -r -f $TMPDIR 2>/dev/null sudo rm -r -f $TMPDIR-doc 2>/dev/null ###################################################### # Compile extension # ###################################################### # Export variables needed for compilation export CFLAGS="-O2 -pipe -march=i486 -mtune=i686" export CXXFLAGS="-O2 -pipe -fno-exceptions -fno-rtti -march=i486 -mtune=i686" #export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig # Unpack source in current directory tar -xf $SRCNAM # Autoconfig cd $WRKDIR ./bootstrap.sh # Configure it ./configure --prefix=/usr/local \ --sysconfdir=/usr/local/etc/$EXTNAM \ --localstatedir=/var/$EXTNAM \ --enable-user=tc \ --enable-group=staff \ --enable-vty-group=staff \ --enable-ldpd \ --enable-pimd \ --enable-multipath=2 \ --enable-rtadv #--disable-doc # Compile make mkdir -p $DESTDIR make DESTDIR=$DESTDIR install # Install in base temp dir mkdir -p $TMPDIR/usr/local/bin mkdir -p $TMPDIR/usr/local/sbin mkdir -p $TMPDIR/usr/local/lib mkdir -p $TMPDIR/usr/local/etc/$EXTNAM #mkdir -p $TMPDIR/usr/local/var/$EXTNAM mkdir -p $TMPDIR/usr/local/tce.installed mv /tmp/frrouting/package/usr/local/bin/* $TMPDIR/usr/local/bin mv /tmp/frrouting/package/usr/local/etc/$EXTNAM/* $TMPDIR/usr/local/etc/$EXTNAM mv /tmp/frrouting/package/usr/local/lib/lib*so* $TMPDIR/usr/local/lib mv /tmp/frrouting/package/usr/local/sbin/* $TMPDIR/usr/local/sbin ################################################### # Create info file # ################################################### cat < /tmp/frrouting/${EXTNAM}.tcz.info Title: ${EXTNAM}.tcz Description: ${DESCRIPTION} Version: ${VERSION} Author: ${AUTHORS} Original-site: ${HOMEPAGE} Copying-policy: ${LICENSE} Size: ${size} Extension_by: ${ME} Tags: ${TAGS} Comments: Frr is a routing software package that provides TCP/IP based routing services with routing protocols support such as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, IS-IS, BGP-4, and BGP-4+. Frr also supports special BGP Route Reflector and Route Server behavior. In addition to traditional IPv4 routing protocols, Frr also supports IPv6 routing protocols. With SNMP daemon which supports SMUX and AgentX protocol, Frr provides routing protocol MIBs. The IPv6 kernel modules are not automatically installed. If IPv6 is desired, install ipv6-4.8.17-tinycore.tcz via the Apps GUI, or cli (tce-load -wi ipv6-KERNEL). Change-log: ${TODAY} First Version, ${VERSION} Current: ${TODAY} First Version, ${VERSION} EOF ################################################### # Create .dep file # ################################################### cat < /tmp/frrouting/${EXTNAM}.tcz.dep json-c.tcz readline.tcz libcares.tcz EOF ################################################### # Create install script file # ################################################### cat < $TMPDIR/usr/local/tce.installed/${EXTNAM} sudo -u tc mkdir /var/frr EOF # Delete compilation work directory cd .. #rm -r -f $WRKDIR # Adjust directory access rigths find $TMPDIR/ -type d | xargs chmod -v 755; # Strip executables find $TMPDIR | xargs file | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded # Move files to doc extension mkdir -p $TMPDIR-doc/usr/local/share/man/man1 mkdir -p $TMPDIR-doc/usr/local/share/man/man8 mkdir -p $TMPDIR-doc/usr/local/share/info mv /tmp/frrouting/package/usr/local/share/man/man1/* $TMPDIR-doc/usr/local/share/man/man1 mv /tmp/frrouting/package/usr/local/share/man/man8/* $TMPDIR-doc/usr/local/share/man/man8 mv /tmp/frrouting/package/usr/local/share/info/* $TMPDIR-doc/usr/local/share/info ################################################### # Create info file # ################################################### cat < /tmp/frrouting/${EXTNAM}-doc.tcz.info Title: ${EXTNAM}-doc.tcz Description: ${DOCDESCRIPTION} Version: ${VERSION} Author: ${AUTHORS} Original-site: ${HOMEPAGE} Copying-policy: ${LICENSE} Size: ${size} Extension_by: ${ME} Tags: ${DOCTAGS} Comments: Frr is a routing software package that provides TCP/IP based routing services with routing protocols support such as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, IS-IS, BGP-4, and BGP-4+. Frr also supports special BGP Route Reflector and Route Server behavior. In addition to traditional IPv4 routing protocols, Frr also supports IPv6 routing protocols. With SNMP daemon which supports SMUX and AgentX protocol, Frr provides routing protocol MIBs. Change-log: ${TODAY} First Version, ${VERSION} Current: ${TODAY} First Version, ${VERSION} EOF mkdir -p $TMPDIR-dev/usr/local/lib mkdir -p $TMPDIR-dev/usr/local/include/frr mv /tmp/frrouting/package/usr/local/lib/lib*a* $TMPDIR-dev/usr/local/lib mv /tmp/frrouting/package/usr/local/include/frr/* $TMPDIR-dev/usr/local/include/frr/ ################################################### # Create info file # ################################################### cat < /tmp/frrouting/${EXTNAM}-dev.tcz.info Title: ${EXTNAM}-dev.tcz Description: ${DEVDESCRIPTION} Version: ${VERSION} Author: ${AUTHORS} Original-site: ${HOMEPAGE} Copying-policy: ${LICENSE} Size: ${size} Extension_by: ${ME} Tags: ${DEVTAGS} Comments: Frr is a routing software package that provides TCP/IP based routing services with routing protocols support such as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, IS-IS, BGP-4, and BGP-4+. Frr also supports special BGP Route Reflector and Route Server behavior. In addition to traditional IPv4 routing protocols, Frr also supports IPv6 routing protocols. With SNMP daemon which supports SMUX and AgentX protocol, Frr provides routing protocol MIBs. Change-log: ${TODAY} First Version, ${VERSION} Current: ${TODAY} First Version, ${VERSION} EOF ################################################### # Create .dep file # ################################################### cat < /tmp/frrouting/${EXTNAM}-dev.tcz.dep ipv6-KERNEL.tcz frr.tcz json-c-dev.tcz readline-dev.tcz libcares-dev.tcz EOF ################################################### # Create base extension in temp dir # ################################################### cd $TMPDIR find $TMPDIR -perm 777 -exec chmod 755 {} \; find $TMPDIR -perm 555 -exec chmod 755 {} \; find $TMPDIR -perm 444 -exec chmod 644 {} \; find $TMPDIR -perm 666 -exec chmod 644 {} \; find $TMPDIR -perm 664 -exec chmod 644 {} \; sudo chown -R root:root $TMPDIR sudo chown -R root:staff $TMPDIR/usr/local/tce.installed sudo chmod -R 775 $TMPDIR/usr/local/tce.installed #sudo chown tc:staff $TMPDIR/usr/local/var/frr sudo chown tc:staff $TMPDIR/usr/local/etc/frr cd .. mksquashfs $TMPDIR $EXTNAM.tcz cd $TMPDIR sudo sh -c "find usr -not -type d > $EXTNAM.tcz.list" sudo mv ../$EXTNAM.tcz . sudo mv /tmp/frrouting/${EXTNAM}.tcz.info . sudo mv /tmp/frrouting/${EXTNAM}.tcz.dep . # Create md5 file sudo sh -c "md5sum $EXTNAM.tcz > $EXTNAM.tcz.md5.txt" # Cleanup temp directory sudo rm -r -f usr ################################################### # Create doc extension in temp dir # ################################################### cd $TMPDIR-doc find $TMPDIR-doc -perm 777 -exec chmod 755 {} \; find $TMPDIR-doc -perm 555 -exec chmod 755 {} \; find $TMPDIR-doc -perm 444 -exec chmod 644 {} \; find $TMPDIR-doc -perm 666 -exec chmod 644 {} \; find $TMPDIR-doc -perm 664 -exec chmod 644 {} \; sudo chown -R root:root $TMPDIR-doc cd .. mksquashfs $TMPDIR-doc $EXTNAM-doc.tcz cd $TMPDIR-doc sudo sh -c "find usr -not -type d > $EXTNAM-doc.tcz.list" sudo mv ../$EXTNAM-doc.tcz . sudo mv /tmp/frrouting/${EXTNAM}-doc.tcz.info . # Create md5 file sudo sh -c "md5sum $EXTNAM-doc.tcz > $EXTNAM-doc.tcz.md5.txt" # Cleanup temp directory sudo rm -r -f usr ################################################### # Create dev extension in temp dir # ################################################### cd $TMPDIR-dev find $TMPDIR-dev -perm 777 -exec chmod 755 {} \; find $TMPDIR-dev -perm 555 -exec chmod 755 {} \; find $TMPDIR-dev -perm 444 -exec chmod 644 {} \; find $TMPDIR-dev -perm 666 -exec chmod 644 {} \; find $TMPDIR-dev -perm 664 -exec chmod 644 {} \; sudo chown -R root:root $TMPDIR-dev cd .. mksquashfs $TMPDIR-dev $EXTNAM-dev.tcz cd $TMPDIR-dev sudo sh -c "find usr -not -type d > $EXTNAM-dev.tcz.list" sudo mv ../$EXTNAM-dev.tcz . sudo mv /tmp/frrouting/${EXTNAM}-dev.tcz.info . sudo mv /tmp/frrouting/${EXTNAM}-dev.tcz.dev . # Create md5 file sudo sh -c "md5sum $EXTNAM-dev.tcz > $EXTNAM-dev.tcz.md5.txt" # Cleanup temp directory sudo rm -r -f usr