Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Linux - NOTE: In all cases you MUST install a 32-bit OS (Either CentOS, Fedora, or Ubuntu)

The Linux build environment documented on this page is based on a basic Fedora Core 15 installation CD. There are CentOS 6- and Ubuntu-specific notes below. It should also be possible to use a previously existing Linux installation, assuming that you have all of the required packages described below. The following section describes how to set up a machine from scratch.

...

Install Fedora Core 15 i386 CD or CentOS 6.x or Ubuntu 12.04 LTS (64 bit not currently supportedsupported. Note specific platform notes below, and at bottom.)

  1. #!* Choose and make note of the root password
    • Create your user (remember the password)
  2. Update the software on the system
    • System->Administration->Update System
      • If you get the following error "Transaction error could not add package update for <distro info>". The work around is typing the following on the command line:
        $su -
        $yum update
  3. Convert your user to a "sudoer"
    • Get a terminal window (Applications->System Tools->Terminal)
    • Type 'su -'  (no quotes)
    • Enter root passwordvim /etc/sudoers
    • Fedora, CentOS
      • visudo
      • add the following line toward the end of the file (assuming your user name was steve)
      • %steve ALL=(ALL) ALL
    • Ubuntu
      • Add user to "sudo" group in /etc/group in 12.04 LTS, or "admin" group in earlier versions, e.g.
        sudo:x:27:steve
        admin:x:25:steve
  4. Install all the required Linux packages  (CentOS, Fedora. See bottom for Ubuntu).
    Install all the required Linux packages
    • cut and paste this to the terminal window:
    • sudo yum install gcc gcc-c++ make gettext patch bison flex liboil liboil-devel zlib zlib-devel libxml2 libxml2-devel doxygen libX11-devel libXext libXext-devel mesa-libGLU-devel atk atk-devel pango pango-devel cairo cairo-devel libjpeg libjpeg-devel libtiff libtiff-devel man-pages perl-Net-Telnet perl-Digest-SHA1 svn ant ant-jdepend
    • sudo rpm -ivh http/fedorastable
    • sudo yum

      install vlc
    • sudo yum install mozilla-vlc
    • clean all      (remove "RPMDB altered outside of yum" warning, if necessary)

    • Install necessary packages

      Code Block
      sudo yum install gcc gcc-c++ make gettext patch bison flex liboil liboil-devel zlib zlib-devel libxml2 libxml2-devel doxygen libX11-devel libXext libXext-devel mesa-libGLU-devel atk atk-devel pango pango-devel cairo cairo-devel libjpeg libjpeg-devel libtiff libtiff-devel man-pages perl-Net-Telnet perl-Digest-SHA1 svn vlc mozilla-vlc
  5. Check the RI Code out to populate your machine
    Check the RI Code out to populate your machine
    • Start in your home directory ('cd ')
    • mkdir CableLabsRI
    • cd CableLabsRI
    • svn co https://community.cablelabs.com/svn/OCAPRI/trunk
    • Enter your credentials when prompted, then wait as it checks out the trunk. You now have the majority of the tree for Linux on your machine under /home/<user>/CableLabsRI/trunk
  6. Ensure SELinux is disabled disabled  (CentOS, Fedora. Ubuntu does not install and enable SELinux by default.)
    • Activate menu by selecting System->Administration->SELinux Management
    • Enter root password
    • In Status Tab, set System Default Enforcing Mode to Disable
    • For Fedora 15 and CentOS:
      • sudo vi /etc/sysconfig/selinux
        change SELINUX=enforcing to SELINUX=disabled
         :wq (save and quit).
          You have to reboot the system for this to take effect.wq (save and quit).
          You have to reboot the system for this to take effect.
  7. Install the Sun 1.6 Java Development Kit (Java SE JDK 6 Update XX)
    • Note: Installation of Sun's JDK is not necessary - the Open JDK has already been installed (and works).
      However, the Open JDK developer tools must be installed (i.e. the full JDK, not just the JRE):
      For CentOS: 
      yum install java-1.6.0-openjdk java-1.6.0-openjdk-devel

      For Ubuntu:
      See full apt-get command at bottom.

    • For Sun JDK:

    Install the Sun 1.6 Java Development Kit (Java SE JDK 6 Update 13)
    • Installation of Sun's JDK is not necessary - the Open JDK has already been installed (and works).

    • Go to http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u31-download-1501634/index.html
    • Select latest JDK 6 Update 13 Download
    • Select Platform: Linux Language: Multi-language, select checkbox accepting the License agreement
    • Select jdk_6u136uxx-linux-rpm.bin, and "Save File" when prompted
    • in ~/Download, do 'chmod +x jdk-6u136uxx-linux-i586-rpm.bin' (no quotes)
    • sudo ./jdk-6u136uxx-linux-i586-rpm.bin
    • Accept the license, and watch the jdk get installed
    • Ignore the registration
  8. Get ant 1.8 or later
  9. Edit your environment to get ready to build
    • Edit .bashrc in your home directory
    • Add the following lines to the end, replacing "steve" with your user name
