Project

General

Profile

Preparing a Mac machine for Bilder » History » Version 38

John Cary, 01/30/2019 06:57 AM

1 2 Redmine Admin
# Preparing a Mac machine for Bilder #
2 1 Redmine Admin
3 24 John Cary
__If all you need is python and sphinx__ (e.g., for builds of documentation), then you need only
4
5
* XCode with command line tools
6
* Latex installed as noted below
7
8
and then you can add the arguments,  -W python, and your installed Python and CMake will be used if your path is correct.
9
10
11 2 Redmine Admin
## Bilder on Darwin ##
12 1 Redmine Admin
13 16 John Cary
Darwin comes with bash, so it is Bilder ready for the most part.
14 1 Redmine Admin
15 16 John Cary
### OS X Versions ###
16 1 Redmine Admin
17 16 John Cary
Yosemite's XCode that supports C++ 11 by default.
18 1 Redmine Admin
19 16 John Cary
El Capitan's clang compiler supports OpenMP.
20
21 1 Redmine Admin
## Case insensitive file system ##
22
23
We have noted and filed bugs for CMake errors on OS X when using the case-sensitive file system. To fix we use the case-insensitive file system. There may be problems with various packages and the case-insensitive file system.
24
25 2 Redmine Admin
## C and C++ compilers and Xcode command line tools ##
26 1 Redmine Admin
27
Install Xcode. To obtain version 6, visit https://developer.apple.com/xcode/download, then at the bottom third of the page, click on the "Additional Tools" link . Sign in with your Apple ID.  
28
29
~~~~~~
30 31 John Cary
sudo xcode-select --install
31 1 Redmine Admin
~~~~~~
32
33 35 John Cary
With mojave, one must additionally
34
35
~~~~~~
36
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
37
~~~~~~
38
39
But https://apple.stackexchange.com/questions/337940/why-is-usr-include-missing-i-have-xcode-and-command-line-tools-installed-moja says it is better to use `xcrun --show-sdk-path` to figure this out.
40
41 1 Redmine Admin
## HomeBrew ##
42
43
One must select a non-OSX package manager for some additional packages. The candidates are HomeBrew, MacPorts, and Fink, with the HomeBrew being our recommendation at this time, as it is active, and it has the philosophy of not building extraneous stuff that is already present on OSX, which MacPorts tends to do, thus using up more disk space.  HomeBrew also installs packages in their own subdirs with links to other places in /opt, thus making removal a matter removing a directory and then removing broken links in /opt/homebrew.
44
45 14 John Cary
HomeBrew requires that one not have root privileges.  So we make the directory into which we can write:
46 1 Redmine Admin
47
~~~~~~
48 29 John Cary
sudo -s
49
mkdir -p /opt/homebrew
50
chgrp -R admin /opt
51
chmod -R 775 /opt
52
chmod -R 2775 /opt/homebrew
53
exit
54 14 John Cary
~~~~~~
55
56
and then we work as nonroot:
57
58
~~~~~~
59 29 John Cary
cd /opt
60
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
61
chmod -R a+rX /opt/homebrew
62
find /opt/homebrew -type l -exec chmod -h a+r '{}' \;
63 14 John Cary
~~~~~~
64 1 Redmine Admin
65 15 John Cary
and finally as root to pick up the paths by default:
66 14 John Cary
67 1 Redmine Admin
~~~~~~
68 29 John Cary
sudo -s
69
echo "/opt/homebrew/bin" > /etc/paths.d/homebrew
70
echo "/opt/homebrew/share/man" > /etc/manpaths.d/homebrew
71
chmod a+r /etc/paths.d/homebrew /etc/manpaths.d/homebrew
72
exit
73 1 Redmine Admin
~~~~~~
74
75
Get the required packages...
76
77
~~~~~~
78 29 John Cary
brew install gnupg libpng freetype gd ghostscript
79 1 Redmine Admin
~~~~~~
80
81 16 John Cary
Nice to have:
82 1 Redmine Admin
83 16 John Cary
~~~~~~
84 29 John Cary
brew install imagemagick
85 16 John Cary
~~~~~~
86
87 25 David Howdle
For Qt5:
88
89
~~~~~~
90 29 John Cary
brew install bison flex gperf libcapn
91 25 David Howdle
~~~~~~
92
93
If you receive a error regarding ruby version:
94
95
~~~~~~
96 29 John Cary
brew install ruby@2.3
97 25 David Howdle
~~~~~~
98
99 1 Redmine Admin
If permissions end up wrong, the commands
100
101
~~~~~~
102 29 John Cary
chmod -R a+rX /opt/homebrew
103
find /opt/homebrew -type l -exec chmod -h a+r '{}' \;
104 1 Redmine Admin
~~~~~~
105
106
may help.
107
108
109 38 John Cary
To get fortran, which comes with a more recent version of the gcc compiler:
110
111 14 John Cary
~~~~~~
112 38 John Cary
brew install gcc@6
113 1 Redmine Admin
114 33 Tech-X Corporation
With gcc 6.5 (11/18), gfortran is installed with gcc.  You will receive this informational message if you use the above command:
115
~~~
116 38 John Cary
117 1 Redmine Admin
118 36 Nathan Neri
To get qt 4 (currently needed for Mojave):
119 1 Redmine Admin
120 36 Nathan Neri
~~~
121
brew tap cartr/qt4
122
brew tap-pin cartr/qt4
123
brew install qt@4
124
~~~
125
126
then install qt-webkit and qwt, and copy the frameworks:
127 37 Nathan Neri
128 36 Nathan Neri
~~~
129
brew install qwt-qt4
130
brew install qt-webkit@2.3
131
cp -R /opt/homebrew/Cellar/qwt-qt4/6.1.3_1/lib/qwt.framework /opt/homebrea/Cellar/qt\@4/4.8.7_5/lib/
132
cp -R /opt/homebrew/Cellar/qt-webkit\@2.3/2.3.4_1/lib/QtWebKit.framework /opt/homebrew/Cellar/qt\@4/4.8.7_5/lib/
133
~~~
134 1 Redmine Admin
135
## LaTeX ##
136
137
Those with sufficient hard drive space (3.4GB after install) may wish to download the full MacTeX package from <http://www.tug.org/mactex/downloading.html>. After installing, one can see the 'README ME FIRST.pdf' in /Applications/Tex. You will likely need to add /usr/texbin to your path:
138
139
~~~~~~
140 29 John Cary
setenv PATH /usr/texbin:${PATH}  # For tcsh
141
export PATH=/usr/texbin:${PATH}  # For bash
142 1 Redmine Admin
~~~~~~
143 13 Redmine Admin
144 1 Redmine Admin
For those who like GUIs, the !TeXworks in /Applications/TeX/TeXworks should work fine.
145
146 13 Redmine Admin
For those with limited space, install BasicTeX from <https://tug.org/mactex/morepackages.html>. Add to your PATH:
147
148
~~~~~~
149 32 John Cary
    /usr/local/texlive/2017/bin/universal-darwin/
