13 | | It is recommended to create a dedicated user for BOINC processing, e.g. {{{boinc}}} and perform the operations below in this user's home directory! Details depend on the system, on Linux one would do |
14 | | |
15 | | {{{ |
16 | | useradd boinc |
17 | | su - boinc |
18 | | }}} |
19 | | |
20 | | ...to create a new user called ''boinc'' who cannot log in by default (because he has no password), then switch to that user. |
21 | | |
22 | | First, download and install the [SoftwarePrereqsUnix prerequisites], then [SourceCodeGit download the current source]. |
23 | | |
24 | | You should then have a directory called maybe "{{{boinc-client_release-7.4-7.4.41}}}". |
25 | | |
26 | | {{{cd}}} to that directory and issue the command |
27 | | |
| 13 | If you want to build the client software for local use on your machine only, it is enough to simply build it using: |
30 | | }}} |
31 | | |
32 | | If this generates errors, check the [SoftwarePrereqsUnix prerequisites] again. On success, consider reading the output of |
33 | | |
34 | | {{{ |
35 | | ./configure --help |
36 | | }}} |
37 | | |
38 | | === Local use === |
39 | | |
40 | | If you want to build the client software for local use on your machine only, configure the build process using: |
41 | | |
42 | | {{{ |
43 | | WHERE_BOINC_WILL_GO=/where/boinc/will/go |
44 | | ./configure --prefix=$WHERE_BOINC_WILL_GO --disable-server --disable-manager --disable-fcgi --enable-optimize |
45 | | }}} |
46 | | |
47 | | * {{{WHERE_BOINC_WILL_GO}}} is the name of the target directory. Often chosen as {{{/usr/local/boinc}}}, but consider using {{{~boinc/boinc}}} if you have a dedicated boinc user. |
48 | | * According to {{{./configure --help}}}, the command {{{./configure --enable-pkg-client}}} should mean 'build a client package' but doing it that way will result in the error "{{{cannot find the library `../lib/libboinc_crypt.la'}}}". |
49 | | * Special flags can be passed to the compiler: for example one might add {{{CXXFLAGS="-O3"}}} to the {{{./configure}}} options. Indications whether this is actually useful are hard to come by though. With {{{--enable-optimize}}}, the CXXFLAGS are set to {{{CXXFLAGS = -g -O2 -Wall -ffast-math -O3}}} in the {{{Makefile}}}. |
50 | | * If you have old versions of libraries (curl, openssl etc.) in {{{/usr/lib}}}, and newer versions somewhere else (for example, {{{/usr/local/lib}}}) you may need to tell the linker where to find the newer versions by adding the LDFLAGS options, as in {{{LDFLAGS=-L/usr/local/lib}}} |
51 | | |
52 | | If {{{./configure}}} ended with success, you can now start the actual build process: |
53 | | |
54 | | {{{ |
| 16 | ./configure --disable-server --enable-client CXXFLAGS="-O3 " |
56 | | }}} |
57 | | |
58 | | Once this has succeeded, you may either install the result to the directory given previously to {{{./configure}}} by issuing |
59 | | |
60 | | {{{ |
61 | | make install |
62 | | }}} |
63 | | |
64 | | This will probably fail because. |
65 | | |
66 | | {{{ |
67 | | /bin/install: cannot create regular file ‘/etc/init.d/boinc-client’: Permission denied |
68 | | }}} |
69 | | |
70 | | The installer tries to put an "init file" into {{{/etc/init.d/}}} to start boinc client at boot time. This is not a good idea because |
71 | | |
72 | | 1 This works only if you are currently root, and shouldn't be root when building. On the other hand, if you install boinc to {{{/usr/local/boinc}}}, you will have to issue {{{make install}}} as root anyway. |
73 | | 2 Your system may well be running {{{systemd}}} and no longer use System V-style init files. |
74 | | |
75 | | Solution: Remove the make target {{{install-exec-hook}}} from the make target {{{install-exec-am}}} by editing {{{client/scripts/Makefile}}} |
76 | | |
77 | | {{{ |
78 | | install-exec-am: |
79 | | @$(NORMAL_INSTALL) |
80 | | $(MAKE) $(AM_MAKEFLAGS) install-exec-hook |
81 | | }}} |
82 | | |
83 | | to |
84 | | |
85 | | {{{ |
86 | | install-exec-am: |
87 | | @$(NORMAL_INSTALL) |
88 | | # $(MAKE) $(AM_MAKEFLAGS) install-exec-hook |
89 | | }}} |
90 | | |
91 | | === Distribution package === |
92 | | |
93 | | Alternatively, you may want to create a distribution package: |
94 | | |
95 | | {{{ |
102 | | {{{ |
103 | | cp: cannot stat ‘../../../stage/FOO/bin/boincmgr’: No such file or directory |
104 | | cp: cannot stat ‘../../../stage/FOO/bin/boincscr’: No such file or directory |
105 | | }}} |
106 | | |
107 | | Fake the presence of those files: |
108 | | |
109 | | {{{ |
110 | | touch ../../../stage/FOO/bin/boincmgr |
111 | | touch ../../../stage/FOO/bin/boincscr |
112 | | }}} |
113 | | |
114 | | The results can now be found in the {{{sea}}} directory: located under the folder BOINC and there is also a {{{sea.tar}}} file as well as a self-extracting archive e.g. {{{boinc_7.4.41_x86_64-pc-linux-gnu.sh}}} |
115 | | |
116 | | === Portable binaries === |
117 | | |
118 | | If instead you intend to build hopefully portable statically linked binaries of the client software that should run on a wide variety of GNU/Linux platforms, it |
119 | | is recommended to build the client software using a virtual machine (e.g. running under Microsoft Virtual PC, download the [VmCompatibility Compatibility virtual machine image]). |
120 | | |
121 | | In this case you should build using the option {{{--enable-client-release}}} |
122 | | |
| 24 | If instead you intend to build portable binaries of the client software that should run on a wide variety of GNU/Linux platforms, it is recommended to build the client software using a virtual machine (e.g. running under Microsoft Virtual PC, download the Compatibility virtual machine image). In this case you should build using: |
130 | | See [BuildSystem details of the build system]. |
| 32 | See details of the build system. |
| 33 | |
| 34 | The result (in the sea/ directory) will be a self-extracting archive (boinc_x.y.z_i686-pc-linux-gnu.sh) containing the BOINC client software. |
| 35 | |
| 36 | === Other Unix === |
| 37 | |
| 38 | * Download and install prerequisites |
| 39 | * Download current source code |
| 40 | * Configure (with --disable_server) and make |
| 41 | |
| 42 | The result (in the sea/ directory) will be a self-extracting archive (boinc_x.y.z_PLATFORM.sh) containing the BOINC client software. If you have old versions of libraries (curl, openssl etc.) in /usr/lib, and newer versions somewhere else (like /usr/local/lib) you may need to tell the linker where to find the newer versions, as in: |
| 43 | {{{ |
| 44 | ./configure LDFLAGS=-L/usr/local/lib |
| 45 | }}} |
| 46 | |
| 47 | Here is the list of packages that are needed to compile the BOINC graphics libs on Debian (the same packages should also be available on Ubuntu): |
| 48 | |
| 49 | {{{freeglut3-dev libsm-dev libice-dev libxmu-dev libxi-dev libx11-dev libjpeg62-dev }}} |