Code Block
xml
xml

 ############################################################
 # Env variables required for building the OCAP Stack and JVM
 #
 # Notice the use of "forward slashes" in all paths.  This is
 # required for the Cygwin build system.
 ##############################################################

 # The root of the stack source tree
 export OCAPROOT=~steve/CableLabsRI/trunk/ri/RI_Stack

 # Identifies the host development platform.  See $OCAPROOT/hostconfig
 export OCAPHOST=Linux
 #export OCAPHOST=wxWidgets

 # Stack build target
 export OCAPTC=CableLabs/simulator/Linux/debug

 # Ant and Java Home directories
 export JAVA_HOME=/usr/java/jdk1.6.0_13
 export ANT_HOME=~/apache-ant-1.8.24


 # Add Java, Ant, and Doxygen  bin directories to the path.  Notice the use of
 # Cygwin drive designations instead of Windows
 export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH:~/atelite/bin:

 ##############################################################
 # Env variables required for building the RI Platform
 #
 # Notice the use of "forward slashes" in all paths.  This is
 # required for the Cygwin build system.
 ##############################################################

 # The directory root of the RI platform source tree
 export PLATFORMROOT=~steve/CableLabsRI/trunk/ri/RI_Platform
 # Identifies the host development platform.  See $PLATFORMROOT/hostconfig
 export PLATFORMHOST=Linux
 # Platform build target
 export PLATFORMTC=Linux/debug

# For the Manufacturers Enviornement
export MFGROOT=c:/CableLabsRI/Subversion/MfgEnv
export MFGTC=Win32/debug

 export RICOMMONROOT=~steve/CableLabsRI/trunk/common
 export HE4RIROOT=~steve/CableLabsRI/trunk/emu/HeDri/Emulator

...

  1. Build the platform (the support code for the OCAP stack)
    • Start a new terminal session to pick up the environment changes you just made
    • cd $PLATFORMROOT
    • make clean purge build
  2. Build the OCAP stack (the Java VM and support libraries)
    • cd $OCAPROOT
    • ant clean
    • ant purge (this will may fail due to a bug in the build script for now - ignore)
    • ant build
    • This should build the stack - Yahoo! Wait for complete with no errors
    • From this point forward, 'ant purge' should work, so you can do a super-clean build using 'ant clean purge build'

Subsequent Builds

  1. Building the platform (assuming you did not change the support libraries)
    • From $PLATFORMROOT do 'build source'

Required Linux Packages

You should first install all of the recommended additional packages that the Fedora system manager directs you to.

...

Add your user group to sudoers file

*(Fedora/CentOS-only) In order to run ATE tests, the RI Platform must be able to connect to certain network ports that are only available to processes running as root. To facilitate this, we have modified the runPlatform_linux.sh startup script to always execute the RI process as root. On Linux systems, non-root users must add their user group to a list of groups that are allowed to gain root privileges. The list of these groups is found in the /etc/sudoers file. Edit this file and add your user group to one of the two sections

Code Block
xml
xml

## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##  user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)   ALL

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
# %wheel    ALL=(ALL)   ALL                                ---------------->      Add your group using this syntax if you want
                                                                                  to be required to enter a password each time
