Distraction, Inspiration and Aspiration: Autotools and AIX PDF Print E-mail
User Rating: / 1
PoorBest 
Written by Michael Felt   
Distraction: how does that become Inspiration?
Inspiration: when does that become Aspiring?.

Aspiration: My vision for GNU Autotools and AIX.

Distraction

GNU Autotools and AIX - that has been a kind of love-hate relationship dating back to 1999 when I was first started porting opensource software (OSS) to AIX. Generally, they worked very well - the love part; but occasionally, they did not.
I was quick to blame libtool - I think libtool was the first of the tools developed - but the last in the chain of the autotools sequence. Easy to blame, or hate, the last in line. Generally, making a manual modification in the project generated or supplied libtool fixed whatever was holding me back - and I felt justified in my "hate" for libtool and how libtool always seemed to lag behind developments in AIX.
Fifteen+ (15+) years later I know better. Yes, there were bits that libtool did not know about AIX - but these days I also run into barriers. And I have learned it fair to blame a lag in libtool as the root cause. These days I would consider the role of libtool as the most stable and consistent in the autotools suite.  These days the problems seem to come from assumptions taken by "project committers" - especially when they opted to set fixed variables in autoconf (.ac) files rather than use autoconf or automake as intended. These constants may work fine in a GNU environment - but not outside of it. And this was pretty much the motivation for starting development of libtool to begin with.
Makes me kind of miss all the parallel development that was done on SUN Solaris five to ten years ago - as this seem to serve as sufficient reminder that GNU is just one environment and GCC is just one compiler.

Inspiration

Distractions can be frustrating. Getting rid of a frustration is one way to get "motivated". In short, my distrations are a prelude to what I am thinking about TODAY and looking forward - being inspired! I am dreaming of autotools aligned to support the "AIX way" and not just the "GNU way". In particular I would like to see autotools support the way AIX organizes shared libraries for 32-bit and 64-bit support.
Shortly put, the GNU Build System expects separate .so files or archives - one for 32-bit and one for 64-bit. Further, by default - either a 32-bit - or a 64-bit build is done - by modifying environmental variables - not the autotool configuration. At least I have never seen both happen concurrently.  I also see frequent package names with "64" in them to indicate the 64-bit version.
As there are many OSS projects - this is a lot of double work - and error prone when it comes to packaging. I have been trying to simplify that method with my buildaix tool. (Struggle as an inspirator ;:|).
For AIX I envision the solution as having only one .a archive with both 32 and 64 bit "members". And, these members will have the same name. Compare that with the current OSS convention to have either two archives with different names in the same directory, or, two archives with the same name - but in different directories.

Aspiration

I aspire to re-engineer the GNU Autotools (I hope only libtool is needed) so that when shared libraries are being built both 32-bit and 64-bit members are built and stored into a single archive. And for these dual support libraries to be built during a single "make" command. Probably many sleepless nights ;:|

 
Next >
60 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 = 99999999 ) ORDER BY menuid DESC LIMIT 1
4 DELETE FROM jos_session WHERE ( ( time < '1544642931' ) AND guest = 0 AND gid > 0 ) OR ( ( time < '1544642931' ) 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 published = 1 AND link LIKE 'index.php?option=com\_content&task=view%'
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 = 746 AND ( a.state = 1 OR a.state = -1 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2018-12-12 20:43' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2018-12-12 20:43' ) AND a.access <= 0
13 SELECT a.id FROM jos_content AS a WHERE a.catid = 74 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 <= '2018-12-12 20:43' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2018-12-12 20:43' ) ORDER BY a.ordering
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 = 746
15 UPDATE jos_content SET hits = ( hits + 1 ) WHERE id = '746'
16 SELECT hits FROM jos_core_log_items WHERE time_stamp = '2018-12-12' AND item_table = '#__content' AND item_id = '746'
17 UPDATE jos_core_log_items SET hits = ( hits + 1 ) WHERE time_stamp = '2018-12-12' AND item_table = '#__content' AND item_id = '746'
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 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'
39 SELECT m.id FROM jos_modules AS m WHERE m.module = 'mod_rssfeed' AND m.published = 1
40 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 = 99999999 ) ORDER BY ordering
41 SELECT id FROM jos_menu WHERE link = 'index.php?option=com_search' AND published = 1
42 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
43 SELECT m.* FROM jos_menu AS m WHERE menutype='rt_splitSuckerFish' AND m.published='1'
44 SELECT * FROM jos_banner WHERE showBanner=1
45 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
46 SELECT * FROM jos_mambots WHERE id = '32'
47 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
48 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
49 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
50 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
51 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
52 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
53 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
54 SELECT * FROM jos_mambots WHERE id = '27'
55 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
56 SELECT * FROM jos_mambots WHERE id = '27'
57 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
58 SELECT * FROM jos_mambots WHERE id = '27'
59 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
60 SELECT * FROM jos_mambots WHERE id = '27'