Provided by: scratchbox2_2.2.4-1debian1_amd64 bug

NAME

       sb2 - crosscompiling environment

SYNOPSIS

       sb2 [options] [command] [arguments] [...]

DESCRIPTION

       sb2 runs command in a scratchbox2 session. If no command is given, an interactive shell is
       started.

       Scratchbox2 is typically used to create  a  transparent  cross-compiling  environment  for
       developing programs and compiling software packages for e.g. embedded devices.

       The environment created by sb2 has essential differences to the host OS environment:

       First,  a  virtual  file  system  view is presented to the applications.  In practise that
       means that the file names (paths) which an application uses may be modified before the  OS
       does  its operations; applications observe a different file system that what the real file
       system is. For example, common directories like /bin, /usr/lib and /lib can be changed  to
       point to target-specific directories, which contain files for a different CPU architecture
       than what the host has.

       Second, scratchbox2 makes execution of foreign binaries completely transparent.   Target's
       binaries  can  be  executed  on the host just as if they were host's binaries; scratchbox2
       will start a CPU transparency method automatically whenever needed (Qemu is typically used
       for this).

       The  result  is  that  the  development  machine appears as a virtual target system to the
       software development tools, and complex tools (like GNU Autotools) can be used directly.

       Scratchbox2 works by intercepting library calls of dynamically linked binaries.  It uses a
       flexible  and highly configurable rule engine, when deciding when, what, and how to modify
       parameters of the intercepted calls; this is  completely  transparent  to  the  users  and
       applications.   Scratchbox2  2  does  not  need  any  special  privileges  or kernel-level
       services; it is completely based on features that are available for all ordinary users.

       Configuration data is stored to a target (see sb2-init(1) for  details  about  creating  a
       target).   The target contains defaults for all settings that are needed when a session is
       created.

       A new session is created every time when the sb2  command  is  used  (unless  one  of  the
       persistent session control options is present - see options -S,-J and -D below).

OPTIONS

       -c     When  creating  a session, also create a private copy of the target root filesystem
              (rootstrap).  Modifications done to the copy will be thrown away when  the  session
              is  destroyed.   Note  that the copy operation can be really slow, depending on the
              size of the file system, but if the copy goes to a ramdisk, overall performance may
              much be better (see also option -W).

       -C DIR When  creating  a  session,  create  copy  of  DIR  and  use  it as the target root
              filesystem (rootstrap). Note that this can be really slow. See also option -c.

       -d     Use debug mode: same as -L debug

       -D FILE
              Delete a persistent session associated with FILE.  Warning: this does not check  if
              the session is still in use!  (see also -S and -J)

       -e     Same  as  -m  emulate: Use emulation mode, avoid executing any host binaries except
              qemu.  See mapping modes below.

       -f args
              additional fakeroot arguments (see option -R)

       -g     Create a  new  session  with  setsid();  useful  when  executing  commands  in  the
              background  (i.e.  creates  a  system session and a new process group, and detaches
              from the controlling terminal. See setsid(2) for more info)

       -G file
              Append process group number to a file.

       -h     Print help.

       -J FILE
              Join a persistent session associated with FILE (see also -D and -S)

       -L LEVEL
              Enable logging. Following values for LEVEL are available (in  order  of  increasing
              level of details): error, warning, notice, info, debug, noise, noise2.  The default
              is warning.  Logs can be  post-processed  with  sb2-logz,  a  tool  which  produces
              summaries and visualizes various things that were logged.

       -m MODE
              Use one of the pre-defined mapping modes.  See mapping modes below.

       -M FILE
              Read mapping rules from FILE.

       -O OPTIONS
              Set options for the selected mapping mode. OPTIONS is a mode-specific string.

       -Q BUGLIST
              Emulate  bugs  of  scratchbox  1  (BUGLIST  consists  of  letters: 'x' enables exec
              permission checking bug emulation).

       -r     Disable creating reverse mapping rules: functions like getcwd() and realpath() will
              always return the real path.

       -R     "superuser   mode":  Execute  commands in fakeroot environment (see fakeroot(1) for
              details).  Depending on the selected mapping mode,  this  may  also  disables  some
              mode-specific features, like simulated write protection of the target filesystem.

       -s DIRECTORY
              Use redirection rules from the DIRECTORY given in argument.

       -S FILE
              Create a persistent session: Write session information to FILE (see also -D and -J)

       -t TARGET
              Define TARGET to use. Use sb2-config -d TARGET to set a default.

       -T DIRECTORY
              Use  DIRECTORY  as  tools_root  (override the value which was specified to sb2-init
              when the target specification was created).

       -u     Disable automatic configuration upgrade.

       -v     Display version number.

       -W DIR Use DIR as the session directory when creating  the  session  (The  default  is  to
              create the session in /tmp). DIR must be an absolute path and must not exist.  Note
              that long pathnames may cause trouble with socket operations, so try to keep DIR as
              short as possible.

EXAMPLES

       sb2 ./configure

       sb2 make

       sb2 -eR make install

       sb2 -R -m emulate make install

MAPPING MODES

       Scratchbox2  contains  several  ready-made  rulesets,  called mapping modes, for different
       purposes. This manual page presents only the basics of each. Full  details  can  be  found
       from the rulesets themselves.

       There are three development-oriented modes, that are intended for cross-compilation:

       "simple"  makes  only  the  very basic modifications to the file environment: For example,
       /usr/include refers to /usr/include in the target  root  file  system,  not  to  the  real
       /usr/include  of  the  host  (and  the  same  applies  to  /lib,  /usr/lib, and many other
       directories).  Typical toolchain commands, i.e. commands that are used  to  create  binary
       programs  (like  gcc,  as  and  ld)  refer to tools that were supplied with the the cross-
       compiler  which  was  configured  with  sb2-init  (also  when  used  with  full  pathname:
       /usr/bin/gcc, /usr/bin/as, etc)

       The  "simple"  mode  usually  takes  other tools directly from the host OS.  This approach
       means that simple tools work fine, and well-behaving OSS projects can be compiled with the
       "simple"  mode.  The  drawback  is that there are some cases, where such a simple approach
       fails.

       The other two development modes, "accel"  and  "devel"  have  more  complete  support  for
       different  tools, but these are not necessarily as easy to set up as the "simple" mode is.
       Both "accel" and "devel" are intended to be used with a separate "tools  root"  directory,
       consisting  of host-compatible binaries of the same programs that exist in the target file
       system as foreign binaries (e.g. target root can contain arm binaries, whereas tools  root
       has  x86  binaries  of the exactly versions of the same programs). This is configured with
       the -t option of sb2-init(1).

       In addition to the development-oriented modes, scratchbox2 also  has  an  "emulate"  mode,
       which  sets  up  an  environment  without  development tools: It maps as many paths to the
       target root as possible.  It can be used for installing programs to the target  filesystem
       and testing them.

       "tools"  mode  is  very  much  like "emulate", except that there most things are mapped to
       tools root.

       "nomap" mode is a special  mapping  mode,  which  is  mostly  useful  only  for  debugging
       purposes:  It  does  not apply any file system related mappings, but otherwise scratchbox2
       functions are fully operational.

FILES

       $HOME/.scratchbox2/*

       $HOME/sb2_logs

       /usr/share/scratchbox2/*

SEE ALSO

       sb2-init(1), sb2-config(1), sb2-show(1), sb2-logz(1), sb2-session(1), fakeroot(1), qemu(1)

BUGS

       No known bugs at this time.

AUTHORS

       Lauri T. Aarnio, Riku Voipio