How I package OpenSource Packages PDF Print E-mail
User Rating: / 2
PoorBest 
Written by Michael Felt   

The basics

Start with a fresh install of AIX – I focus on AIX 5.3 TL07 SP00.

The only “non-standard” packages are: openssh.base, bos.adt.insttools and bos.adt.libm. OpenSSH because I want it, bos.adt.insttools for the AIX command mkinstallp, and bos.adt.libm as it is needed by many things once you start compiling.


I also install my 'build' scripts – packaged as aixtools.buildaix (see http://www.aixtools.net/index.php/buildaix).

KISS - Keep it Stupidly Simple

So, taking a well-written (to be portable) project such as OpenBSD – OpenSSH-portable – basic packaging is very simple – one command!


  1. install AIX with additional filesets and buildaix

  2. Download and unpack the OpenSource project

  3. change the the base directory

  4. buildaix (and wait)

Details


  1. Install AIX – that is your job

  2. cd /tmp
    wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.6p1.tar.gz
    gzip -dc openssh-7.6p1.tar.gz | tar xf -

  3. cd openssh-7.6p1

  4. buildaix (need to be root for this to complete)


There is some output to inform you what is being done, and stderr messages still appear on screen. At the end you should see something such as:


+ mkinstallp.ksh /var/buildaix/tmp/openssh/7.6.0.1601 > .buildaix/mkinstallp.out

==============================

buildaix.tmp.openssh:buildaix.tmp.openssh.man.en_US:7.6.0.1601::I:T:::::N:tmp openssh man pages::::0::

buildaix.tmp.openssh:buildaix.tmp.openssh.rte:7.6.0.1601::I:T:::::N:tmp openssh 05-Dec-2017::::0::


A name such as buildaix.tmp.openssh is probably not what you are looking for.


BUILDAIX creates a LPP package name from four key variables:

$PROGRAM – by default “buildaix”

$PRODUCT – by default the name of the sub-directory

$FILESET – by default the name of the current directory – without numerics

$VRMF – by default taken from the “numerics” of the current directory.


Further when $PROGRAM == $PRODUCT or $PRODUCT == $FILESET the name is shortened.


So, lets say I want this packaged as acme.openbsd.openssh I would do the following:


# PROGRAM=acme buildaix -P openbsd

...

+ mkinstallp.ksh /var/acme/openbsd/openssh/7.6.0.1601 > .buildaix/mkinstallp.out

==============================

acme.openbsd.openssh:acme.openbsd.openssh.man.en_US:7.6.0.1601::I:T:::::N:openbsd openssh man pages::::0::

acme.openbsd.openssh:acme.openbsd.openssh.rte:7.6.0.1601::I:T:::::N:openbsd openssh 05-Dec-2017::::0::

buildaix.tmp.openssh:buildaix.tmp.openssh.man.en_US:7.6.0.1601::I:T:::::N:tmp openssh man pages::::0::

buildaix.tmp.openssh:buildaix.tmp.openssh.rte:7.6.0.1601::I:T:::::N:tmp openssh 05-Dec-2017::::0::

 

Or, use export PROGRAM=acme


So, to get the package to be called acme.openssh – use:

# export PROGRAM=acme

# buildaix -P openssh -F openssh


root@x072:[/tmp/openssh-7.6p1]export PROGRAM=acme

root@x072:[/tmp/openssh-7.6p1]buildaix -P openssh -F openssh

...

+ mkinstallp.ksh /var/acme/openssh/openssh/7.6.0.1601 > .buildaix/mkinstallp.out

==============================

acme.openbsd.openssh:acme.openbsd.openssh.man.en_US:7.6.0.1601::I:T:::::N:openbsd openssh man pages::::0::

acme.openbsd.openssh:acme.openbsd.openssh.rte:7.6.0.1601::I:T:::::N:openbsd openssh 05-Dec-2017::::0::

acme.openssh:acme.openssh.man.en_US:7.6.0.1601::I:T:::::N:openssh man pages::::0::

acme.openssh:acme.openssh.rte:7.6.0.1601::I:T:::::N:openssh 05-Dec-2017::::0::

buildaix.tmp.openssh:buildaix.tmp.openssh.man.en_US:7.6.0.1601::I:T:::::N:tmp openssh man pages::::0::

buildaix.tmp.openssh:buildaix.tmp.openssh.rte:7.6.0.1601::I:T:::::N:tmp openssh 05-Dec-2017::::0::

==============================

 
Next >
Login
61 queries executed
1
SET sql_mode = 'MYSQL40'
2 SELECT folder, element, published, params FROM jos_mambots WHERE published >= 1 AND access <= 0 AND folder = 'system' ORDER BY ordering
3 SELECT template FROM jos_templates_menu WHERE client_id = 0 AND ( menuid = 0 OR menuid = 309 ) ORDER BY menuid DESC LIMIT 1
4 DELETE FROM jos_session WHERE ( ( time < '1548313714' ) AND guest = 0 AND gid > 0 ) OR ( ( time < '1548313714' ) AND guest = 1 AND userid = 0 )
5 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'Unknown' AND type = 0
6 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'Unknown' AND type = 0
7 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'Unknown' AND type = 1
8 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'Unknown' AND type = 1
9 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'com' AND type = 2
10 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'com' AND type = 2
11 SELECT * FROM jos_menu WHERE id = 309
12 SELECT a.*, u.name AS author, u.usertype, cc.name AS category, s.name AS section, g.name AS groups, s.published AS sec_pub, cc.published AS cat_pub, s.access AS sec_access, cc.access AS cat_access, s.id AS sec_id, cc.id as cat_id FROM jos_content AS a LEFT JOIN jos_categories AS cc ON cc.id = a.catid LEFT JOIN jos_sections AS s ON s.id = cc.section AND s.scope = 'content' LEFT JOIN jos_users AS u ON u.id = a.created_by LEFT JOIN jos_groups AS g ON a.access = g.id WHERE a.id = 818 AND ( a.state = 1 OR a.state = -1 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2019-01-24 08:23' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2019-01-24 08:23' ) AND a.access <= 0
13 SELECT a.id FROM jos_content AS a WHERE a.catid = 19 AND a.state = 1 AND a.access <= 0 AND ( a.state = 1 OR a.state = -1 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2019-01-24 08:23' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2019-01-24 08:23' ) ORDER BY a.created DESC
14 SELECT ROUND( v.rating_sum / v.rating_count ) AS rating, v.rating_count FROM jos_content AS a LEFT JOIN jos_content_rating AS v ON a.id = v.content_id WHERE a.id = 818
15 UPDATE jos_content SET hits = ( hits + 1 ) WHERE id = '818'
16 SELECT hits FROM jos_core_log_items WHERE time_stamp = '2019-01-24' AND item_table = '#__content' AND item_id = '818'
17 UPDATE jos_core_log_items SET hits = ( hits + 1 ) WHERE time_stamp = '2019-01-24' AND item_table = '#__content' AND item_id = '818'
18 SELECT folder, element, published, params FROM jos_mambots WHERE access <= 0 AND folder = 'content' ORDER BY ordering
19 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'urlkey'
20 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'snapshotactiv'
21 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'snapshotother'
22 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
23 SELECT * FROM jos_mambots WHERE id = '32'
24 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
25 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
26 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
27 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
28 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
29 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
30 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
31 SELECT * FROM jos_mambots WHERE id = '27'
32 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
33 SELECT * FROM jos_mambots WHERE id = '27'
34 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
35 SELECT * FROM jos_mambots WHERE id = '27'
36 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
37 SELECT * FROM jos_mambots WHERE id = '27'
38 SELECT params FROM jos_mambots WHERE element = 'mosemailcloak' AND folder = 'content'
39 SELECT a.* FROM jos_components AS a WHERE ( a.admin_menu_link = 'option=com_syndicate' OR a.admin_menu_link = 'option=com_syndicate&hidemainmenu=1' ) AND a.option = 'com_syndicate'
40 SELECT m.id FROM jos_modules AS m WHERE m.module = 'mod_rssfeed' AND m.published = 1
41 SELECT id, title, module, position, content, showtitle, params FROM jos_modules AS m INNER JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id != 1 AND ( mm.menuid = 0 OR mm.menuid = 309 ) ORDER BY ordering
42 SELECT id FROM jos_menu WHERE link = 'index.php?option=com_search' AND published = 1
43 SELECT m.*, sum(case when p.published=1 then 1 else 0 end) as cnt FROM jos_menu AS m LEFT JOIN jos_menu AS p ON p.parent = m.id WHERE m.menutype='rt_splitSuckerFish' AND m.published='1' AND m.access <= '0' GROUP BY m.id ORDER BY m.parent, m.ordering
44 SELECT m.* FROM jos_menu AS m WHERE menutype='rt_splitSuckerFish' AND m.published='1'
45 SELECT * FROM jos_banner WHERE showBanner=1
46 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
47 SELECT * FROM jos_mambots WHERE id = '32'
48 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
49 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
50 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
51 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
52 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
53 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
54 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
55 SELECT * FROM jos_mambots WHERE id = '27'
56 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
57 SELECT * FROM jos_mambots WHERE id = '27'
58 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
59 SELECT * FROM jos_mambots WHERE id = '27'
60 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
61 SELECT * FROM jos_mambots WHERE id = '27'