forked from millejoh/emacs-ipython-notebook
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
158 lines (140 loc) · 6.61 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
export EMACS ?= $(shell which emacs)
export CASK := $(shell which cask)
TEST_VERSION := $(shell python -c "from yq import cli; import sys; sys.exit(cli())" .jobs.build.strategy.matrix.emacs_version .github/workflows/test.yml | jq .[] | egrep "[0-9]" | sort -n | head -1)
ifeq ($(CASK),)
$(error Please install CASK at https://cask.readthedocs.io/en/latest/guide/installation.html)
endif
CASK_DIR := $(shell EMACS=$(EMACS) $(CASK) package-directory || exit 1)
SRC=$(shell $(CASK) files)
PKBUILD=2.3
ELCFILES = $(SRC:.el=.elc)
ifeq ($(TRAVIS_PULL_REQUEST_SLUG),)
TRAVIS_PULL_REQUEST_SLUG := $(shell git config --global user.name)/$(shell basename `git rev-parse --show-toplevel`)
endif
ifeq ($(TRAVIS_PULL_REQUEST_BRANCH),)
TRAVIS_PULL_REQUEST_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
endif
ifeq ($(TRAVIS),true)
ifeq ($(TRAVIS_PULL_REQUEST_SHA),)
TRAVIS_PULL_REQUEST_SHA := $(shell if git show-ref --quiet --verify origin/$(TRAVIS_PULL_REQUEST_BRANCH) ; then git rev-parse origin/$(TRAVIS_PULL_REQUEST_BRANCH) ; fi))
endif
endif
.DEFAULT_GOAL := test-compile
README.rst: cask README.in.rst lisp/ein.el lisp/ein-notebook.el
$(CASK) eval "(progn \
(add-to-list 'load-path \"./lisp\") \
(load \"ein-notebook\") \
(describe-minor-mode \"ein:notebook-mode\") \
(with-current-buffer \"*Help*\" (princ (buffer-string))))" 2>/dev/null \
| tools/readme-sed.sh "KEYS NOTEBOOK" README.in.rst "key.*binding" > README.rst0
perl -ne "s/^((\s*)C-c C-c(\s+).*)$$/\$${1}\n\$${2}C-u C-c C-c \$${3}ein:worksheet-execute-all-cells/; print" README.rst0 > README.rst1
perl -ne "s/^(\s*)\S+.*CI VERSION.*$$/\$${1}$(TEST_VERSION)/; print" README.rst1 > README.rst0
grep ';;' lisp/ein.el \
| awk '/;;;\s*Commentary/{within=1;next}/;;;\s*/{within=0}within' \
| sed -e 's/^\s*;;*\s*//g' \
| tools/readme-sed.sh "COMMENTARY" README.rst0 > README.rst
rm README.rst0 README.rst1
.PHONY: autoloads
autoloads:
$(CASK) emacs -Q --batch -l package --eval "(let ((v (format \"%s.%s\" emacs-major-version emacs-minor-version))) (custom-set-variables (backquote (package-user-dir ,(concat \".cask/\" v)))))" -f package-initialize --eval "(package-generate-autoloads \"ein\" \"./lisp\")"
.PHONY: clean
clean:
$(CASK) clean-elc
rm -rf test/test-install
rm -f test/curl-cookie-jar
rm -rf log
rm -f features/[Uu]ntitled*
rm -f features/Renamed.ipynb
rm -f ert-profile*
rm -rf features/test-repo
rm -f gmon.out
.PHONY: cask
cask: $(CASK_DIR)
$(CASK_DIR): Cask
$(CASK) install
touch $(CASK_DIR)
.PHONY: test-compile
test-compile: clean
! ($(CASK) eval "(let ((byte-compile-error-on-warn t)) (cask-cli/build))" 2>&1 | egrep -a "(Warning|Error):") ; (ret=$$? ; $(CASK) clean-elc && exit $$ret)
.PHONY: quick
quick: $(CASK_DIR) autoloads test-compile test-ob-ein-recurse test-unit
# Last I tried, I can get jupyterhub to launch a user server
# on a random port 58153, but that instance is still-born, i.e.,
# it posts 404 from the browser. SimpleLocalProcessSpawner
# results in Module not found.
.PHONY: test-jupyterhub
test-jupyterhub: test-compile
$(CASK) exec ecukes --tags @jupyterhub --reporter magnars
.PHONY: test
test: quick test-int
.PHONY: test-int
test-int: clean
$(CASK) exec ecukes --reporter magnars --debug
.PHONY: test-unit
test-unit:
$(CASK) exec ert-runner -L ./lisp -L ./test -l test/testein.el test/test-ein*.el
.PHONY: test-ob-ein-recurse
test-ob-ein-recurse:
$(CASK) eval "(progn (require 'cl) (custom-set-variables (quote (org-babel-load-languages (quote ((emacs-lisp . t) (ein . t)))))) (org-version))"
.PHONY: travis-install
travis-install:
mkdir -p test/test-install
if [ ! -s "test/test-install/$(PKBUILD).tar.gz" ] ; then \
cd test/test-install ; curl -sLOk https://github.com/melpa/package-build/archive/$(PKBUILD).tar.gz ; fi
cd test/test-install ; tar xfz $(PKBUILD).tar.gz
cd test/test-install ; rm -f $(PKBUILD).tar.gz
cd test/test-install/package-build-$(PKBUILD) ; make -s loaddefs
mkdir -p test/test-install/recipes
cd test/test-install/recipes ; curl -sLOk https://raw.githubusercontent.com/melpa/melpa/master/recipes/ein
$(EMACS) -Q --batch -L test/test-install/package-build-$(PKBUILD) \
--eval "(require 'package-build)" \
--eval "(require 'subr-x)" \
--eval "(package-initialize)" \
--eval "(add-to-list 'package-archives '(\"melpa\" . \"http://melpa.org/packages/\"))" \
--eval "(package-refresh-contents)" \
--eval "(setq rcp (package-recipe-lookup \"ein\"))" \
--eval "(unless (file-exists-p package-build-archive-dir) \
(make-directory package-build-archive-dir))" \
--eval "(let* ((my-repo \"$(TRAVIS_PULL_REQUEST_SLUG)\") \
(my-branch \"$(TRAVIS_PULL_REQUEST_BRANCH)\") \
(my-commit \"$(TRAVIS_PULL_REQUEST_SHA)\")) \
(oset rcp :repo my-repo) \
(oset rcp :branch my-branch) \
(oset rcp :commit my-commit))" \
--eval "(let ((version (package-build--checkout rcp))) \
(delete-directory (expand-file-name (concat \"ein-\" version) package-user-dir) t) \
(package-build--package rcp version))" \
--eval "(package-install-file (car (file-expand-wildcards (concat package-build-archive-dir \"ein*.tar\"))))" 2>&1 | tee /tmp/test-install.out
! ( egrep -a "Error: " /tmp/test-install.out )
.PHONY: dist-clean
dist-clean:
rm -rf dist
.PHONY: dist
dist: dist-clean autoloads
$(CASK) package
.PHONY: backup-melpa
backup-melpa:
$(EMACS) -Q --batch --eval "(package-initialize)" --eval \
"(with-temp-buffer \
(insert-file-contents-literally (car (file-expand-wildcards \"dist/ein*.tar\"))) \
(tar-mode) \
(let* ((my-desc (package-tar-file-info)) \
(name (package-desc-name my-desc)) \
(other-pkgs (cdr (assq name package-alist)))) \
(mapc (lambda (odesc) \
(let* ((odir (package-desc-dir odesc)) \
(parent (file-name-directory odir)) \
(leaf (file-name-nondirectory odir))) \
(if (equal (package-desc-version my-desc) \
(package-desc-version odesc)) \
(delete-directory odir t) \
(rename-file odir \
(expand-file-name (format \"BACKUP-%s\" leaf) parent) \
t)))) \
other-pkgs)))"
.PHONY: install
install: dist backup-melpa
$(EMACS) -Q --batch --eval "(package-initialize)" \
--eval "(add-to-list 'package-archives '(\"shmelpa\" . \"https://shmelpa.commandlinesystems.com/packages/\"))" \
--eval "(package-refresh-contents)" \
--eval "(package-install-file (car (file-expand-wildcards \"dist/ein*.tar\")))"