[OpenIndiana-discuss] building software in OI

Andreas Wacknitz A.Wacknitz at gmx.de
Fri Oct 9 14:50:20 UTC 2020


Am 09.10.20 um 16:05 schrieb Tony Brian Albers:
> Hi,
>
> OK, this might just be me being dumb, but I can't find any info on how
> to build applications from source to/on OI anywhere.
>
> If, for instance, I want to build xeyes, where do I find the necessary
> header files etc? It's easy to get a hold of gcc etc. but I'm really
> struggling finding -devel packages(like xorg-devel in Linux i.e.)
>
> Am I missing something obvious? I'm not a programmer, and the OI wiki's
> description of oi-userland just confuses me. The github description
> doesn't help either. It's vogon to me.
>
> TIA for any pointer/suggestions
>
> /tony
>
Hi Tony,

The recommended way to build applications on OI has been documented on
our new (yet unfinished) Hipster Handbook in "Building with
oi-userland": https://docs.openindiana.org/dev/userland/

A more precise formulation would be "build and deploy applications on
OI" because when you have
built a software eg. by compiling and linking all sources, you won't
stop there but go on and create a package of it.

Using a fork of oi-userland will also make it possible for you to
contribute to OI's development.

I assume that you are familiar with Github and have already an account
there. If you don't you can only create
local clones (no fork on Github).

The (simplified) steps look like this:

1. Create your own fork of oi-userland
(https://github.com/OpenIndiana/oi-userland) on GitHub by means of the
"fork" button in the upper right corner.
     You just have to answer some question in the following dialog.

2. Create a local clone of it on your computer (copy the URI of your
fork in your buffer via the green "Code" button in your Github fork):
     cd <work directory for your oi work>
     # Clone your own fork on Github. This creates a git remote with the
name "origin":
     git clone <paste the URI of your fork of oi-userland>
     cd oi-userland
     # Add OI's repository as a remote under the name "upstream"
     git remote add upstream https://github.com/OpenIndiana/oi-userland.git
     # Get everything from OI's repository:
     git fetch upstream && git merge upstream/oi/hipster
     # Prepare system:
     gmake setup

3. After you have successfully created a local clone of oi-userland with
the remotes "origin" and "upstream" you are ready for working on it.
     As a first step you should make yourself with the structure and
contents of the repository.
     There is a "doc" with valuable information to read (depending on
your level of knowledge you will not grasp all at once).
     The most important subfolder is "components" which holds a folder
for every package of the repository (in the leave folders).
     For every software you want to update or add to the repository
follow the next steps:
3.1 cd <work directory of your oi work>
       git pull upstream   # Make sure to sync with the newest from OI
       git checkout -b <branch name for your work>  # Always create a
new branch for your work, eg. "git checkout -b nodejs-update"
       cd components   # All package "source descriptions" are either
located here or in a sub folder
       cd <folder of your application>   # eg. "cd runtime/node14". It
may be necessary to create a new folder if you are starting from scratch
for a new application
       <create necessary files, like Makefile, <package manifest>, ...>
3.2 When you are done with your changes run one of the following
commands (look at doc/makefile-targets.txt for explanations and more
targets). Fix errors :)
       gmake build
       gmake sample-manifest
       gmake publish  # This creates a new package revision in your
local repository
3.3 When you are done with everything you will add all new or changed
files and commit it to your repository:
         git add <files>
         git commit -m "<enter a commit message here>" # This will add a
commit on your local repository in the active branch (from3.1).
       When you want to publish your additions/changes the next step
would be to upload your commit(s) to your own fork on Github:
         git push origin <branch name>:<branch name>   # eg. "git push
origin nodejs-update:nodejs-update"
3.4 If you want to add to OI's repository you can create a Pull Request
(PR) when you log in to Github.


It will take some time to get familiar with this but I think it's worth
the efforts.

Andreas



More information about the openindiana-discuss mailing list