Helix Player Quick Start Guide

Helix Player Home > Helix Player Development > Helix Player Quick Start Guide

https://common.helixcommunity.org/files/2004/devdocs/icons/note.gif

Note: This document is old; visit the replacement document!

Helix Player Quick Start Guide


Purpose

The purpose of this document is to give developers step-by-step instructions for obtaining and building the Helix Player source code.

https://common.helixcommunity.org/files/2004/devdocs/icons/note.gif

Note: It is assumed that you have already installed the sources as described in Part 1: Installing and Running CVS, and are ready to build the Helix Player. Note that there are other technology-specific build guides, including guides for Helix DNA Server, Helix DNA Producer, and Helix DNA Client.

Step by Step Instructions

In the following steps, what you type is in bold. What you would type is pretty much the same on all platforms. When there is a significant difference in what you type between platforms, an example of what to type on each platform will be given. In some cases below, some of the text printed on the screen has been shortened for brevity. Whenever this is done you will see ellipses (...) in the place that text was removed. Also note that when we set environment variables in the examples for Unix below, we are assuming the bash shell. The exact method for setting environment variables may differ depending on your platform and shell.

  1. Set your SYSTEM_ID environment variable. The SYSTEM_ID environment variable tells the build system what kind of platform you are running on. An example of how to do this on a typical linux system with a bash shell looks like this:
aragorn@pi2[~] export SYSTEM_ID=linux-2.2-libc6-gcc32-i586

Use the table below to find the appropriate SYSTEM_ID for the system on which you are building. If your system isn't listed below then you can look in the ribosome/build/umakecf for an alternate SYSTEM_ID corresponding to one of the many *.cf files. Please note that if the SYSTEM_ID you choose isn't listed below it is currently not supported and you may need to do some work to get the player to build.

OS arch compiler SYSTEM_ID
Linux x86 gcc 3.2+ linux-2.2-libc6-gcc32-i586
Linux x86 gcc 2.95 linux-2.2-libc6-i586
Linux x86-64 gcc 3.2+ linux-2.6-glibc23-amd64
Linux powerpc gcc 3.2+ linux-2.2-libc6-gcc32-powerpc
Solaris sparc Sun sunos-5.8-sparc
Solaris x86 Sun sunos-5.8-i386
HP-UX powerpc HP hpux-11.0-parisc


  1. Using your favorite text editor, create a .buildrc file in the HOME directory. See BUILD_ROOT/build/doc/buildrc.html for more information on .buildrc files. Make sure that you have at least the lines listed below in your .buildrc file. You will also need to install development packages for ogg, vorbis, theora, dbus, x11, curl, and alsa.
aragorn@pi2[~] cat ~/.buildrc
AddMultiCVS("helix",":ext:aragorn@cvs.helixcommunity.org:/cvsroot/")
AddBIFPath("common", "[helix]/common/build/BIF")
AddBIFPath("client", "[helix]/client/build/BIF")
SetSDKPath("oggvorbissdk", "/usr")
SetSDKPath("curl", "/usr")
SetSDKPath("dbus", "/usr")

  1. Create a new directory to hold the Helix source tree. You can create this directory wherever you want. I usually create a directory that is a peer to my ribosome directory.
aragorn@pi2[~] cd ribosome
aragorn@pi2[~/ribosome] cd ..
aragorn@pi2[~] mkdir helix
aragorn@pi2[~] cd helix

  1. Run the build system by typing build. The build system is a menu-driven python script. In order for each of the following example steps to be clear and complete, we will run the build system, choose the option for that step, and exit. Of course, you don't have to exit and restart between each step.
aragorn@pi2[~/helix] build
Updating [common] BIF files...
cvs server: Updating common/build/BIF

U common/build/BIF/helix.bif
...

Build System Menu
-> Current Directory: /home/aragorn/helix
[0] Set BIF branch (helix)
[1] Set Target(s) (smplayerall)
[2] Set Profile (default)
[3] run: build -trelease
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags: q

  1. From the Build System Menu, set your branch. By default, the Build System uses the HEAD which is the work in progress sources for Helix DNA technology. There are also stable branches created for each product which we ensure it compiles and runs at all times. So we run the build system again, set the stable player branch, then exit.
aragorn@pi2[~/helix] build
Updating [client] BIF files...
cvs server: Updating client/build/BIF

Build System Menu
-> Current Directory: /home/aragorn/helix
[0] Set BIF branch (helix)
[1] Set Target(s) (smplayerall)
[2] Set Profile (default)
[3] run: build -trelease
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags: 0

[0] helix-player
[1] hxclient_1_0_beta_2002-12-20
[2] hxclient_1_0_kittyhawk_2003-02-21
[3] hxclient_1_1_6_neptune
...
[38] hxplay_gtk_stable

