Newer
Older
tools-builder / makefile
# 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 = 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}