#!/bin/bash # DETERMINE LOCATION OF FRAMEWORK while read flocation; do if test -x ${flocation} && test "$( ${flocation} --fcheck )" -ge 20170111; then frameworkscript="${flocation}"; break; fi; done <&2 && exit 4 . ${frameworkscript} || echo "$0: framework did not run properly. Continuing..." 1>&2 type=""; case "${thisflavor}" in redhat|rhel|centos|fedora|korora) type=rpm;; debian|ubuntu) type=dpkg;; *) type=targz;; esac echo " $@ " | grep -qiE -- "help|usage|\s-h\s|\s-\?" 1>/dev/null 2>&1 && { # display help and exit less -F </dev/null 2>&1 && type=rpm echo " $@ " | grep -qiE -- "debian|ubuntu|deb\s|dpkg" 1>/dev/null 2>&1 && type=dpkg echo " $@ " | grep -qiE -- "tar|tgz|gz" 1>/dev/null 2>&1 && type=targz echo " $@ " | grep -qiE -- "scrub" 1>/dev/null 2>&1 && type=scrub # Display information echo "packaging ${package}-${version} as ${type}" echo " $@ " | grep -qiE -- "debug|\s-d[ 0-9]{0,3}\s" 1>/dev/null 2>&1 && exit 0 case "${type}" in rpm) ########## PACKAGING for rhel/centos # if you copy-paste this, be sure to define package, version, shortversion rpmbuilddir=~/rpmbuild/ packagespecfile="${package}-${version}/usr/share/${package}/docs/${package}.spec" sed -n -e '1,/^\%files$/p;' "${rpmbuilddir}/SOURCES/${packagespecfile}" > "${rpmbuilddir}/SOURCES/${packagespecfile}.$$.swp" # removes files and changelog cd ${rpmbuilddir}/SOURCES/"${package}-${version}" "${rpmbuilddir}/SOURCES/${package}-${version}/usr/share/${package}/inc/get-files" rpm >> "${rpmbuilddir}/SOURCES/${packagespecfile}.$$.swp" { printf '\n'; sed -n -e '/^\%changelog/,$p' "${rpmbuilddir}/SOURCES/${packagespecfile}"; } >> "${rpmbuilddir}/SOURCES/${packagespecfile}.$$.swp" mv -f "${rpmbuilddir}/SOURCES/${packagespecfile}.$$.swp" "${rpmbuilddir}/SOURCES/${packagespecfile}" rm -rf "${rpmbuilddir}/SOURCES/${package}-${shortversion}"; cp -prf "${rpmbuilddir}/SOURCES/${package}-${version}" "${rpmbuilddir}/SOURCES/${package}-${shortversion}" rm -rf "${rpmbuilddir}/SOURCES/${package}-${shortversion}/DEBIAN" cd "${rpmbuilddir}/SOURCES" rm -rf "${package}.tgz"; tar -zc --exclude='.git*' --exclude='README.md' -f "${package}.tgz" "${package}-${shortversion}" cp -p "${rpmbuilddir}/SOURCES/${packagespecfile}" "${rpmbuilddir}/SPECS" mkdir -p "${rpmbuilddir}/RPMS/noarch"; cd "${rpmbuilddir}/RPMS/noarch" rpmbuild -bb "${rpmbuilddir}/SPECS/${package}.spec" rm -rf "${rpmbuilddir}/SOURCES/${package}-${shortversion}/" "${rpmbuilddir}/SOURCES/${package}.tgz" ;; dpkg) ########## PACKAGING for ubuntu # You need package dpkg-dev to build packages. # if you copy-paste this, be sure to define package, version debdir=~/deb debiandirmain="${package}-${version}/usr/share/${package}/docs/debian-${package}" cd "${debdir}/${package}-${version}" "${debdir}/${package}-${version}/usr/share/${package}/inc/get-files" deb | xargs md5sum > "${debdir}/${debiandirmain}/md5sums" #mkdir -p "${debdir}/$$"; mv "${debdir}/${package}-${version}/.git" "${debdir}/${package}-${version}/README.md" "${debdir}/$$/" cd "${debdir}" # main rm -rf "${debdir}/${package}-${version}/DEBIAN/" 2>/dev/null; mkdir -p "${debdir}/${package}-${version}/DEBIAN/" cp -pf "${debdir}/${debiandirmain}"/* "${debdir}/${package}-${version}/DEBIAN/" mkdir "${debdir}/${package}" 2>/dev/null; rm -rf "${debdir}/${package}-${version}-work.tgz" tar -zc --exclude='.git*' --exclude='README.md' -f "${debdir}/${package}-${version}-work.tgz" -C "${debdir}/${package}-${version}" $( awk '{print $2}' "${debdir}/${package}-${version}/DEBIAN/md5sums" ) DEBIAN tar -zx -C "${debdir}/${package}" -f "${debdir}/${package}-${version}-work.tgz" fakeroot dpkg-deb -b "${debdir}/${package}" mv -f "${debdir}/${package}.deb" "${debdir}/${package}-${version}.deb" rm -rf "${debdir}/${package}-${version}-work.tgz" "${debdir}/${package}" #mv "${debdir}/$$/.git" "${debdir}/$$/"* "${debdir}/${package}-${version}/"; rmdir "${debdir}/$$" ;; targz) ########## PACKAGING in a master.tgz # if you copy-paste this, be sure to define package, version cd ~/deb 2>/dev/null || cd ~/rpmbuild/SOURCES rm -rf ./"${package}-${version}".master.tgz tar -zcf "${package}-${version}".master.tgz "${package}-${version}"/ ;; scrub) ########## SCRUB for publication # if you copy-paste this, be sure to define package, version cd ~/deb 2>/dev/null || cd ~/rpmbuild/SOURCES cd "$( find . -name "*scrub.txt" | grep -iE "${package}-${version}\/" | xargs dirname )" /usr/share/bgscripts/scrub.py ;; unknown) echo "error: check $0 for errors on type ${type}." 1>&2 ;; esac