150 13 Redmine Admin
~~~~~~
151
152 32 John Cary
and then install the packages noted at
153 1 Redmine Admin
154 32 John Cary
[[LaTeX packages needed by Bilder]]
155 29 John Cary
156 32 John Cary
You may need to use sudo.
157 1 Redmine Admin
158
~~~~~~
159 32 John Cary
sudo tlmgr update --self
160
sudo tlmgr install <needed packages>
161 1 Redmine Admin
~~~~~~
162 29 John Cary
163 32 John Cary
and then used the autoupdate feature to get any additionally needed packages.  This minimal installation is 230 M instead of the usual 2GB.
164
165 1 Redmine Admin
166
## Disable spindump ##
167
168
for faster compilations via
169
170
~~~~~~
171
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.spindump.plist
172 29 John Cary
~~~~~~
173 11 Redmine Admin
174 34 John Cary
## LLVM-Clang ##
175
176
LLVM-Clang (aka LlvmClang) is different from AppleClang.  It has support for target attributes and openmp, and provides a build chain for high-performance computing.  We are currently using 7.0.0, which can be obtained from http://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-apple-darwin.tar.xz.  It is installed via, e.g.,
177
178
  cd /opt; sudo tar xf /path/to/clang+llvm-7.0.0-x86_64-apple-darwin.tar.gz
179
180
and then fixing up permissions as needed (e.g., chmod -R a+rX).
181
182 11 Redmine Admin
## Java ##
183
184
You will need to install java by invoking the executable in any way such as...
185
186
~~~~~~
187
java -version
188
~~~~~~
189
190 1 Redmine Admin
Follow the instructions in the dialog that takes you to the Oracle website and choose the latest version to download.  (as of Nov 2015 this is 1.8)
191
192
## HostName ##
193
194
For bilder to properly send emails the fully qualified hostname must set on the machine. To check this try...
195 2 Redmine Admin
196 1 Redmine Admin
~~~~~~
197 31 John Cary
hostname -f
198 29 John Cary
~~~~~~
199 1 Redmine Admin
200
this should return machinename.domainname.com rather than just machinename.  If it does not, then set the hostname of the machine by typing the following commands.
201
202
~~~~~~
203
sudo scutil --set ComputerName "machinename"
204
sudo scutil --set LocalHostName "machinename"
205
sudo scutil --set HostName "machinename.domainname.com"
206
dscacheutil -flushcache
207
~~~~~~
208
209
Restart your Mac after this.
210
211
## Power Saving Modes ##
212
213
For build machines that are not personal machines, disabling certain options will help in connectivity and responsiveness:
214
215
~~~~~~
216
Under Spotlight
217
 - disabled the main HD. (multiple mdworkers taking up a lot of cpu.)
