Ingo Weinhold 52b1d543e8 Terminal changes. This is still work in progress, some features
are disabled, lots of commented debug code is still in there,
and quite a bit of cleanup is needed, but basically things work
at least as well as before with several improvements:
* Changed TerminalBuffer from an interface to a complete
  implementation. Removed all related code from TermView. Removed
  the now obsolete TermBuffer. TermParse uses TerminalBuffer instead
  of TermView, and TerminalBuffer asynchronously notifies TermView.
  This avoids potential deadlocks, fixing #1918. It also speeds
  up tty-output-bound programs. E.g. a "seq 10000" is about twice
  at fast with the default terminal size in my setup, now. It's
  still horribly slow compared to e.g. Konsole, though.
* Replaced CurPos by a more compact and fully inline class TermPos.
* Removed the offset feature (that insets the used text area) from
  TermView, thus simplifying the code. Instead put the view into a
  new parent view which provides the insets. This also fixes
  artifacts that could sometimes be observed in the insets area.
* Scrolling related changes:
  - When scrolling fully down, the (80x25 or whatever) terminal
    screen is seen. It is not possible to scroll below the screen as
    in Be's Terminal. Scrolling in Haiku's Terminal was weirdly
    broken in this respect. As a side effect this fixes #2070.
  - When not scrolled fully down, further output won't cause any
    scrolling. It is thus possible to read earlier output while
    something is still going on. Fixes #1772.
  - Particularly to avoid unnecessary scrolling in the not scrolled
    fully down case, TermView no longer actually scrolls. It only
    sets an internal offset and manually uses CopyBits() as needed.
    Introduced a (hacky) BScrollView subclass using a BScrollBar
    subclass to make that possible.
* Selection related changes:
  - Double/triple click plus dragging allows for selecting multiple
    words/lines.
  - Word selection no longer selects ranges of non-space characters.
    Instead it knows that words are made of alpha numerical chars and
    a certain set of other chars, and selects a range of commonly
    classified characters (word chars, non-word non-whitespace chars,
    whitespace chars). The non-alpha-num word characters should be
    made user-settable. Due to missing multi-byte character
    classification multi-byte whitespace is not recognized.
  - Beyond the end of the line there no longer are invisible spaces.
    Trying to select the region selects the end of the line (i.e.
    line break). This is similar to how Konsole and xterm work.
  - Added auto-scrolling when selecting with the mouse. Formerly the
    Terminal scrolled only while moving the mouse. The scroll speed
    might need some fine-tuning.
  - Don't know what change exactly did that (likely the switch to
    non-end-inclusive text ranges used internally), but the
    occasional selection artifacts are gone.
* Resizing the terminal window re-wraps soft-wrapped lines.
* The find functionality seemed to be completely broken. At least it
  never found anything for me. Should work now, though multi-byte
  characters are not matched correctly in case-insensitive mode.

Regressions:
* Printing is disabled.
* Cursor blinking is disabled. Do we want it anyway?
* In several cases full-width characters are not handled correctly
  (in more cases than before).
* Shrinking the terminal width doesn't work very well with "less"
  (and probably other full-screen terminal apps), due to line
  re-wrapping. "less" expects them to be truncated only. When
  supporting an alternate screen buffer re-wrapping should be
  disabled for it, which should solve the problem.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25881 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-09 17:04:26 +00:00
2008-06-09 14:53:17 +00:00

Building on BeOS
================

For building on BeOS you need the development tools from:

  http://haiku-os.org/downloads

Please always use the most recent versions. They are required to build Haiku.


Building on a non-BeOS platform
===============================

Please read the file 'ReadMe.cross-compile' before continuing. It describes
how to build the cross-compilation tools and configure the build system for
building Haiku. After following the instructions you can directly continue
with the section Building.


Configuring on BeOS
===================

Open a Terminal and change to your Haiku trunk folder. To configure the build
you can run configure like this:

  ./configure --target=TARGET

Where "TARGET" is the target platform that the compiled code should run on:
  * haiku (default)
  * r5
  * bone
  * dano (also for Zeta)

The configure script generates a file named "BuildConfig" in the "build"
directory. As long as configure is not modified (!), there is no need to call
it again. That is for re-building you only need to invoke jam (see below).
If you don't update the source tree very frequently, you may want to execute
'configure' after each update just to be on the safe side.


