Building IPCop v2.0
It should be possible to build IPCop on any (recent) Linux distribution. A kernel version greater or equal to 2.6.5 is required! There are 2 ways to build IPCop, with or without a prepackaged toolchain. The advantages of using a prepackaged toolchain are: less requirements on the building machine environment and timesaving.
See [1] for exact package version requirements to build the toolchain.
Please observe that there is currently no cross-compilation support, i.e. if you want to build IPCop for Sparc you will need a Sparc machine.
Examples below are from Debian Lenny but build environment is not limited to Debian.
Prepare building environment
As of SVN r842 it is no longer necessary to build IPCop as root. You will need sudo installed. You need to copy in /etc/sudoers (using visudo is recommended) the lines indicated on first ./make.sh build. See [2] how to build as root, please note that it strongly recommended to build as non-root!
These are the minimum packages required when a prepackaged toolchain is available.
apt-get install build-essential realpath sudo
More packages are needed to build the toolchain (see later), realpath and build-essential are debian specific. On other distributions, build-essential could be have other names like development packages (gcc, libc headers, make,...). On opensuse-11.3 for example, it is required to install
zypper install bison gcc make texinfo
Retrieve IPCop sources
Sources are available from svn. This is the recommended way as it is easier to follow changes on the source tree. You will need the subversion package, install on Debian Lenny using (see [4] for other distros):
apt-get install subversion
Then checkout the current sources with:
svn checkout https://ipcop.svn.sourceforge.net/svnroot/ipcop/ipcop/trunk
If you want to checkout a specific revision:
svn checkout --revision 555 https://ipcop.svn.sourceforge.net/svnroot/ipcop/ipcop/trunk
See the Subversion manual for more information on svn. Change into the trunk directory, you should now see various directories (config, doc, html, etc.) and make.sh script :
cd trunk
ls
Retrieve other sources
- Load all files from all the different sources on the Internet
./make.sh prefetch
- Load all files gathered in one big package (not yet available for 1.9/2.0)
./make.sh getothersrc
Should some files not be available or have moved to a different URL, 'make.sh' will report an error. You might try a Google search and download files manually into the cache directory.
Build IPCop without prebuild toolchain
Skip this step if you want to build with prebuild toolchain. Package version requirements will be displayed on first ./make.sh build (see [1])
Additional packages are needed to be able to build the toolchain, install on Debian Lenny using (see [3] for other distros):
apt-get install autoconf automake bison bzip2 flex gawk texinfo
Toolchain is automatically built on first run:
./make.sh build
This will spare you 30% of the building time when building for a 2nd (or 3rd, 4th ... time). You can force the toolchain rebuild with :
./make.sh toolchain
Build IPCop using prebuild toolchain
To save 30% time on building, there is the possibility to use a prebuild toolchain (40 MB), retrieve using:
./make.sh gettoolchain
Using the prebuild toolchain also helps if your distro is old or very new and is not capable to create the IPCop building environment.
Notes
[1] Package versions required to build the toolchain
Prebuild toolchain could be used if requirements are not satisfied.
| Packages | Version | Packages | Version |
| bash | 2.05a | binutils | 2.12 |
| bison | 1.875 | bzip2 | 1.0.2 |
| coreutils | 5.0 | diffutils | 2.8 |
| findutils | 4.1.20 | gawk | 3.1.5 |
| gcc | 3.0.1 | glibc | 2.2.5 |
| grep | 2.5 | gzip | 1.2.4 |
| linux kernel | 2.6.5 | make | 3.79.1 |
| patch | 2.5.4 | sed | 3.0.2 |
| tar | 1.14 | texinfo | 4.8 |
[2] Customize building script variables
You need to write those values in a .config file at ./make.sh directory level
# Default value NICE=10 # How many concurrent jobs to run (NOTE: Don't use too high a value, or packages may have timing issues. # At least openssh fails if this is too high. It's safe to set this to number of CPUs + 1) PARALLELISM=3 # How many times should prefetch try to download a package. Don't set to too high a value and hammer sites MAX_RETRIES=3 # Make distcc optional, by default don't use it. # To be efficient, distcc need that network is more efficient than local cpu # Gain is usually small unless cpu are not fast USE_DISTCC=no # Should we skip creation of USB images # This spare time until production level is reached SKIP_USB_IMAGES=yes # If you **absolutely** want to build ipcop as root,STRONGLY DISCOURAGED ALLOW_ROOT_TO_BUILD=yes
[3] Installing subversion on other distributions
[4] Completing build environment on other distributions
Errors
You can get errors when building ./make.sh (see logs in trunk/log_) URL http and md5 broken links :
Concern md5checksum errors and downloads packages Error 404
You can fix these errors by editing /trunk/lfs/your_package and replace URL downloading (DL_FROM) or md5 signature.
Downloads URL modules : http://www.cpan.org/modules/by-module
./make.sh prefetch verifies valid packages