## Same thing without a password
# %wheel    ALL=(ALL)   NOPASSWD: ALL
%myusergroup  ALL=(ALL)   NOPASSWD: ALL        --------------->      Add your group using this syntax if you DO not
                                                                    want to be required to enter a password each time
## Allows members of the users group to mount and unmount the
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

Selecting a User Interface Target

On the Linux platform, there are currently two user interface targets:

  • Native libX11 Windows
  • wxWidgets Windows (default)

To build the native X11 Windows UI target, uncomment the line

UI_TARGET = Linux

in the target/Linux/debug/defs.mk file. To build for the cross-platform wxWidgets UI target, uncomment the line

UI_TARGET = wxWidgets

in the target/Linux/debug/defs.mk/ file. Make sure that the target you are NOT interested in is also commented out.

Ubuntu Specific Notes

 to mount and unmount the
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

...

Selecting a User Interface Target

On the Linux platform, there are currently two user interface targets:

  • Native libX11 Windows
  • wxWidgets Windows (default)

To build the native X11 Windows UI target, uncomment the line

UI_TARGET = Linux

in the target/Linux/debug/defs.mk file. To build for the cross-platform wxWidgets UI target, uncomment the line

UI_TARGET = wxWidgets

in the target/Linux/debug/defs.mk/ file. Make sure that the target you are NOT interested in is also commented out.

Ubuntu Specific Notes

Ubuntu 10.04.01 LTS, 10.10, the following command will install all prerequisite packages.

Code Block
languagenone
sudo apt-get install gcc make gettext patch bison flex liboil0.3 liboil0.3-dev libxml2 libxml2-dev doxygen libX11-dev libxext6 libxext-dev libglu1-mesa-dev libatk1.0-0 libatk1.0-dev libpango1.0-common libpango1.0-dev libcairo2 libcairo2-dev libtiff4 libtiff4-dev manpages libnet-telnet-perl libdigest-sha1-perl subversion ant1.8 libjdepend-java openjdk-6-jdk vlc

 

...

Ubuntu 11.04, 11.10 Using a default install of Ubuntu 10.10, the following command will install all prerequisite packages.

Code Block
languagenone

sudo apt-get install gcc make gettext patch bison flex liboil0.3 liboil0.3-dev libxml2 libxml2-dev doxygen libX11-dev libxext6 libxext-dev libglu1-mesa-dev libatk1.0-0 libatk1.0-dev libpango1.0-common libpango1.0-devlibpango* libcairo2 libcairo2-dev libtiff4 libtiff4-dev manpages libnet-telnet-perl libdigest-sha1-perl subversion ant1.8ant libjdepend-java openjdk-6-jdk vlc xsltproc


...

Using a default install of Ubuntu 1112.04 , 11.10 the following command will install all LTS prerequisite packages.

Code Block
languagenone

sudo apt-get install gcc make gettext patch bison flex liboil0.3 liboil0.3-dev libxml2 libxml2-dev doxygen libX11-dev libxext6 libxext-dev libglu1-mesa-dev libatk1.0-0 libatk1.0-dev libpango* libcairo2 libcairo2-dev libtiff4 libtiff4-dev manpages libnet-telnet-perl libdigest-sha1-perl subversion ant libjdepend-java openjdk-6-jdk vlc xsltproc
telnet-perl libdigest-sha-perl subversion ant libjdepend-java openjdk-6-jdk vlc xsltproc

fix SHA1.pm renaming issue

Code Block
sudo cpan Digest::SHA1

If you do a fresh install of 12.04 (as opposed to an upgrade from 11.x) and need build CTP test streams run:

Code Block
sudo cpan HTTP::Request
sudo cpan LWP::UserAgent.pm

 

All Ubuntu

Add these lines to ~/.bashrc:

export

...

 JAVA_HOME=/usr/

...

lib/jvm/java-6-openjdk
export PATH=$PATH:~/atelite/bin

export ANT_HOME=/usr/share/ant

OR

export ANT_HOME=~/apache-ant-1.8.4

If you have scripts or other that use /bin/sh, configure to use bash instead of dash:

Code Block
sudo dpkg-reconfigure dash

...and answer No

 lib/jvm/java-6-openjdk
export PATH=$PATH:~/atelite/bin