]> git.sur5r.net Git - bacula/docs/blobdiff - docs/manuals/de/old/developers/porting.tex
Reset everything to English
[bacula/docs] / docs / manuals / de / old / developers / porting.tex
diff --git a/docs/manuals/de/old/developers/porting.tex b/docs/manuals/de/old/developers/porting.tex
new file mode 100644 (file)
index 0000000..278f0e5
--- /dev/null
@@ -0,0 +1,173 @@
+%%
+%%
+
+\chapter{Bacula Porting Notes}
+\label{_ChapterStart1}
+\index{Notes!Bacula Porting}
+\index{Bacula Porting Notes}
+\addcontentsline{toc}{section}{Bacula Porting Notes}
+
+This document is intended mostly for developers who wish to port Bacula to a
+system that is not {\bf officially} supported. 
+
+It is hoped that Bacula clients will eventually run on every imaginable system
+that needs backing up (perhaps even a Palm). It is also hoped that the Bacula
+Directory and Storage daemons will run on every system capable of supporting
+them. 
+
+\section{Porting Requirements}
+\index{Requirements!Porting}
+\index{Porting Requirements}
+\addcontentsline{toc}{section}{Porting Requirements}
+
+In General, the following holds true: 
+
+\begin{itemize}
+\item {\bf Bacula} has been compiled and run on Linux RedHat, FreeBSD,  and
+   Solaris systems. 
+\item In addition, clients exist on Win32, and Irix 
+\item It requires GNU C++ to compile. You can try with other compilers, but 
+   you are on your own. The Irix client is built with the Irix complier,  but, in
+   general, you will need GNU. 
+\item Your compiler must provide support for 64 bit signed and unsigned 
+   integers. 
+\item You will need a recent copy of the {\bf autoconf} tools loaded  on your
+   system (version 2.13 or later). The {\bf autoconf} tools  are used to build
+   the configuration program, but are not part of  the Bacula source
+distribution. 
+\item There are certain third party packages that Bacula needs. Except  for
+   MySQL, they can all be found in the {\bf depkgs} and  {\bf depkgs1} releases. 
+\item To build the Win32 binaries, we use Microsoft VC++ standard
+   2003. Please see the instructions in
+   bacula-source/src/win32/README.win32 for more details. If you
+   want to use VC++ Express, please see README.vc8. Our build is
+   done under the most recent version of Cygwin, but Cygwin is
+   not used in the Bacula binaries that are produced.
+   Unfortunately, we do not have the resources to help you build
+   your own version of the Win32 FD, so you are pretty much on
+   your own. You can ask the bacula-devel list for help, but
+   please don't expect much.
+\item {\bf Bacula} requires a good implementation of pthreads to work. 
+\item The source code has been written with portability in mind and is  mostly
+   POSIX compatible. Thus porting to any POSIX compatible operating  system
+   should be relatively easy. 
+\end{itemize}
+
+\section{Steps to Take for Porting}
+\index{Porting!Steps to Take for}
+\index{Steps to Take for Porting}
+\addcontentsline{toc}{section}{Steps to Take for Porting}
+
+\begin{itemize}
+\item The first step is to ensure that you have version 2.13 or later  of the
+   {\bf autoconf} tools loaded. You can skip this step, but  making changes to
+   the configuration program will be difficult or  impossible. 
+\item The run a {\bf ./configure} command in the main source directory  and
+   examine the output. It should look something like the  following:  
+
+\footnotesize
+\begin{verbatim}
+Configuration on Mon Oct 28 11:42:27 CET 2002:
+  Host:                        i686-pc-linux-gnu -- redhat 7.3
+  Bacula version:              1.27 (26 October 2002)
+  Source code location:        .
+  Install binaries:            /sbin
+  Install config files:        /etc/bacula
+  C Compiler:                  gcc
+  C++ Compiler:                c++
+  Compiler flags:              -g -O2
+  Linker flags:
+  Libraries:                   -lpthread
+  Statically Linked Tools:     no
+  Database found:              no
+  Database type:               Internal
+  Database lib:
+  Job Output Email:            root@localhost
+  Traceback Email:             root@localhost
+  SMTP Host Address:           localhost
+  Director Port                9101
+  File daemon Port             9102
+  Storage daemon Port          9103
+  Working directory            /etc/bacula/working
+  SQL binaries Directory
+  Large file support:          yes
+  readline support:            yes
+  cweb support:                yes /home/kern/bacula/depkgs/cweb
+  TCP Wrappers support:        no
+  ZLIB support:                yes
+  enable-smartalloc:           yes
+  enable-gnome:                no
+  gmp support:                 yes
+\end{verbatim}
+\normalsize
+
+The details depend on your system. The first thing to check is that  it
+properly identified your host on the {\bf Host:} line. The  first part (added
+in version 1.27) is the GNU four part identification  of your system. The part
+after the -- is your system and the system version.  Generally, if your system
+is not yet supported, you must correct these. 
+\item If the {\bf ./configure} does not function properly, you must  determine
+   the cause and fix it. Generally, it will be because some  required system
+   routine is not available on your machine. 
+\item To correct problems with detection of your system type or with routines 
+   and libraries, you must edit the file {\bf
+   \lt{}bacula-src\gt{}/autoconf/configure.in}.  This is the ``source'' from
+which {\bf configure} is built.  In general, most of the changes for your
+system will be made in  {\bf autoconf/aclocal.m4} in the routine {\bf
+BA\_CHECK\_OPSYS} or  in the routine {\bf BA\_CHECK\_OPSYS\_DISTNAME}. I have
+already added the  necessary code for most systems, but if yours shows up as
+{\bf unknown}  you will need to make changes. Then as mentioned above, you
+will need  to set a number of system dependent items in {\bf configure.in} in
+the  {\bf case} statement at approximately line 1050 (depending on the  Bacula
+release). 
+\item The items to in the case statement that corresponds to your system  are
+   the following:  
+
+\begin{itemize}
+\item DISTVER -- set to the version of your operating system. Typically  some
+   form of {\bf uname} obtains it. 
+\item TAPEDRIVE -- the default tape drive. Not too important as the user  can
+   set it as an option.  
+\item PSCMD -- set to the {\bf ps} command that will provide the PID  in the
+   first field and the program name in the second field. If this  is not set
+   properly, the {\bf bacula stop} script will most likely  not be able to stop
+Bacula in all cases.  
+\item hostname -- command to return the base host name (non-qualified)  of
+   your system. This is generally the machine name. Not too important  as the
+   user can correct this in his configuration file. 
+\item CFLAGS -- set any special compiler flags needed. Many systems need  a
+   special flag to make pthreads work. See cygwin for an example.  
+\item LDFLAGS -- set any special loader flags. See cygwin for an example.  
+\item PTHREAD\_LIB -- set for any special pthreads flags needed during 
+   linking. See freebsd as an example.  
+\item lld -- set so that a ``long long int'' will be properly edited in  a
+   printf() call.  
+\item llu -- set so that a ``long long unsigned'' will be properly edited in 
+   a printf() call.  
+\item PFILES -- set to add any files that you may define is your platform 
+   subdirectory. These files are used for installation of automatic  system
+   startup of Bacula daemons.  
+\end{itemize}
+
+\item To rebuild a new version of {\bf configure} from a changed {\bf
+   autoconf/configure.in}  you enter {\bf make configure} in the top level Bacula
+   source  directory. You must have done a ./configure prior to trying to rebuild
+ the configure script or it will get into an infinite loop. 
+\item If the {\bf make configure} gets into an infinite loop, ctl-c it, then
+   do  {\bf ./configure} (no options are necessary) and retry the  {\bf make
+   configure}, which should now work. 
+\item To rebuild {\bf configure} you will need to have {\bf autoconf} version 
+   2.57-3 or higher loaded. Older versions of autoconf will complain about 
+   unknown or bad options, and won't work. 
+\item After you have a working {\bf configure} script, you may need to  make a
+   few system dependent changes to the way Bacula works.  Generally, these are
+   done in {\bf src/baconfig.h}. You can find  a few examples of system dependent
+changes toward the end of this  file. For example, on Irix systems, there is
+no definition for  {\bf socklen\_t}, so it is made in this file. If your
+system has  structure alignment requirements, check the definition of BALIGN
+in  this file. Currently, all Bacula allocated memory is aligned on a {\bf
+double}  boundary. 
+\item If you are having problems with Bacula's type definitions, you might 
+   look at {\bf src/bc\_types.h} where all the types such as {\bf uint32\_t}, 
+   {\bf uint64\_t}, etc. that Bacula uses are defined. 
+\end{itemize}