Build Script

From Rhomobile

Jump to: navigation, search

This page is for the overall direction of the build scripts

Contents

Directory Structure

Visible rake tasks

This describes the tasks that are visible when running rake -T. There may be significantly more tasks that can be run, but this is what we would present to the user.

Current

rake build:android:all          # build all
rake build:android:rhobundle    # Build RhoBundle for android
rake build:android:rhodes       # Build Rhodes for android
rake build:android:rjava        # Generate R.java file
rake build:android:rubyvm       # Build RubyVM for android
rake build:bb:rhobundle         # Build rhoBundle
rake build:bb:rhodes            # Build rhodes
rake build:bb:rubyvm            # Build RubyVM
rake build:iphone:rhobundle     # Build iphone rhobundle
rake build:iphone:rhodes        # Build rhodes
rake build:wm:rhobundle         # Build wm rhobundle
rake buildall:bb:production     # Build all jdk versions for blackberry
rake clean:android:all          # clean android
rake clean:bb:all               # Clean all
rake clean:bb:packaged          # Clean packaged files
rake clean:bb:preverified       # Clean preverified jars
rake clean:bb:tempdir           # Clean temp dir
rake clean:iphone:rhobundle     # Clean rhobundle
rake clean:iphone:rhodes        # Clean rhodes binaries
rake device:android:debug       # build self signed for debug
rake device:android:production  # build signed for production
rake device:bb:dev              # Build and package dev for device
rake device:bb:production       # Build and package for production
rake device:bb:rhobundle        # Build and package dev rhobundle for device
rake get_version                # Get versions
rake package:bb:dev             # Package all dev (each part in separate pa...
rake package:bb:production      # Package all production (all parts in one ...
rake package:bb:rhobundle       # Package rhoBundle
rake package:bb:rhodes          # Package rhodesApp
rake package:bb:rubyvm          # Package rubyVM
rake prebuild:android           # Build binaries for anroid to be inserted ...
rake prebuild:bb                # Prebuild binaries for blackberry gems
rake prebuild:iphone            # Prebuild iPhone binaries for gems
rake prebuild:wm                # Prebuild binaries for WM gems
rake run:android                # build and launch emulator
rake run:bb                     # Builds everything, loads and starts sim
rake run:bb:startmdsandsim      # Starts mds and sim
rake run:iphone                 # Builds and launches app in simulator
rake set_version[version]       # Set version

Proposed

rake clean:android:all          # Clean android
rake clean:bb:all               # Clean bb
rake clean:iphone:all           # Clean iphone
rake clean:wm:all               # Clean wm
rake device:android:debug       # Build debug self signed for device
rake device:android:production  # Build production signed for device
rake device:bb:debug            # Build debug for device
rake device:bb:production       # Build production for device
rake device:iphone:debug        # Build debug for device
rake device:iphone:production   # Build production for device
rake get_version                # Get versions
rake run:android                # Builds everything, launches android emulator
rake run:bb                     # Builds everything, loads and starts bb sim and mds
rake run:iphone                 # Builds everything, launches iphone simulator
rake set_version[version]       # Set version

Configuration Files

These sections describe the intent of the two configuration files. The exact contents may differ than what is here.

rhobuild.yml (in sdk folder)

  • All settings required for building that does not depend on the application
env:
  app: C:/rhodes-app
  appname: Rhodes
  version: 1.2.0
  vendor: rhomobile
  bbver: 4.6
  applog: rholog.txt
  paths:
    java: C:/Program Files/Java/jdk1.6.0_11/bin
    android: C:/android-sdk-windows-1.5_r2
    cabwiz: C:/Program Files/Windows Mobile 6 SDK/Tools/CabWiz
    4.6:
      jde: C:/Program Files/Research In Motion/BlackBerry JDE 4.6.0
      mds: C:/Program Files/Research In Motion/BlackBerry JDE 4.6.0/MDS
      sim: 9000
    4.2:
      jde: C:/Program Files/Research In Motion/BlackBerry JDE 4.2.0 
      mds: C:/Program Files/Research In Motion/BlackBerry Email and MDS Services Simulators 4.1.2/MDS
      sim: 8100
  iphone:
    configuration: Debug
    sdk: iphonesimulator3.0
    codesignidentity: 
    entitlements:

build:
  bbpath: platform/bb
  wmpath: platform/wm
  androidpath: platform/android
  iphonepath: platform/iphone
  symbianpath: platform/symbian
  bb:
  bbsignpwd: "somepasswordhere"

excludedirs:
  bb:
    - public/js/iui
    - public/js/jquery*
    - public/js/prototype*

build.yml (in application folder)

  • Generated by rhogen, prepopulates sdk path
  • App specific settings, version, vendor, name etc.
sdk: "c:/work/rhodes-source"
version: 1.2.2
vendor: rhomobile
bbver: 4.6
applog: rholog.txt

Installation process

Delivery

Gem installation

  • gem install rhodes
  • run command line: rhodes-setup

Github installation

  • unzip snapshot or clone into some folder
  • add <installfolder>/bin to path
  • run command line: rhodes-setup

Setup

A ruby script, 'rhodes-setup' that is in the bin folder. This script will attempt to auto-detect the installed directories for the required SDK's and will prompt the user for ones that it cannot find. It will then rewrite the rhobuild.yml with the correct information.

Things to prompt for:

  • java bin folder
  • android sdk folder
  • cabwiz location
  • blackberry jde locations
  • certificate info?

LB: Maybe echo some info about the ruby environment (mention any required gem dependencies, etc...)

Personal tools