Skip to content
Snippets Groups Projects
copy_output.sh 3.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/usr/bin/env bash
    
    set -e
    
    
    [ "$GLUON_IMAGEDIR" -a "$GLUON_PACKAGEDIR" -a "$OPENWRT_TARGET" -a "$GLUON_RELEASE" -a "$GLUON_SITEDIR" ] || exit 1
    
    
    
    default_factory_ext='.bin'
    default_factory_suffix='-squashfs-factory'
    default_sysupgrade_ext='.bin'
    default_sysupgrade_suffix='-squashfs-sysupgrade'
    
    output=
    profile=
    aliases=
    
    factory_ext=
    factory_suffix=
    sysupgrade_ext=
    sysupgrade_suffix=
    
    
    
    mkdir -p "${GLUON_IMAGEDIR}/factory" "${GLUON_IMAGEDIR}/sysupgrade"
    
    
    if [ "$(expr match "$OPENWRT_TARGET" '.*-.*')" -gt 0 ]; then
    	OPENWRT_BINDIR="${OPENWRT_TARGET//-/\/}"
    
    	OPENWRT_BINDIR="${OPENWRT_TARGET}/generic"
    
    fi
    
    SITE_CODE="$(scripts/site.sh site_code)"
    PACKAGE_PREFIX="gluon-${SITE_CODE}-${GLUON_RELEASE}"
    
    
    
    do_clean() {
    	local dir="$1"
    	local out_suffix="$2"
    	local ext="$3"
    	local name="$4"
    
    	rm -f "${GLUON_IMAGEDIR}/${dir}/gluon-"*"-${name}${out_suffix}${ext}"
    }
    
    get_file() {
    	local dir="$1"
    	local out_suffix="$2"
    	local ext="$3"
    	local name="$4"
    
    	echo "${GLUON_IMAGEDIR}/${dir}/gluon-${SITE_CODE}-${GLUON_RELEASE}-${name}${out_suffix}${ext}"
    }
    
    do_copy() {
    	local dir="$1"
    	local in_suffix="$2"
    	local out_suffix="$3"
    	local ext="$4"
    	local aliases="$5"
    
    	local file="$(get_file "$dir" "$out_suffix" "$ext" "$output")"
    
    	do_clean "$dir" "$out_suffix" "$ext" "$output"
    	cp "openwrt/bin/targets/${OPENWRT_BINDIR}/openwrt-${OPENWRT_TARGET}${profile}${in_suffix}${ext}" "$file"
    
    	for alias in $aliases; do
    		do_clean "$dir" "$out_suffix" "$ext" "$alias"
    		ln -s "$(basename "$file")" "$(get_file "$dir" "$out_suffix" "$ext" "$alias")"
    	done
    }
    
    copy() {
    	[ "$output" ] || return 0
    	want_device "$output" || return 0
    
    	[ -z "$factory_ext" ] || do_copy 'factory' "$factory_suffix" '' "$factory_ext" "$aliases"
    	[ -z "$sysupgrade_ext" ] || do_copy 'sysupgrade' "$sysupgrade_suffix" '-sysupgrade' "$sysupgrade_ext" "$aliases"
    
    }
    
    
    . scripts/common.inc.sh
    
    device() {
    	copy
    
    	output="$1"
    	profile="-$2"
    	aliases=
    
    	factory_ext="$default_factory_ext"
    	factory_suffix="$default_factory_suffix"
    	sysupgrade_ext="$default_sysupgrade_ext"
    	sysupgrade_suffix="$default_sysupgrade_suffix"
    }
    
    factory_image() {
    	copy
    
    	output="$1"
    	aliases=
    
    	if [ "$3" ]; then
    		profile="-$2"
    		factory_ext="$3"
    	else
    		profile=""
    		factory_ext="$2"
    	fi
    
    	factory_suffix=
    	sysupgrade_ext=
    	sysupgrade_suffix=
    }
    
    sysupgrade_image() {
    	copy
    
    	output="$1"
    	aliases=
    
    	if [ "$3" ]; then
    		profile="-$2"
    		sysupgrade_ext="$3"
    	else
    		profile=""
    		sysupgrade_ext="$2"
    	fi
    
    	factory_ext=
    	factory_suffix=
    	sysupgrade_suffix=
    }
    
    alias() {
    	aliases="$aliases $1"
    }
    
    factory() {
    	if [ "$2" ]; then
    		factory_suffix="$1"
    		factory_ext="$2"
    	else
    		factory_ext="$1"
    	fi
    
    	if [ -z "$profile" ]; then
    		default_factory_ext="$factory_ext"
    		default_factory_suffix="$factory_suffix"
    	fi
    }
    
    sysupgrade() {
    	if [ "$2" ]; then
    		sysupgrade_suffix="$1"
    		sysupgrade_ext="$2"
    	else
    		sysupgrade_ext="$1"
    	fi
    
    	if [ -z "$output" ]; then
    		default_sysupgrade_ext="$sysupgrade_ext"
    		default_sysupgrade_suffix="$sysupgrade_suffix"
    	fi
    }
    
    
    . targets/"$1"; copy
    
    # Copy opkg repo
    
    if [ -z "$no_opkg" -a -z "$DEVICES" ]; then
    
    	rm -f "$GLUON_PACKAGEDIR"/*/"$OPENWRT_BINDIR"/*
    	rmdir -p "$GLUON_PACKAGEDIR"/*/"$OPENWRT_BINDIR" 2>/dev/null || true
    	mkdir -p "${GLUON_PACKAGEDIR}/${PACKAGE_PREFIX}/${OPENWRT_BINDIR}"
    	cp "openwrt/bin/targets/${OPENWRT_BINDIR}/packages"/* "${GLUON_PACKAGEDIR}/${PACKAGE_PREFIX}/${OPENWRT_BINDIR}"