From 6bdce6a5a657ef9d7eea1fbeec36eb0b88518d45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20F=20R=C3=B8dseth?= Date: Thu, 11 Jan 2018 12:48:57 +0100 Subject: [PATCH 1/3] Use pymake instead of GNU Make --- .gitmodules | 3 +++ Makefile | 34 +++++++++++++++++++++++++--------- src/Makefile.in | 6 ++++-- src/pymake | 1 + src/sakemake.in | 2 +- 5 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 .gitmodules create mode 160000 src/pymake diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..18ef2b7 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "pymake"] + path = src/pymake + url = https://github.com/mozilla/pymake diff --git a/Makefile b/Makefile index 8df5c9b..82e0aa9 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: clean generate uninstall src/Makefile src/sakemake +.PHONY: clean generate install_pymake src/Makefile src/pymake/make.py src/sakemake uninstall uninstall_pymake NAME := sakemake ALIAS := sm @@ -10,15 +10,16 @@ SRCDIR := ${ROOTDIR}/src # macOS detection UNAME_S := $(shell uname -s) +PYMAKE ?= ${SRCDIR}/pymake/make.py ifeq ($(UNAME_S),Darwin) PREFIX ?= /usr/local - MAKE ?= make + PYMAKE ?= ${PREFIX}/pymake/make.py else ifeq ($(UNAME_S),FreeBSD) PREFIX ?= /usr/local - MAKE ?= gmake + PYMAKE ?= ${PREFIX}/pymake/make.py else PREFIX ?= /usr - MAKE ?= make + PYMAKE ?= ${PREFIX}/pymake/make.py endif VERSION := $(shell grep -F '* Version: ' README.md | cut -d' ' -f3) @@ -30,15 +31,30 @@ else pkgdir ?= ${PWD}/pkg endif -generate: src/Makefile src/sakemake +generate: src/Makefile src/sakemake src/pymake/make.py src/Makefile: src/Makefile.in - @sed "s,@@PREFIX@@,${PREFIX},g;s,@@MAKE@@,${MAKE},g;s,@@VERSION@@,${VERSION},g" $< > $@ + @sed "s,@@PREFIX@@,${PREFIX},g;s,@@PYMAKE@@,${PYMAKE},g;s,@@VERSION@@,${VERSION},g" $< > $@ src/sakemake: src/sakemake.in - @sed "s,@@PREFIX@@,${PREFIX},g;s,@@MAKE@@,${MAKE},g;s,@@VERSION@@,${VERSION},g" $< > $@ + @sed "s,@@PREFIX@@,${PREFIX},g;s,@@PYMAKE@@,${PYMAKE},g;s,@@VERSION@@,${VERSION},g" $< > $@ -install: generate +src/pymake/make.py: + @sed 's/env python$$/env python2/g' -i $@ + +install_pymake: + @cp -r "${SRCDIR}/pymake" "${DESTDIR}${PREFIX}/share/${NAME}/" + @rm -rf "${DESTDIR}${PREFIX}/share/${NAME}/pymake/tests" + @find "${DESTDIR}${PREFIX}/share/${NAME}" -type d -exec chmod 755 {} \; + @find "${DESTDIR}${PREFIX}/share/${NAME}" -type f -exec chmod 644 {} \; + @chmod 755 "${DESTDIR}${PREFIX}/share/${NAME}/pymake/make.py" + @find "${DESTDIR}${PREFIX}/share/${NAME}" -type d -name .git -delete + @find "${DESTDIR}${PREFIX}/share/${NAME}" -type f -name ".*ignore" -delete + +uninstall_pymake: + @rm -rf "${DESTDIR}${PREFIX}/share/${NAME}/pymake" + +install: generate install_pymake @install -d "${DESTDIR}${PREFIX}/bin" @install -m755 "${SRCDIR}/${NAME}" "${DESTDIR}${PREFIX}/bin/${NAME}" @ln -sf "${PREFIX}/bin/${NAME}" "${DESTDIR}${PREFIX}/bin/${ALIAS}" @@ -48,7 +64,7 @@ install: generate @install -d "${DESTDIR}${PREFIX}/share/licenses/${NAME}" @install -m644 "${ROOTDIR}/LICENSE" "${DESTDIR}${PREFIX}/share/licenses/${NAME}/LICENSE" -uninstall: +uninstall: uninstall_pymake @-rm -f "${DESTDIR}${PREFIX}/bin/${NAME}" @-rm -f "${DESTDIR}${PREFIX}/bin/${ALIAS}" @-rmdir "${DESTDIR}${PREFIX}/bin" 2>/dev/null || true diff --git a/src/Makefile.in b/src/Makefile.in index 6ffc280..14ae884 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -10,10 +10,12 @@ patch_paths ?= 0 run ?= 0 std ?= c++17 -MAKE ?= @@MAKE@@ +PYMAKE ?= @@PYMAKE@@ PREFIX ?= @@PREFIX@@ system_include_dir ?= ${PREFIX}/include +CXX ?= c++ + # the name of the installed executable and related directories NAME ?= $(shell basename $(CURDIR)) @@ -55,7 +57,7 @@ all: build version: @echo sakemake @@VERSION@@ - @${MAKE} --version | head -1 + @${PYMAKE} --version | head -1 @echo ' SCons '$$(scons --version | grep ": v" | head -1 | cut -d: -f2 | cut -dv -f2 | cut -b-5) build: diff --git a/src/pymake b/src/pymake new file mode 160000 index 0000000..034ae9e --- /dev/null +++ b/src/pymake @@ -0,0 +1 @@ +Subproject commit 034ae9ea5b726e03647d049147c5dbf688e94aaf diff --git a/src/sakemake.in b/src/sakemake.in index 6847448..f9b55b1 100644 --- a/src/sakemake.in +++ b/src/sakemake.in @@ -25,4 +25,4 @@ sm small - build a smaller executable dog fi -@@MAKE@@ --no-print-directory -f "$SAKEMAKE_DIR/Makefile" "$@" +@@PYMAKE@@ --no-print-directory -f "$SAKEMAKE_DIR/Makefile" "$@" From e933344136f74f26a52893bb58e014da5e6a3584 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20F=20R=C3=B8dseth?= Date: Thu, 11 Jan 2018 12:53:04 +0100 Subject: [PATCH 2/3] Undo changes to pymake after installation --- Makefile | 7 +++++-- install | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100755 install diff --git a/Makefile b/Makefile index 82e0aa9..e735b51 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: clean generate install_pymake src/Makefile src/pymake/make.py src/sakemake uninstall uninstall_pymake +.PHONY: clean generate install_pymake src/Makefile src/pymake/make.py src/sakemake uninstall uninstall_pymake unpatch NAME := sakemake ALIAS := sm @@ -42,6 +42,9 @@ src/sakemake: src/sakemake.in src/pymake/make.py: @sed 's/env python$$/env python2/g' -i $@ +unpatch: + @sed 's/env python2$$/env python/g' -i src/pymake/make.py + install_pymake: @cp -r "${SRCDIR}/pymake" "${DESTDIR}${PREFIX}/share/${NAME}/" @rm -rf "${DESTDIR}${PREFIX}/share/${NAME}/pymake/tests" @@ -54,7 +57,7 @@ install_pymake: uninstall_pymake: @rm -rf "${DESTDIR}${PREFIX}/share/${NAME}/pymake" -install: generate install_pymake +install: generate install_pymake unpatch @install -d "${DESTDIR}${PREFIX}/bin" @install -m755 "${SRCDIR}/${NAME}" "${DESTDIR}${PREFIX}/bin/${NAME}" @ln -sf "${PREFIX}/bin/${NAME}" "${DESTDIR}${PREFIX}/bin/${ALIAS}" diff --git a/install b/install new file mode 100755 index 0000000..8749b33 --- /dev/null +++ b/install @@ -0,0 +1,2 @@ +#!/bin/sh +python2 src/pymake/make.py -f Makefile install From f07cf3f8e612a93cd32cbc18c64d78d911883b80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20F=20R=C3=B8dseth?= Date: Thu, 11 Jan 2018 13:30:49 +0100 Subject: [PATCH 3/3] Not a good direction, abandoning branch --- Makefile | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index e735b51..1cde9bb 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: clean generate install_pymake src/Makefile src/pymake/make.py src/sakemake uninstall uninstall_pymake unpatch +.PHONY: clean generate install_pymake install_sakemake src/Makefile src/pymake/make.py src/sakemake uninstall uninstall_pymake install NAME := sakemake ALIAS := sm @@ -31,7 +31,7 @@ else pkgdir ?= ${PWD}/pkg endif -generate: src/Makefile src/sakemake src/pymake/make.py +generate: src/Makefile src/sakemake src/Makefile: src/Makefile.in @sed "s,@@PREFIX@@,${PREFIX},g;s,@@PYMAKE@@,${PYMAKE},g;s,@@VERSION@@,${VERSION},g" $< > $@ @@ -39,12 +39,6 @@ src/Makefile: src/Makefile.in src/sakemake: src/sakemake.in @sed "s,@@PREFIX@@,${PREFIX},g;s,@@PYMAKE@@,${PYMAKE},g;s,@@VERSION@@,${VERSION},g" $< > $@ -src/pymake/make.py: - @sed 's/env python$$/env python2/g' -i $@ - -unpatch: - @sed 's/env python2$$/env python/g' -i src/pymake/make.py - install_pymake: @cp -r "${SRCDIR}/pymake" "${DESTDIR}${PREFIX}/share/${NAME}/" @rm -rf "${DESTDIR}${PREFIX}/share/${NAME}/pymake/tests" @@ -53,11 +47,12 @@ install_pymake: @chmod 755 "${DESTDIR}${PREFIX}/share/${NAME}/pymake/make.py" @find "${DESTDIR}${PREFIX}/share/${NAME}" -type d -name .git -delete @find "${DESTDIR}${PREFIX}/share/${NAME}" -type f -name ".*ignore" -delete + @sed 's/env python$$/env python2/g' -i "${DESTDIR}${PREFIX}/share/${NAME}/pymake/make.py" uninstall_pymake: @rm -rf "${DESTDIR}${PREFIX}/share/${NAME}/pymake" -install: generate install_pymake unpatch +install_sakemake: generate @install -d "${DESTDIR}${PREFIX}/bin" @install -m755 "${SRCDIR}/${NAME}" "${DESTDIR}${PREFIX}/bin/${NAME}" @ln -sf "${PREFIX}/bin/${NAME}" "${DESTDIR}${PREFIX}/bin/${ALIAS}" @@ -67,6 +62,8 @@ install: generate install_pymake unpatch @install -d "${DESTDIR}${PREFIX}/share/licenses/${NAME}" @install -m644 "${ROOTDIR}/LICENSE" "${DESTDIR}${PREFIX}/share/licenses/${NAME}/LICENSE" +install: install_sakemake install_pymake + uninstall: uninstall_pymake @-rm -f "${DESTDIR}${PREFIX}/bin/${NAME}" @-rm -f "${DESTDIR}${PREFIX}/bin/${ALIAS}"