-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
195 lines (142 loc) · 4.42 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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
##
## Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu>
## Creation Date: Sun Aug 15 11:16:54 CEST 2021
## Last Modified: Thu 23 Sep 2021 07:49:49 PM PDT
## Syntax: GNU Makefile
## Filename: Makefile
## vim: ts=3
##
## Description: Makefile to run tasks for nifc-humdrum-data repository.
##
## Usage: Type "make" to see list of common make targets. To update
## everything type "make update" if the server has already
## been set up.
##
.PHONY: kern
##############################
##
## Configuration variables:
##
# KERNREPOS: This is a list of all of the directories where Humdrum files
# are located that should be incorporated into this data server for the
# files.
KERNREPOS = ../humdrum-chopin-first-editions ../humdrum-polish-scores
# TARGETDIR: The directory into which symbolic links to Humdrum files in the
# KERNREPOS directory list are located.
TARGETDIR = kern
# Log directory user/group for write permssions:
WEBSERVERUSER = apache
WEBSERVERGROUP = apache
# Location where activity logs are kept:
LOGDIR = logs
##############################
##
## all -- List makefile targets.
##
all:
@echo
@echo "Makefile targets:"
@echo " make kern -- Create symbolic links to digital scores."
@echo " make update -- Run \"make kern\" then update cache."
@echo " make update-nohup -- Run \"make kern\" then update cache in background."
@echo " make count -- Count the number of linked kern files."
@echo
@echo " Initializtion targets:";
@echo " make initialize -- Initial setup before using system."
@echo " make check-programs -- Check if necessary programs are installed."
@echo
##############################
##
## update -- Prepare kern directory, then update cache files.
## The files in the ../humdrum-polish-scores repository should
## be up to date before running this command
## (and humdrum-chopin-first-editions).
##
un: update-nohup
nu: update-nohup
nohup-update: update-nohup
update-nohup: kern
nohup make update >& nohup.out &
@echo Saving processing text in nohup.out.
# https://stackoverflow.com/questions/4842424/list-of-ansi-color-escape-sequences
@echo -e "\033[31mType \"tail -f nohup.out\" to monitor progress in realtime.\033[0m"
update: kern
(cd cache; make update)
##############################
##
## check-programs: Check to see that all programs necessary to
## generate derivative files in the cache are available on
## the command-line. This is good to run when installing,
## but also good to check after the operating system has
## been upgraded.
##
cp: check-programs
check-programs:
bin/checkPrograms -v
##############################
##
## initialize -- First-time setup commands.
##
SETSEBOOL := $(shell which setsebool 2> /dev/null)
CHCON := $(shell which chcon 2> /dev/null)
initialize:
mkdir -p $(LOGDIR)
chown -R $(WEBSERVERUSER).$(WEBSERVERGROUP) $(LOGDIR)
# SELinux setup:
# Allow webserver to execute scripts:
ifdef SETSEBOOL
setsebool -P httpd_execmem 1
endif
# Allow the webserver to write to the logs directory:
ifdef CHCON
chcon -R -t httpd_sys_content_t $(LOGDIR)
endif
# Allow the following scripts to be run by the webserver:
ifdef CHCON
chcon system_u:object_r:httpd_exec_t:s0 bin/lyrics
endif
##############################
##
## kern -- create symbolic links to Humdrum files from data
## repositories stored elsewhere (Add kern directories
## KERNREPOS variable to include them in this system).
##
kern:
bin/makeKernLinks -r -t $(TARGETDIR) $(KERNREPOS)
@echo "kern directory has $$(ls kern/*.krn | wc -l | sed 's/^ +//') files"
# Check for bad character encodings:
-file kern/*.krn | grep -v UTF-8 | grep -v ASCII
##############################
##
## kern-verbose --
##
kv: kern-verbose
kern-verbose:
bin/makeKernLinks -r -v -t $(TARGETDIR) $(KERNREPOS)
@echo "kern directory has $$(ls kern/*.krn | wc -l | sed 's/^ +//') files"
# Check for bad character encodings:
-file kern/*.krn | grep -v UTF-8 | grep -v ASCII
##############################
##
## count-kern-files --
##
count: count-kern-files
count-kern-files:
ls $(TARGETDIR)/*.krn | wc -l
##############################
##
## check-kern --
##
ck: check-kern
check-kern:
humdrum kern/*.krn
##############################
##
## erase-purge --
##
ep: erase-purge
purge-erase: erase-purge
purged-erase: erase-purge
erase-purged: erase-purge
erase-purge:
(cd cache; make erase-purge)