1#!/bin/sh 2# Copyright 2020 Ettus Research, a National Instruments Brand 3# 4# SPDX-License-Identifier: GPL-3.0-or-later 5# 6# Shell script to generate uhd tar.gz packages. 7# Builds 2 packages. One with the firmware, fpga, and mpm folders and one without 8 9set -e 10 11echo_help () { 12 echo "-h/--help: This help doc" 13 echo "-d/--dir /path/to/uhd/root: Point to custom path. Defaults to '../'" 14 echo "-n/--name Specifies package name. Required" 15 echo "-f/--fpganame Specifies fpga package name. If unspecified, '_fpga' gets appended to provided name" 16} 17 18while [[ $# -gt 0 ]] 19do 20key="$1" 21 22case $key in 23 -h|--help) 24 echo_help 25 exit 0 26 ;; 27 -d|--dir) 28 UHD_ROOTDIR="$2" 29 shift # past argument 30 shift # past value 31 ;; 32 -n|--name) 33 UHD_TARNAME="$2" 34 shift # past argument 35 shift # past value 36 ;; 37 -f|--fpganame) 38 UHD_TARFPGANAME="$2" 39 shift # past argument 40 shift # past value 41 ;; 42 *) # unknown option 43 echo "Unknown argument" 44 exit 1 45 ;; 46esac 47done 48 49if [[ -z "$UHD_ROOTDIR" ]]; then 50 UHD_ROOTDIR='..' 51fi 52echo "Root Dir: "$UHD_ROOTDIR 53 54if [[ -z "$UHD_TARNAME" ]]; then 55 echo_help 56 exit 1 57fi 58 59if [[ -z "$UHD_TARFPGANAME" ]]; then 60 UHD_TARFPGANAME="${UHD_TARNAME}_fpga" 61fi 62 63# Create working directory if it doesn't already exist otherwise clear it 64if [ ! -d "$UHD_ROOTDIR/build/root" ]; then 65 mkdir -p $UHD_ROOTDIR/build/root 66else 67 rm -r $UHD_ROOTDIR/build/root/* 68fi 69 70# Copy basic source and create tar.gz 71cp -R $UHD_ROOTDIR/host $UHD_ROOTDIR/build/root 72cp -R $UHD_ROOTDIR/images $UHD_ROOTDIR/build/root 73cp -R $UHD_ROOTDIR/tools $UHD_ROOTDIR/build/root 74find $UHD_ROOTDIR/build/root/ -type d -name "build*" -exec rm -r {} + 75 76UHD_EXITSTATUS=0 77 78echo "Building $UHD_ROOTDIR/build/$UHD_TARNAME.tar.bz2" 79tar --exclude='.git*' -jcf $UHD_ROOTDIR/build/$UHD_TARNAME.tar.bz2 -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.bz2 file -- Is bzip2 installed?"; UHD_EXITSTATUS=1; } 80 81echo "Building $UHD_ROOTDIR/build/$UHD_TARNAME.tar.gz" 82tar --exclude='.git*' -zcf $UHD_ROOTDIR/build/$UHD_TARNAME.tar.gz -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.gz file -- Is gzip installed?"; UHD_EXITSTATUS=1; } 83 84echo "Building $UHD_ROOTDIR/build/$UHD_TARNAME.tar.xz" 85tar --exclude='.git*' -Jcf $UHD_ROOTDIR/build/$UHD_TARNAME.tar.xz -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.xz file -- Is xz installed?"; UHD_EXITSTATUS=1; } 86 87echo "Building $UHD_ROOTDIR/build/$UHD_TARNAME.tar.Z" 88tar --exclude='.git*' -Zcf $UHD_ROOTDIR/build/$UHD_TARNAME.tar.Z -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.Z file -- Is compress installed?"; UHD_EXITSTATUS=1; } 89 90# Copy firmware, fpga, and mpm folders and create tar.gz 91cp -R $UHD_ROOTDIR/firmware $UHD_ROOTDIR/build/root 92cp -R $UHD_ROOTDIR/fpga $UHD_ROOTDIR/build/root 93cp -R $UHD_ROOTDIR/mpm $UHD_ROOTDIR/build/root 94find $UHD_ROOTDIR/build/root/ -type d -name "build*" -exec rm -r {} + 95 96echo "Building $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.bz2" 97tar --exclude='.git*' -jcf $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.bz2 -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.bz2 file -- Is bzip2 installed?"; UHD_EXITSTATUS=1; } 98 99echo "Building $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.gz" 100tar --exclude='.git*' -zcf $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.gz -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.gz file -- Is gzip installed?"; UHD_EXITSTATUS=1; } 101 102echo "Building $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.xz" 103tar --exclude='.git*' -Jcf $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.xz -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.xz file -- Is xz installed?"; UHD_EXITSTATUS=1; } 104 105echo "Building $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.Z" 106tar --exclude='.git*' -Zcf $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.Z -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.Z file -- Is compress installed?"; UHD_EXITSTATUS=1; } 107 108exit $UHD_EXITSTATUS 109