218
~~~~~~
219
220
~~~~~~
221
Under Energy Saver
222
 - Computer sleep: Set to never
223
 - Unchecked Put hard disks to sleep when possible
224
 - Unchecked Wake for network access
225
~~~~~~
226
227
&nbsp;
228
&nbsp;
229
&nbsp;
230
&nbsp;
231
&nbsp;
232
&nbsp;
233
&nbsp;
234
&nbsp;
235
&nbsp;
236
&nbsp;
237
238 29 John Cary
---
239
240
---
241
242 31 John Cary
## X11 ##
243 1 Redmine Admin
244 31 John Cary
X11 should not be needed, but if it is needed:
245
246
Install [XQuartz X11](http://xquartz.macosforge.org/landing/).
247
248
Create a symbolic link so that the X11 headers can be found by the compiler:
249
250
~~~~~~
251
sudo ln -s /opt/X11/include/X11 /usr/local/include/X11
252
~~~~~~
253
254 1 Redmine Admin
# DEPRECATED INSTRUCTIONS #
255 31 John Cary
256
257
## Other gfortran options (besides HomeBrew) ##
258
259
### Option 2: HPC ###
260
261
Install gfortran from [SourceForge HPC](http://hpc.sourceforge.net).  (Do not also install the other gcc compilers.)
262
263
As of March 29, 2015, the version is 4.9.0.
264
265
Install via
266
267
~~~~~~
268
$ tar xzf gfortran-4.9-bin.tar.gz -C /
269
~~~~~~
270
271
### Option 3: GNU ###
272
273
Install gfortran using the installer from <http://gcc.gnu.org/wiki/GFortranBinaries>.
274
275
As of March 29, 2015, the version is 4.9.0.
276
277
The binaries will end up being installed in /usr/local/bin
278
279 30 John Cary
280
## Git ##
281
282
If any repository package requires Git protocol, then for Lion and earlier you may need Git from <http://git-scm.com/download/mac> and add /usr/local/git/bin to your path.
283 11 Redmine Admin
284 1 Redmine Admin
285 10 Redmine Admin
### Macports ### 
286
287
This provides wget, freetype, and other utilities. Get macports from <http://www.macports.org/install.php> and install.
288 11 Redmine Admin
289
Note: Before proceeding with the installation of various macports packages noted below on Lion machines with Xcode 4.3, one needs to run
290
291 10 Redmine Admin
~~~~~~
292 29 John Cary
sudo xcode-select -switch /Applications/Xcode.app
293 10 Redmine Admin
~~~~~~
294
295
Otherwise, there will be an error installing zlib during the wget installation below.
296 11 Redmine Admin
297
After the macports installation, do
298 1 Redmine Admin
299
~~~~~~
300 29 John Cary
sudo port install wget
301
sudo port install ImageMagick +no_x11
302
sudo port install f2c
303 1 Redmine Admin
~~~~~~
304
305
306
### XCode ###
307
### Lion ###
308 11 Redmine Admin
309 1 Redmine Admin
On Lion, the command line compilers are not installed automatically. After installing Xcode, navigate to the 
310
Preferences->Download dialog 
311
and install the Command Line Tools. The dialog is.. 
312 2 Redmine Admin
313 1 Redmine Admin
!screenShotCommandLineTools.png!
314
315
or from the command line do
316
317 11 Redmine Admin
~~~~~~
318 29 John Cary
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
319
xcodebuild
320 1 Redmine Admin
      (hit agree)
321
~~~~~~
322
323
You may subsequently need to build your first package with sudo in order to accept the Xcode licenses.
324
325
### Mountain Lion ### 
326
327
Same as Mavericks?
328
329
### Mavericks ###
330
331 2 Redmine Admin
~~~~~~
332 29 John Cary
sudo xcode-select --install
333 1 Redmine Admin
~~~~~~
334
335
336
## Java ##
337
338
(The below does not apply to yosemite.)
339
340
The cmake build may fail due to missing java headers linked to in /System/Library/Frameworks/JavaVM.framework/Headers. To fix:
341
342
~~~~~~
343 29 John Cary
cd /System/Library/Frameworks/JavaVM.framework/Headers
344
sudo mv jni.h jni.h.missing
345 1 Redmine Admin
~~~~~~