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.
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. |
Note
Old ui-auto based README contents. Should eventually be migrated and/or removed.
con-dev is a set of shell tools to manage software project development.
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
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
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.
=== 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 ===
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.
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:
Get (a version of) the con-dev source tree [2006-Oct: svn://svn.schlund.de/ssr/trunk/con-dev].
Configure your ~/.con-dev.conf for con-dev (see User Nutshell below); name it "con_dev".
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.
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.
d) b) and c) can also be automated in a separate shell using the "con-dev-update" tool; see con-dev-update -h.
Add file ".con-dev.conf" to top level; see 'con-dev-release -p|-P' for all options, their defaults and descriptions.
configure.ac: - Add macro CON_INIT after AC_INIT. - Add any number of additional CON_* macros later if needed.
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.
[moved for ui-utilcpp README 2008-JAN-08; may need some updates, but is basically correct.]
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)
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. ...
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.