Select BIF (Q exits, ? for list): 38

Build System Menu
-> Current Directory: /home/aragorn/helix
[0] Set BIF branch (hxplay_gtk_stable)
[1] Set Target(s) (player_all)
[2] Set Profile (helix-client-all-defines)
[3] run: build -trelease
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags: Q

  1. From the Build System Menu, set your profile. A profile is just a collection of defines that get passed to the compiler to optionally include certain features in the player. These profiles, of which you can make your own, help tailor your player to your environment. You can leave out any feature you don't need in order to save run-time memory and decrease the size of the executable. We won't go into what all these features are right now, but you can find more information about these features in the document that talks about helix feature defines. We want just enough features turned on to build a player which can play MP3 files on disk, and the profile for this is called helix-client-local-mp3.pf. You will find all of the different profiles in BUILD_ROOT/build/umakepf. So we run the build system again, set the profile, then exit.
aragorn@pi2[~/helix] build
Updating [common] BIF files...
cvs server: Updating common/build/BIF

Build System Menu
-> Current Directory: /home/aragorn/helix
[0] Set BIF branch (hxplay_gtk_stable)
[1] Set Target(s) (player_all)
[2] Set Profile (helix-client-all-defines)
[3] run: build -trelease
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags: 2

[0] default
[1] helix-client-all-defines
[2] helix-client-all-defines-free
[3] helix-client-local-audio-all
[4] helix-client-local-mp3
[5] helix-client-local-net-nodist
[6] helix-client-local-net-ra
[7] helix-client-local-net-ra-mp3
[8] helix-client-local-net-ra-rv
[9] helix-client-local-net-ra-rv-mp3
[10] helix-client-local-nodist
[11] helix-client-local-ra
[12] helix-client-local-ra-mp3
[13] helix-client-local-ra-rv
[14] helix-client-local-ra-rv-mp3
[15] helix-client-mobile-local-net-ra-rv-mp3
[16] helix-client-mobile-openwave
[17] helix-client-mobile1
[18] helix-client-net-nodist
[19] helix-client-net-ra
[20] helix-client-net-ra-rv
[21] helix-client-ppc

Select profile or ? for a list: 2

Build System Menu
-> Current Directory: /home/aragorn/helix
[0] Set BIF branch (helix-player)
[1] Set Target(s) (player_all)
[2] Set Profile (helix-client-all-defines-free)
[3] run: build -trelease
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags: Q

  1. Set the build target. The build targets are all listed in the file BUILD_ROOT/build/bif-cvs/helix/common/build/BIF/helix.bif and as you can see if you look at this file, there are a lot of targets. We will choose the target player_all. You either choose this by typing the target name directly or by getting a listing and then entering the index which corresponds to the desired target. We will choose to look through the list and select the index of player_all:
aragorn@pi2[~/helix] build
Updating [common] BIF files...
cvs server: Updating common/build/BIF

Build System Menu
-> Current Directory: /home/aragorn/helix
[0] Set BIF branch (hxplay_gtk_stable)
[1] Set Target(s) (player_all)
[2] Set Profile (helix-client-all-defines-free)
[3] run: build -trelease
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags: 1

[0] List core targets...
[1] List server targets...
[2] List tools targets...
[3] List player targets...
[4] List all targets...
Select target (Q exits, ? for list): 3

[0] player
[1] player_all
[2] player_app
[3] player_app_win
[4] player_example
[5] player_gtk
[6] player_hxclientkit
[7] player_hxclientkit_test
[8] player_inst
[9] player_installer_app
[10] player_installer_archive
[11] player_installer_common
[12] player_installer_postinst
[13] player_installer_rpm
[14] player_installer_stage1
[15] player_mime
[16] player_mime_gnome
[17] player_mime_include
[18] player_mime_kde
[19] player_mime_util
[20] player_plugin
[21] player_tar
Select target (Q exits, ? for list): 1

Build System Menu
-> Current Directory: /home/aragorn/helix
[0] Set BIF branch (hxplay_gtk_stable)
[1] Set Target(s) (player_all)
[2] Set Profile (helix-client-all-defines-free)
[3] run: build -trelease
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags: Q

  1. Optionally, toggle the release flag off. Doing this will give you a debug build of the helix engine which can be used with a debugger like gdb.
aragorn@pi2[~/helix] build
Updating [common] BIF files...
cvs server: Updating common/build/BIF

Build System Menu
-> Current Directory: /home/aragorn/helix
[0] Set BIF branch (hxplay_gtk_stable)
[1] Set Target(s) (player_all)
[2] Set Profile (helix-client-all-defines-free)
[3] run: build -trelease
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags: 5

