Menu

Tree [fd1e31] master /
 History

HTTPS access


File Date Author Commit
 .con-dev 2013-10-29 Stephan Sürken Stephan Sürken [935341] .con-dev/conf: Add lenny and etch.
 src 2022-10-15 Stephan Sürken Stephan Sürken [e16130] src/con-libsys.bash: mount: Discard confusing e...
 .gitignore 2017-02-27 Stephan Sürken Stephan Sürken [97db07] Better name for DOCLINK: DOCLINK.include.rst.
 .ui-auto-release-multi.conf 2009-03-30 Stephan Sürken Stephan Sürken [928d48] - Add new wrapper tool "ui-auto-release-mul...
 .ui-auto.conf 2023-10-05 Stephan Sürken Stephan Sürken [86b342] .ui-auto.conf: Add Debian trixie for backports
 .ui-auto.conf.ab 2009-10-02 Stephan Sürken Stephan Sürken [78d9ec] Add two custom ui-auto configs (fritz and ab)
 .ui-auto.conf.fritz 2009-10-02 Stephan Sürken Stephan Sürken [78d9ec] Add two custom ui-auto configs (fritz and ab)
 .user.ui-auto.conf 2009-06-04 Stephan Sürken Stephan Sürken [d7cfcf] add some doc updates.
 AUTHORS 2009-01-07 Stephan Sürken Stephan Sürken [2cc829] * Fix: Make AUTHORS non-empty (add me for now).
 COPYING 2009-10-19 Stephan Sürken Stephan Sürken [7dcac1] Add excplicit COPYING file (GPL-2)
 ChangeLog 2018-01-01 Stephan Sürken Stephan Sürken [c9c688] [ui-auto-release run by absurd@...
 Makefile.am 2024-07-11 Stephan Sürken Stephan Sürken [fd1e31] Makefile.am: Workaround: Disable possible globa...
 NEWS 2018-01-01 Stephan Sürken Stephan Sürken [53df8d] [ui-auto-release run by absurd@...
 README.rst 2017-02-27 Stephan Sürken Stephan Sürken [336608] *.rst: No need for internal mode hint now we ha...
 STYLEGUIDE.rst 2018-01-05 Stephan Sürken Stephan Sürken [bbb0c0] -o nounset: Only for bash 4.4 onward.
 TUTORIAL.rst 2017-02-27 Stephan Sürken Stephan Sürken [336608] *.rst: No need for internal mode hint now we ha...
 configure.ac 2018-01-01 Stephan Sürken Stephan Sürken [0e8bac] configure.ac: Prepare unstable release 0.3.3.
 README 2017-02-27 Stephan Sürken Stephan Sürken [d11cea] RST, new style: RST files should actually be na...

Read Me

con-dev

Bash-based libraries and development tools

con-dev (aka ui-auto 2.0) is currently (Apr 2015) work in progress.

Please check the NEWS file for the current unstable release, and it's status.

Note

TODO: Proper abstract.

Overview

Library Naming Scheme

All library files live in the same directory.

The table below outlines con-dev internal libraries set; the same applies for third party/user-defined sets of libraries (with con replaced, resp.).

File Name API Identifier Prefix Internal Library Hooks Description
con-lib.bash con:: con_lib::init Base Library.
con-libID.bash con_<id>:: con_lib<id>::init|detect:<imp> Special Purpose Library.

OLD README CONTENTS

Note

Old ui-auto based README contents. Should eventually be migrated and/or removed.

Abstract

con-dev is a set of shell tools to manage software project development.

  1. Release automation

First of all, there is support for automation of software release around the 'con-dev-release' tool; it currently (Oct 2009) supports the build systems autotools and cmake and the version control systems cvs, svn and git. Its basic goal is to automate the reoccurring administrative duties around software releases (like NEWS/ChangeLog files, VC tagging, uploading, ...). It also has a non-interactive mode that makes it suitable for automated snaphot builds from cron, and a special Debian mode to automate Debian package builds.

Tools: con-dev-release, con-dev-ubs, con-dev-uvc, con-dev-release-multi

  1. Development help

Secondly, there is also a set of tools to help develop from VC checkouts (simply via environment variables). This is useful if you develop on several projects at the same time having inter-dependencies.

Tools: con-dev-env, con-dev-shell, con-dev-update

  1. cmake and autotools library

There is small library for autotools (m4 macros) and cmake (tests) to avoid redundancies per project for con-dev project. Using any of these is totally optional, though.

NEWS

=== Updating from 1.0.x->1.2.x NEWS ===

No changes (1) are needed to update projects using 1.0.x; you will need to amend your project config if you want to use the new Debian support, however.

(1) If you use autotools, the CON_INIT macro and have "long" filenames in your project: Note that "tar-ustar filename-length-max=155" is no longer hardcoded default as automake option; instead, you now set automake options yourself using arg 5 of CON_INIT: I recommend just using tar-pax nowadays: 'CON_INIT([src/foo/main.c],,,,[tar-pax])'.

=== Updating from 0.1.3 ===

Tools:
  • Command syntax changes fo all tools (con-dev-*). See -h on any tool.
User configuration:
  • Migrate ~/.con-dev-env.* into ~/.con-dev.conf (see User Nutshell).
con-dev enabled projects:
  • Only use the snippets in Developer Nutshell for configure.ac/Makefile.am; remove everything else that looks con-devish.
  • Generic check macro for other con-dev projects is now "CON_CHECK"; also handles library packages.
  • Replace: - CON_CLEAN_DISTDIR_CRUFT -> CON_DISTDIR_CRUFT. - CON_LIB_CHECK_VERSION -> CON_CHECK.
  • Remove all efforts for producing "version.h", "version.c" or "$PACKAGE-version" script; this is all handled automatically now.

Introduction

You might learn more in the (yet [Feb 2007] unfinished) introduction (i.e., file INTRODUCTION). This file only contains some "quickstart style" starters without much explanations.

Nutshell: Installation

This does not apply if you are using con-dev via your distribution or a standard local install.

However, if you intend to use con-dev itself the "con-dev" way -- i.e., directly from the version control directory:

  1. Get (a version of) the con-dev source tree [2006-Oct: svn://svn.schlund.de/ssr/trunk/con-dev].

  2. Configure your ~/.con-dev.conf for con-dev (see User Nutshell below); name it "con_dev".

  3. Taint your shell to use that very con-dev source tree:

    eval <con-dev-source-tree>/src/tools/con-dev-env con_dev

    If you are not working with different versions frequently, you might want to automate that in, e.g., ~/.profile.

User Nutshell: Use con-dev enabled projects

  1. Add a file "~/.con-dev.conf", and add the project(s) you want to use with con-dev.

    Use the proivided '.user.con-dev.conf' sample file as template, and adapt to your needs.

b1) Taint your shell:

eval con-dev-env project1 : Environment ready to use project1. eval con-dev-env -d project1: Environment ready to use project1 and all its dependencies.

b2) Or (easier): Create new dedicated shells:

con-dev-shell con-dev-env project1: Shell ready to use project1. con-dev-shell -d project1` : Shell ready to use project1 and all its dependencies.
  1. con-dev-strap -c && ./configure && make

d) b) and c) can also be automated in a separate shell using the "con-dev-update" tool; see con-dev-update -h.

Developer Nutshell: Manage con-dev enabled projects

  1. Add file ".con-dev.conf" to top level; see 'con-dev-release -p|-P' for all options, their defaults and descriptions.

  2. configure.ac: - Add macro CON_INIT after AC_INIT. - Add any number of additional CON_* macros later if needed.

  3. Makefile.am: Add this snippet:

    @CON_DEV_AM@
    
    all-local: con-dev-all
    clean-local: con-dev-clean
    distclean-local: con-dev-distclean
    install-data-local: con-dev-install-data
    install-exec-local: con-dev-install-exec
    uninstall-local: con-dev-uninstall
    dist-hook: con-dev-dist
    
This should give you full support for all CON_* macros called from configure.ac.

Release Nutshell: Manage releases via con-dev-release

[moved for ui-utilcpp README 2008-JAN-08; may need some updates, but is basically correct.]

Package Versioning Scheme

con-dev-release automates the release prodedure in this package. ChangeLog can be produced automatically from VC logs:

VERSION="MAJOR.MINOR.DATE" (1.0.* and smaller)
VERSION="MAJOR.MINOR.PATCH" (1.1.0 and greater)
  • MAJOR: Substantial changes.
  • MINOR: Odd numbers development versions, even numbers "stable" versions.
    Each time we postulate some release "stable", this number is increased by one (from odd to even), CVS is tagged, then increased again by one (from even to odd). Changes (and subsequent Patchlevel releases) to that stable version might be done later in a seperate branch (if needed).
  • DATE : Date in the form YYYYMMDD. Patchlevel releases.
  • PATCH: Patchlevel version.

The initial development branch should be 0.1. The initial stable branch should be 1.0 (rather than 0.2). From now on, the first number should now only change for really substantial changes.

So, release versions should develop like this (DATE is always computed automatically):

Release comes from

0.1.* initial development branch. 1.0.* initial stable branch. 1.1.* development branch. 1.2.* stable branch. 1.3.* development branch. ...

Library Versioning Scheme

This package uses "libtool" to create all libraries, and adopts the "Libtool Versioning System" for shared libraries. Please see in libtool's documentation.

Main library versions and package versions relate to each other this away:

Name                 Package Version    Library Main Version
1st unstable branch  0.1.*              0
1st stable branch    1.0.*              1
2nd unstable branch  1.1.*              2
2nd stable branch    1.2.*              3
...

This way, odd library main versions denote stable versions; this is simple and effective.

As little drawback, we are not able to reflect interface incompatible changes _inside_ an unstable branch by means of so-library versioning. So if you do not relink, odd things might happen -- but hey, it's unstable ;).

At the same time, we are not able to reflect interface incompatible changes _inside_ a stable branch -- but this is a feature, as the interface _must_ not change thusly in a stable branch.

Auth0 Logo