Building
========

Haiku can be built in either of two ways, as disk image file (e.g. for use
with emulators) or as installation in a directory.

Image File
----------

  jam -q haiku-image

This generates an image file named 'haiku.image' in your output directory
under 'generated/'.

VMware Image File
-----------------

  jam -q haiku-vmware-image

This generates an image file named 'haiku.vmdk' in your output
directory under 'generated/'.

Directory Installation
----------------------

  HAIKU_INSTALL_DIR=/Haiku jam -q install-haiku

Installs all Haiku components into the volume mounted at "/Haiku" and
automatically marks it as bootable. To create a partition in the first place
use DriveSetup and initialize it to BFS.

Note that installing Haiku in a directory only works as expected under BeOS,
but it is not yet supported under Linux and other non-BeOS platforms.

Bootable CD-ROM Image
---------------------

* UNSUPPORTED yet *

This _requires_ having the mkisofs tool installed.
On Debian GNU/Linux for example you can install it with:
  apt-get install mkisofs
On BeOS you can get it from http://bebits.com/app/3964 along with cdrecord.

Creating a bootable CD requires burning 2 tracks on a single CD.
The first track is an El-Torito bootable ISO file-system containing a boot 
floppy image, and is created with:

  jam -q haiku-boot-cd

This generates an image file named 'haiku-boot-cd.iso' in your output directory
under 'generated/'.
The second track is the raw BFS image 'haiku.image' in 'generated/' created 
with:

  jam -q haiku-image

Under Unix/Linux, and BeOS you can use cdrecord to create a CD with:

  cdrecord dev=x,y,z -v -eject -dao -data generated/haiku-boot-cd.iso generated/haiku.image

Here x,y,z is the device number as found with cdrecord -scanbus, it can also 
be a device path on Linux.

Windows users will find '3rdparty/nero/haiku-cd.cue' useful.

Since the CD has two tracks it is not easy to test it from an emulator.
Instead it is simpler to use the 'haiku.image' as CD image and the floppy
image 'haiku-boot-floppy.image' to boot from it.

For Qemu:

qemu -cdrom generated/haiku.image -fda generated/haiku-boot-floppy.image -boot a

Building Components
-------------------

If you don't want to build the complete Haiku, but only a certain
app/driver/etc. you can specify it as argument to jam, e.g.:

  jam Pulse

Alternatively, you can 'cd' to the directory of the component you want to
build and run 'jam' from there.

You can also force rebuilding of a component by using the "-a" parameter:

  jam -a Pulse


Running
=======

Generally there are two ways of running Haiku. On real hardware using a
partition and on emulated hardware using an emulator like Bochs or QEmu.

On Real Hardware
----------------

If you have installed Haiku to its own partition you can include this
partition in your bootmanager and try to boot Haiku like any other OS you
have installed. To include a new partition in the BeOS bootmanager run this
in a Terminal:

  bootman

On Emulated Hardware
--------------------

For emulated hardware you should build disk image (see above). How to setup
this image depends on your emulater. A tutorial for Bochs on BeOS is below.
If you use QEmu, you can usually just provide the path to the image as
command line argument to the "qemu" executable.

Bochs
-----

Version 2.2 of Bochs for BeOS (BeBochs) can be downloaded from BeBits:

  http://www.bebits.com/app/3324

The package installs to: /boot/apps/BeBochs2.2

You have to set up a configuration for Bochs. You should edit the ".bochsrc" to
include the following:

ata0-master: type=disk, path="/path/to/haiku.image", cylinders=122, heads=16, spt=63
boot: disk

Now you can start Bochs:

  $ cd /boot/apps/BeBochs2.2
  $ ./bochs

Answer with RETURN and with some patience you will see Haiku booting.
If booting into the graphical evironment fails you can try to hit "space" at the
very beginning of the boot process. The Haiku bootloader should then come up and
you can select some safe mode options.


Docbook documentation
=====================

Our documentation can be found in 'src/documentation/'. You can build it by
running 'jam' in that folder. The results will be stored in the 'generated/'
folder.
Description
No description provided
Readme 473 MiB
Languages
C++ 52.9%
C 45.9%
Assembly 0.4%
HTML 0.3%
Python 0.1%