Build System Menu
-> Current Directory: /home/aragorn/helix
[0] Set BIF branch (hxplay_gtk_stable)
[1] Set Target(s) (player_all)
[2] Set Profile (helix-client-all-defines-free)
[3] run: build
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags: Q

  1. Build the helix player. We do this by selecting the run: build option from the Build System Menu. After we do this, the build system will checkout lots of modules and files from cvs.helixcommunity.org and then begin building them.
aragorn@pi2[~/helix] build
Updating [common] BIF files...
cvs server: Updating common/build/BIF

Build System Menu
-> Current Directory: /home/aragorn/helix
[0] Set BIF branch (hxplay_gtk_stable)
[1] Set Target(s) (player_all)
[2] Set Profile (helix-client-all-defines-free)
[3] run: build
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags: 3

Build System (V2.0)
time: Thu Oct 24 13:07:34 2002
outfile: build.out
branch: hxplay_gtk_stable
platform: linux-2.2-libc6-i386
distribution/archive from: linux-2.2-libc6-gcc32-i586
build Type: debug
build options:
copy target: debug
target(s): player_all

Updating [common] BIF files...
reading bif="/home/aragorn/ribosome/build/bif-cvs/helix/client/build/BIF/hxplay_gtk_stable.bif" file
computing dependency tree
getting files
checking out repository source
cvs module="common/runtime" from cvs tag="hxclient_1_3_0_neptunex" root="helix"
cvs module="common/system" from cvs tag="hxclient_1_3_0_neptunex" root="helix"
cvs module="common/container" from cvs tag="hxclient_1_3_0_neptunex" root="helix"
...
cvs module="video/include" from cvs tag="hxclient_1_3_0_neptunex" root="helix"
cvs module="video/colconverter" from cvs tag="hxclient_1_3_0_neptunex" root="helix"
cvs module="client/resource" from cvs tag="hxclient_1_3_0_neptunex" root="helix"

updating file="./common/include/platform.h" for platform="linux-2.2-libc6-gcc32-i586"
compiling
from directory /home/aragorn/helix
entering directory common/runtime
UNIXCompile(common/runtime): generating makefiles
UMAKE: Umakefil -> Makefile in common/runtime
UMAKE: Applying profile helix-client-all-defines-free.pf
UNIXCompile(common/runtime): making depend
UNIXCompile(common/runtime): making all
UNIXCompile(common/runtime): making copy
leaving directory /home/aragorn/helix/./common/runtime
from directory /home/aragorn/helix
...
entering directory player/app/gtk
UNIXCompile(player/app/gtk): generating makefiles
UMAKE: Umakefil -> Makefile in player/app/gtk
UMAKE: Applying profile helix-client-all-defines-free.pf
UNIXCompile(player/app/gtk): making depend
UNIXCompile(player/app/gtk): making all
UNIXCompile(player/app/gtk): making copy
leaving directory /home/aragorn/helix/./player/app/gtk
...
signing output binaries
Build Complete: Thu Oct 24 13:13:10 2002
MD5 (debug/auddevlib.lib).............5d0d4931e3ea05d34876a6a7e660c355
MD5 (debug/audmixlib.lib).............fcf43c8f9dcea3925796576a932f47b6
...
MD5 (debug/vidsvclib.lib).............7a288306f6efdf20d3f9d7be9fb5d487
MD5 (debug/xmllib.lib)................5667e3b9a9e3e888209e32c9837295e0

Build System Menu
-> Current Directory: /home/aragorn/helix
[0] Set BIF branch (hxplay_gtk_stable)
[1] Set Target(s) (player_all)
[2] Set Profile (helix-client-all-defines-free)
[3] run: build
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags: Q

  1. Run helix player's installer:
aragorn@pi2[~/helix] cd debug
aragorn@pi2[~/helix/debug] ./hxplay-X.X.X.X-linux-2.2-libc6-gcc32-i586.bin

Or, on an RPM-based system (like Fedora) you can install using the RPM command:

aragorn@pi2[~/helix] cd debug
aragorn@pi2[~/helix/debug] rpm -ivh HelixPlayer-X.X.X.X-YYYYMMDD.i586.rpm

  1. Test the helix player. We will play the test MP3 file downloaded from http://mp4server.real.com/helixdna/test.mp3 and saved in your home directory (~/.)
aragorn@pi2[~/helix/debug] cd ~
aragorn@pi2[~] cd HelixPlayer
aragorn@pi2[~/HelixPlayer] ./hxplay test.mp3

Or, if you installed using RPM you should have the player already in your PATH, so you can run it like this:

aragorn@pi2[~/HelixPlayer/debug] hxplay test.mp3

At this point you should see the player's UI, be able to open the test MP3 file via the file/open dialog and hear music!


Navigation

Home

Forums

FAQ

Overview