summaryrefslogtreecommitdiff
path: root/packaging/README.md
blob: ec3e8a1001300f71b75d12ab5058274206de2cfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# TIZEN GIT BUILD SYSTEM (GBS) 

This file contains the spec files used to create a Tizen RPM through
gbs (Git Build System).

If you are looking to build a regular RPM for debian use, please check out the 
'rpm' target of the top-level Makefile

# PREPARATION
Since the erlang build tool 'rebar' will download dependencies using
git-https the GBS build environment will fail on two items:

## Setting up GBS 
The GBS build system can be setup as described
[here](https://source.tizen.org/documentation/reference/git-build-system).


## Setting up repositories

The RVI build generated by GBS has a self-contained erlang runtime
system. This means that erlang does **not** have to be installed on
the target machine.

However, during the build process an erlang RPM needs to be installed
in the build environment. A tizen-targeted Erlang is available on github:

    https://github.com/PDXostc/erlang_otp


Pre-built RPMs are available under rvi_core/packaging/repo.
This directory also contains all erlang RPM's necessary for the
RVI build to complete. In order to have this repo pulled, the ```.gbs.conf```
in your home directory needs to be updated.
Add the following repo at the bottom of the ````.gbs.conf file```:

    [repo.erlang]
	# We still haven't determined the right repo to 
	# store the RPM file in. Use alternative repo setup
	# for now.
	#url = http://XXXXXXXXXXXXXXXXXXXXXXXXX
	
Update the ```repos``` line in ```.gbs.conf``` from

    repos = repo.tizen_2.0

to

    repos = repo.tizen_2.0,repo.erlang

*Please note that your initial value of ```repos``` entry may differ.*

## Alternative set up of repositories 

A suitable erlang RPM file is packaged as a part of RVI. This can be
used instead of pulling the RPM from a repo, as describe above.

To use the RVI-packagederlang RPM file, add the following lines
```.gbs.conf```:

    [repo.erlang]
    url = /home/some_user/work/rvi/packaging/repo

*Replace the ```/home/some_user/work/rvi``` with the path to the RVI
 root directory you are building in*


# BUILDING
Go to the top directory of RVI and execute:

    gbs build -A i586

An RPM file will be generated at the end of the build which can be
installed on a Tizen box. The RPM can be found at:

    ~/GBS-ROOT/local/repos/tizen/i586/RPMS/rvi-0.5.0-1.i686.rpm


# UPDATING REBAR DEPENDENCIES
All erlang dependencies, residing in ```deps```, are checked in with rvi_core in order
to avoid having GBS and OBS to access the network to resolve them.
If a new or updated module is to be included in deps, the following procedure
can be used:

1. <b>Update rebar.config</b><br>
Edit rebar.config to include the correct version of the modules you need.

2. <b>Clear deps</b><br>
Delete the old deps with:

    ```rm -rf deps/*```

3. <b>Retrieve new deps</b><br>
Use rebar to retrieve all modules listed in rebar.config.

    ```rebar get-deps```

3. <b>Clean out git info from deps</b><br>
The checked out modules in deps are all their own repos. Clear the
repo information.

    ```rm -rf deps/*/.git
	find deps -name .gitignore | xargs rm```

4. <b>Add all new files in deps to the rvi_core repo</b><br>
If any new files are added to deps by ```rebar get-deps``` above, they
need to be added to the repo:

    ```git add deps/*```

5. <b>Commit rvi_core</b><br>
Commit the updated deps directory to the repo:

    ```git commit -a -m "Updated deps/gsm to version x"```