- # Produce standard tools tarballs using linuxbrew
- # Customize the variables as desired
- # Software depot to archive releases
- DEPOT = depot@slice.tundraware.com:/opt/depot/
- # Where to store build tarballs
- EXPORTDIR = /shared
- # Where tools directory lives
- INSTALLDIR = /opt/TundraWare
- # Name of the tools directory
- TOOLS = tools
- # Things that have to be built during the bootstrap phase with system tools
- BOOTSTRAP = gcc make curl git
- # Support and languages to install after bootstrap but before other packages
- LANGS = go perl python
- # Stuff we want pip to install
- PIPMODULES = pip ansible pew pythonz-bd mutagen docutils
- # Set of packages we want to include in the distribution tarball
- MYTOOLS = bash-completion emacs file-formula gawk gnu-tar htop neovim nload nmap screen socat source-highlight ripgrep tmux tree vim
- # ----------- Nothing below here should need changing ----------- #
- TOOLSDIR = ${INSTALLDIR}/${TOOLS}
- BREW = ${TOOLSDIR}/bin/brew -v
- DATESTAMP = $(shell date +%Y%m%d)
- FULLDATE = $(shell date)
- GITREVISION = $(shell git log -1 | head -n3)
- all: clean getbrew bootstrap-build bootstrap-release full-build full-release
- # Get latest linuxbrew
- getbrew:
- @echo "Make sure you have write permission on the target directory!"
- git clone https://github.com/Homebrew/brew ${TOOLSDIR}
- # Bootstrapping
- bootstrap-build:
- ulimit -n 65535
- @echo "Make sure you have the OS development tools installed!"
- # sudo yum -y install texinfo
- ${BREW} install --verbose ${BOOTSTRAP}
- # ${BREW} reinstall -s --verbose curl
- bootstrap-release: tidyup
- echo "${FULLDATE}" >> ${TOOLSDIR}/tools-builder.bootstrap.datetime
- echo "${GITREVISION}" >> ${TOOLSDIR}/tools-builder.bootstrap.gitrevision
- cd ${INSTALLDIR} && mv -v ${TOOLS} ${TOOLS}-bootstrap-${DATESTAMP}
- cd ${INSTALLDIR} && tar -czvf ${EXPORTDIR}/${TOOLS}-bootstrap-${DATESTAMP}.tar.gz ${TOOLS}-bootstrap-${DATESTAMP}
- cd ${INSTALLDIR} && mv -v ${TOOLS}-bootstrap-${DATESTAMP} ${TOOLS}
- # Full tools set
- full-build:
- # Do some housekeeping
- ulimit -n 65535
- @echo "Make sure the bootstrap is installed at ${TOOLSDIR}"
- # sudo yum -y install autoconf automake patch perl texinfo
- brew unlink util-linux
- ${BREW} install -s --verbose ${LANGS}
- ${BREW} link --verbose python
- ln -nfs ${TOOLSDIR}/bin/python3 ${TOOLSDIR}/bin/python
- ln -nfs ${TOOLSDIR}/bin/pip3 ${TOOLSDIR}/bin/pip
- pip install ${PIPMODULES} -U --ignore-installed
- ${BREW} install -s --verbose ${MYTOOLS}
- ln -nfs ${TOOLSDIR}/bin/vim ${TOOLSDIR}/bin/vi
- ${BREW} install -s --verbose the_silver_searcher
- full-release: tidyup
- echo "${FULLDATE}" >> ${TOOLSDIR}/tools-builder.full.datetime
- echo "${GITREVISION}" >> ${TOOLSDIR}/tools-builder.full.gitrevision
- cd ${INSTALLDIR} && mv -v ${TOOLS} ${TOOLS}-${DATESTAMP}
- cd ${INSTALLDIR} && tar -czvf ${EXPORTDIR}/${TOOLS}-${DATESTAMP}.tar.gz ${TOOLS}-${DATESTAMP}
- cd ${INSTALLDIR} && mv -v ${TOOLS}-${DATESTAMP} ${TOOLS}
- upgrade:
- echo "${FULLDATE}" >> ${TOOLSDIR}/tools-builder.upgrade.datetime
- echo "${GITREVISION}" >> ${TOOLSDIR}/tools-builder.upgrade.gitrevision
- brew update
- brew upgrade
- brew unlink python
- brew link --overwrite python
- pip install ${PIPMODULES} -U --ignore-installed
- insecure:
- echo insecure >> ~/.curlrc
- git config --global http.sslVerify false
- # Housekeeping
- push-release:
- scp ${EXPORTDIR}/${TOOLS}-${DATESTAMP}.tar.gz ${DEPOT}
- tidyup:
- ${BREW} config
- ${BREW} cleanup
- -${BREW} doctor
- clean:
- cd ${INSTALLDIR} && rm -vrf ${TOOLS} ${TOOLS}-bootstrap-${DATESTAMP} ${TOOLS}-${DATESTAMP}