| 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 }}} |