ifeq ($(project),)
PROJECT_NAME := $(notdir $(PWD))
else
PROJECT_NAME := $(project)
endif
export PROJECT_NAME
VERSION :=$(shell cat version)
export VERSION
TIME :=$(shell date +%s)
export TIME
OS :=$(shell uname -s)
export OS
OS_VERSION :=$(shell uname -r)
export OS_VERSION
ARCH :=$(shell uname -m)
export ARCH
ifeq ($(ARCH),x86_64)
TRIPLET :=x86_64-linux-gnu
export TRIPLET
endif
ifeq ($(ARCH),arm64)
TRIPLET :=aarch64-linux-gnu
export TRIPLET
endif
ifeq ($(ARCH),arm64)
TRIPLET :=aarch64-linux-gnu
export TRIPLET
endif
HOMEBREW :=$(shell which brew || false)
RUSTUP_INIT_SKIP_PATH_CHECK=yes
TOOLCHAIN=stable
Z= ifneq ($(toolchain),)
ifeq ($(toolchain),nightly)
TOOLCHAIN=nightly
Z=-Z unstable-options
endif
ifeq ($(toolchain),stable)
TOOLCHAIN=stable
Z= endif
endif
export RUSTUP_INIT_SKIP_PATH_CHECK
export TOOLCHAIN
export Z
SUBMODULES=:$(shell cat .gitmodules | grep path | cut -d ' ' -f 3)
export SUBMODULES
ifeq ($(verbose),true)
VERBOSE :=-v
else
VERBOSE :=$(verbose)
endif
export VERBOSE
ifeq ($(reuse),true)
REUSE :=-r
else
REUSE :=$(reuse)
endif
export REUSE
ifeq ($(bind),true)
BIND :=-b
else
BIND :=$(bind)
endif
export BIND
ifeq ($(token),)
GITHUB_TOKEN =$(shell touch ~/GITHUB_TOKEN.txt && cat ~/GITHUB_TOKEN.txt || echo "0")
else
GITHUB_TOKEN :=$(shell echo $(token))
endif
export GITHUB_TOKEN
export $(cat ~/GITHUB_TOKEN) && make act
PYTHON := $(shell which python)
export PYTHON
PYTHON2 := $(shell which python2)
export PYTHON2
PYTHON3 := $(shell which python3)
export PYTHON3
PIP := $(shell which pip)
export PIP
PIP2 := $(shell which pip2)
export PIP2
PIP3 := $(shell which pip3)
export PIP3
PYTHON_VENV := $(shell python -c "import sys; sys.stdout.write('1') if hasattr(sys, 'base_prefix') else sys.stdout.write('0')")
PYTHON3_VENV := $(shell python3 -c "import sys; sys.stdout.write('1') if hasattr(sys, 'real_prefix') else sys.stdout.write('0')")
python_version_full := $(wordlist 2,4,$(subst ., ,$(shell python3 --version 2>&1)))
python_version_major := $(word 1,${python_version_full})
python_version_minor := $(word 2,${python_version_full})
python_version_patch := $(word 3,${python_version_full})
my_cmd.python.3 := $(PYTHON3) some_script.py3
my_cmd := ${my_cmd.python.${python_version_major}}
PYTHON_VERSION := ${python_version_major}.${python_version_minor}.${python_version_patch}
PYTHON_VERSION_MAJOR := ${python_version_major}
PYTHON_VERSION_MINOR := ${python_version_minor}
export python_version_major
export python_version_minor
export python_version_patch
export PYTHON_VERSION
GIT_USER_NAME := $(shell git config user.name || echo $(PROJECT_NAME))
export GIT_USER_NAME
GH_USER_NAME := $(shell git config user.name || echo $(PROJECT_NAME))
GH_USER_REPO := $(GH_USER_NAME).github.io
GH_USER_SPECIAL_REPO := $(GH_USER_NAME)
KB_USER_REPO := $(GH_USER_NAME).keybase.pub
ifneq ($(ghuser),)
GH_USER_NAME := $(ghuser)
GH_USER_SPECIAL_REPO := $(ghuser)/$(ghuser)
endif
ifneq ($(kbuser),)
KB_USER_NAME := $(kbuser)
KB_USER_REPO := $(kbuser).keybase.pub
endif
export GIT_USER_NAME
export GH_USER_REPO
export GH_USER_SPECIAL_REPO
export KB_USER_REPO
GIT_USER_EMAIL := $(shell git config user.email || echo $(PROJECT_NAME))
export GIT_USER_EMAIL
GIT_SERVER := https://github.com
export GIT_SERVER
GIT_SSH_SERVER := git@github.com
export GIT_SSH_SERVER
GIT_PROFILE := $(shell git config user.name || echo $(PROJECT_NAME))
export GIT_PROFILE
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null || \
echo $(PROJECT_NAME))
export GIT_BRANCH
GIT_HASH := $(shell git rev-parse --short HEAD 2>/dev/null || \
echo $(PROJECT_NAME))
export GIT_HASH
GIT_PREVIOUS_HASH := $(shell git rev-parse --short master@{1} 2>/dev/null || \
echo $(PROJECT_NAME))
export GIT_PREVIOUS_HASH
GIT_REPO_ORIGIN := $(shell git remote get-url origin 2>/dev/null || \
echo $(PROJECT_NAME))
export GIT_REPO_ORIGIN
GIT_REPO_NAME := $(PROJECT_NAME)
export GIT_REPO_NAME
GIT_REPO_PATH := $(HOME)/$(GIT_REPO_NAME)
export GIT_REPO_PATH
.PHONY:- help
-:
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?##/ {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
@echo
more:
@sed -n 's/^##//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'
-include Makefile
initialize:
git submodule update --init --recursive
detect:
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && type -P brew >/tmp/gnostr.log && \
export LIBRARY_PATH='$(LIBRARY_PATH):$(brew --prefix)/lib' || echo"
ifneq ($(shell id -u),0)
@echo
@echo $(shell id -u -n) 'not root'
@echo
endif
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install automake || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install autoconf || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install automake || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install cmake --cask || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install coreutils || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install expat || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install gettext || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install git-archive-all || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install git-gui || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install glib-openssl || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install golang || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install help2man || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install libtool || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install mercurial || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install node@14 || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install pandoc || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install pkg-config || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install protobuf || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install pipx || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install python3 || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install rustup || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install secp256k1 || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install tcl-tk || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install virtualenv || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew link --overwrite virtualenv || echo "
bash -c "[ '$(shell uname -s)' == 'Darwin' ] && brew install zlib || echo "
ifneq ($(shell id -u),0)
@echo
@echo $(shell id -u -n) 'not root'
@echo
endif
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
type -P brew >/tmp/gnostr.log && \
export LIBRARY_PATH='$(LIBRARY_PATH):$(brew --prefix)/lib' || echo"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get update 2>/dev/null || \
apk add update || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install autoconf 2>/dev/null || \
apk add autoconf || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install bison 2>/dev/null || \
apk add bison || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install bsdmainutils 2>/dev/null || \
apk add util-linux || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install build-essential 2>/dev/null || \
apk add alpine-sdk || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install cargo 2>/dev/null || \
apk add cargo || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install clang 2>/dev/null || \
apk add clang || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install cmake-curses-gui 2>/dev/null || \
apk add extra-cmake-modules || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install cmake 2>/dev/null || \
apk add cmake || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install expat 2>/dev/null || \
apk add expat || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install gettext 2>/dev/null || \
apk add gettext || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install golang-go 2>/dev/null || \
apk add go || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install help2man 2>/dev/null || \
apk add help2man || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install libcurl4-openssl-dev 2>/dev/null || \
apk add curl-dev || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install libssl-dev 2>/dev/null || \
apk add openssl-dev || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install libtool 2>/dev/null || \
apk add libtool || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install mercurial 2>/dev/null || \
apk add mercurial || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install npm 2>/dev/null || \
apk add npm || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install pandoc 2>/dev/null || \
echo"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install pipx 2>/dev/null || \
echo"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install pkg-config 2>/dev/null || \
apk add pkgconfig || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install protobuf-compiler 2>/dev/null || \
apk add protobuf || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install python3 2>/dev/null || \
apk add python3 || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install python3-pip 2>/dev/null || \
apk add py3-pip || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install python-is-python3 2>/dev/null || \
echo "
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install tcl-dev 2>/dev/null || \
echo "
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install util-linux 2>/dev/null || \
apk add util-linux || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install tcl-dev 2>/dev/null || \
apk add tcl-dev || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install virtualenv 2>/dev/null || \
apk add py3-virtualenv || true"
bash -c "[ '$(shell uname -s)' == 'Linux' ] && \
$(SUDO) apt-get install zlib1g-dev 2>/dev/null || \
echo "
@rm -rf $(HOME)/.gvm || echo "not removing ~/.gvm"
@bash -c "bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) || echo 'not installing gvm...'"
bash -c "[ '$(shell uname -m)' == 'x86_64' ] && echo 'is x86_64' || echo 'not x86_64';"
bash -c "[ '$(shell uname -m)' == 'arm64' ] && [ '$(shell uname -s)' == 'Darwin' ] && type -P brew && brew install pandoc || echo 'not arm64 AND Darwin';"
bash -c "[ '$(shell uname -m)' == 'i386' ] && echo 'is i386' || echo 'not i386';"
$(shell echo which rustup) || curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y --no-modify-path --default-toolchain stable --profile default
@bash -c "curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash && export NVM_DIR='$(HOME)/.nvm'; [ -s '$(NVM_DIR)/nvm.sh' ] && \. '$(NVM_DIR)/nvm.sh'; [ -s '$(NVM_DIR)/bash_completion' ] && \. '$(NVM_DIR)/bash_completion' &"
bash -c "which autoconf || echo "
bash -c "which automake || echo "
bash -c "which brew || echo "
bash -c "which cargo || echo "
bash -c "which cmake || echo "
bash -c "which go || echo "
bash -c "which node || echo "
bash -c "which rustup || echo "
.PHONY: report
report:
@echo ''
@echo 'TIME=${TIME}'
@echo 'PROJECT_NAME=${PROJECT_NAME}'
@echo 'VERSION=${VERSION}'
@echo ''
@echo 'OS=${OS}'
@echo 'OS_VERSION=${OS_VERSION}'
@echo 'ARCH=${ARCH}'
@echo ''
@echo 'SUBMODULES=${SUBMODULES}'
@echo ''
@echo 'PYTHON=${PYTHON}'
@echo 'PYTHON2=${PYTHON2}'
@echo 'PYTHON3=${PYTHON3}'
@echo ''
@echo 'PIP=${PIP}'
@echo 'PIP2=${PIP2}'
@echo 'PIP3=${PIP3}'
@echo ''
@echo 'PYTHON_VENV=${PYTHON_VENV}'
@echo 'PYTHON3_VENV=${PYTHON3_VENV}'
@echo ''
@echo 'GIT_USER_NAME=${GIT_USER_NAME}'
@echo 'GH_USER_REPO=${GH_USER_REPO}'
@echo 'GH_USER_SPECIAL_REPO=${GH_USER_SPECIAL_REPO}'
@echo 'KB_USER_REPO=${KB_USER_REPO}'
@echo 'GIT_USER_EMAIL=${GIT_USER_EMAIL}'
@echo 'GIT_SERVER=${GIT_SERVER}'
@echo 'GIT_PROFILE=${GIT_PROFILE}'
@echo 'GIT_BRANCH=${GIT_BRANCH}'
@echo 'GIT_HASH=${GIT_HASH}'
@echo 'GIT_PREVIOUS_HASH=${GIT_PREVIOUS_HASH}'
@echo 'GIT_REPO_ORIGIN=${GIT_REPO_ORIGIN}'
@echo 'GIT_REPO_NAME=${GIT_REPO_NAME}'
@echo 'GIT_REPO_PATH=${GIT_REPO_PATH}'
@echo ''
@echo 'VERBOSE=${VERBOSE}'
@echo 'REUSE=${REUSE}'
@echo 'BIND=${BIND}'
checkbrew:
ifeq ($(HOMEBREW),)
@/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
else
@type -P brew && brew install wxWidgets openssl@3.0 gettext
$(MAKE) detect
endif
tag:
tags:tag
@git tag $(OS)-$(OS_VERSION)-$(ARCH)-$(shell date +%s)
@git push -f --tags || echo "unable to push tags..."
.PHONY: nvm
.ONESHELL:
nvm:
@echo "$(NODE_VERSION)" > .nvmrc
@curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash || git pull -C $(HOME)/.nvm && export NVM_DIR="$(HOME)/.nvm" && [ -s "$(NVM_DIR)/nvm.sh" ] && \. "$(NVM_DIR)/nvm.sh" && [ -s "$(NVM_DIR)/bash_completion" ] && \. "$(NVM_DIR)/bash_completion" && nvm install $(NODE_VERSION) && nvm use $(NODE_VERSION)
@source ~/.bashrc && nvm alias $(NODE_ALIAS) $(NODE_VERSION) &
nvm-clean:
@rm -rf ~/.nvm
-include gnostr.mk
-include gnostr-act.mk
-include gnostr-bot.mk
-include docker.mk
-include venv.mk
-include clean.mk
-include cargo.mk
-include tests.mk
-include go.mk