pkgmacros
index
/home/andrew/Projects/nxpak/src/pkgmacros.py

# $Id: pkgmacros.html,v 1.6 2003/08/16 02:07:06 merlin262 Exp $
#
# pkgbuilder.py: Package Building Resources part of NxPak
#
# The Python Package Builder Macro Library
#
# This module is imported immediately before the build package python
# script is imported. Build versions and minor versions should
# only be written in when ABSOLUTELY neccessary.

# (C)opyright 2002, 2003 Andrew McCall
#
# NxPak is small, yet extremely powerful package manager.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the
#
# Free Software Foundation, Inc., 59 Temple Place - Suite 330
# Boston, MA  02111-1307, USA.

# Contributors:
#    andrew@textux.com
#

 
Modules
       
nxpackage
nxpk
os
pkgbuilder
sys

 
Functions
       
N_ALinkFile(builder_obj, link_dest, filename)
Macro function to aid in creation of new packages.  Creates
a symlink in the chroot directory tree.  This is designed to
create ABSOLUTE symlinks: as absolute symlinks can cause problems
in packages..... You probably want to create a relative symlink
using N_LinkFile.
N_AddAppDir(builder_obj, u_maj='y', u_min='n')
Macro function to aid in creation of new packages. Adds the
default application directory, and group directory
to the package, to help simplification of the builder process.
Returns what should be the application prefix.
 
Arguments:
     (Package Builder) builder object
     (string) show major version in path (y for yes only)
     (string) show minor version in path (y for yes only)
Returns:
     (string) application prefix
Bugs:
     Amarach Linux specific.
N_AddDefaultDirs(builder_obj)
Macro function to aid in creation of new packages.  Adds the
standard prefix directories used by Amarach packages.
 
Arguments:
     (Package Builder) builder object
Returns:
     None
Bugs:
     Amarach Linux specific.
N_AddFilesDir(build_obj, directory, type)
This function adds the directory, all files in that directory,
and all subdirectories from that directory, and the files
included in them, as the file type specified by type.
 
Arguments:
     (Package Builder) builder object,
     (string) directory,
     (string len 1) fiel type
Returns:
     None
Bugs:
     None Known.
N_ApplyPatch(build_obj, source_directory, patch_file, plevel=1)
Macro to simplify package creation. Applies a patch to a
directory tree.
 
Arguments:
     (Package Builder) build_obj,
     (string) source directory,
     (string) patch file,
     (integer) patch level
Returns:
     None
Bugs:
    Doesn't decompress compressed patches.
N_BaseBuildDepends(n_extend=None)
Macro to aid in creation of packages.  Returns the standard
build dependencies required by all packages, with any extra
build dependencies passed in n_extedn appended to the list.
 
Arguments:
     (string list) extended build dependencies
Returns:
     (string list) build dependencies
Bugs:
     Amarach linux specific.
N_BuildCommand(builder_obj, command, args, throw_err=0)
Macro to aid in the creation of packages. Performs the build
command specified by command, in the context specified by
builder_obj, and with arguments specified by args. Will
raise an exception if throw_err is non zero and the return
code of the program is also non zero.
 
Arguments:
     (Package Builder) build object,
     (string) command,
     (string list) arguments,
     (int) throw error (Non zero for true)
Return:
     The return code of the program.
Bugs:
     None known.
N_BuildMakeDir(build_obj, directory)
A macro to aid in the creation of packages.  This function
creates the build directory specified by directory relative
to the build root.
 
Arguments:
     (Package Builder) build object,
     (string) directory,
Returns:
     None
Bugs:
     Doesn't properly check status.
N_CONS_VerboseMessage(level, text)
Macro function that displays a message depending on
current verbosity level.
 
Arguments:
     (integer) message level, (string) message text
Returns:
     None
Bugs:
     None known
N_ChrootMakeDir(build_obj, directory)
A macro to aid in the creation of packages.  This function
creates the chroot directory specified by directory relative
to the chroot root.
 
Arguments:
     (Package Builder) build object,
     (string) directory,
Returns:
     None
Bugs:
     Doesn't properly check status.
N_ChrootSetDir(build_obj, directory)
Macro function to aid in creation of new packages. Sets
the current directory relative to the build root. (The build
root directory is automatically prepended to the directory
passed). Note: DO NOT Use directory names starting with a /.
 
Arguments:
     (Package Builder) build object,
     (string) directory
Returns:
     None
Bugs:
     None Known.
N_ConfigureScript(build_obj, build_dir, broken_destdir=1, ext_configure_opts=None, make_dirs=0, dir_dict=None, ov_makevars=1)
This function automates the standard ./configure; make; make install
process that is required of most packages.  It is designed to deal with
almost any configure script, and has been extended with smarts to make
it be able to deal with broken configure scripts that lack DESTDIR.
 
Please note that this function is not an all in one cure - there are
many sitautions where it will probably prove mandatory to use your
own build routine.
 
It takes several arguments, the first is the object that this will
be building.  The second is the directory that the configure script
will be found in.  The next is a list of possible configure arguments,
(this would be the place to add things like --use-gtk, or to enable
whatever features you desire in your program).
 
In the directory dictionary several items have special meaning:
 
A sysconfdir set to /etc/package or /etc/service will automatically
have the package name followed by a dash, followed by a major version
number.  It is heavily recommended that package major versions respect
major changes in the package, such as drastically different configuration
readers.  If it is neccessary to also include a minor version, if the minor
vesion is important for the package manager, then a capital m (M) may
be appendended to package or service.
 
For example, if we had an apache 2 package with class www:
/etc/service translates to /etc/service/www/apache-2/
 
Or, for the vim 6.1 package with class editors:
/etc/packageM translates to /etc/package/editors/vim-6.1/
 
 
Prefixes that may be specified:
prefix
exec-prefix
bindir
sbindir
libexecdir
datadir
sysconfdir
sharedstatedir
localstatedir
libdir
includedir
oldincludedir
infodir
mandir
srcdir
 
ONLY VITAL SYSTEM COMPONENTS SHOULD PLACE FILES IN /etc
 
Arguments:
     (Package Builder) build object,
     (string) build directory,
     (integer) broken destdir (non zero for true),
     (string list) extra configure options,
     (integer) make dirs create directories (non zero for true),
     (dictionary) directory dictioanry (directory paths)
     (integer) override make options 
Returns:
     None
Bugs:
     Doesn't create directories.
N_CreatePackage(pkggroup, pkgname, p_class, maj_ver=0, min_ver=0, smin_ver=0, build_ver=0)
Macro function that creates a new package file.
The package file is initialized with version information as
specified.  The package group determines the directories to
be used for package building.
 
Arguments:
     (string) package group,
     (string) package name,
     (string) package class,
     (integer) major version,
     (integer) minor version,
     (integer) subminor version,
     (integer) build version
Returns:
     A package builder object(see pkgbuilder)
Bugs:
     None known.
N_DownloadSource(builder_obj, source_url, filename, md5sum=None)
Request the download of the source file given. Downloads
are all saved under the same directory, if the download
is already present this command will do nothing.
 
The source_url should give the url of the file, while filename
should be the expected filename of the download, and the md5sum,
if present should be the md5 checksum of the file.
 
Arguments:
     (Package Builder) builder object,
     (string) Source URL,
     (string) filename
     (string) md5 sums of file,
Returns:
     None
Bugs:
     Relies on wget (for now)
N_DownloadSources(builder_obj, source_list, filename_list, md5sums=None)
Request the download of the source files given. Downloads
are all saved under the same directory, if the download
is already present this command will do nothing.
 
The source_list should give the url;s of the files, while filename_list
should be the expected filenames of the downloads, and md5sums,
if present should be the md5 checksum of each file.
 
Arguments:
     (Package Builder) builder object,
     (string list) Source URL,
     (string list) filename
     (string list) md5 sums of file,
Returns:
     None
Bugs:
     Relies on wget (for now)
N_LinkFile(builder_obj, basedirectory, link_dest, filename)
Macro function to aid in creation of new packages.  Creates
a symlink in the chroot directory tree.  This is designed to
create RELATIVE symlinks, as absolute symlinks will cause problems
in packages..... If you really want to create an absolute
symlink, use N_ALinkFile.
 
NOTE: This function changes the current directory!
 
Arguments:
    (Package Builder) builder_obj,
    (string) base directory,
    (string) link destination,
    (string) filename
Returns:
    None
Bugs:
    Changes current directory.
N_MakeDevice(build_obj, file, bc, major, minor)
Macro function to help automate installs. Creates
a device.
 
Arguments:
     (Package Builder) build_obj
     (string) file
     (string) block/charector
     (string) major
     (string) minor
Returns:
     None
Bugs:
     Uses external mknod.
 
     Note: there is no proper error checking!
N_MakeFIFO(build_obj, file, mode)
Macro function to help automate installs. Creates
a FIFO.
 
Arguments:
     (Package Builder) build_obj
     (string) file
     (string) mode
Returns:
     None
Bugs:
     Uses external mknod.
 
     Note: there is no proper error checking!
N_RemoveFile(build_obj, file)
Macro function to help automate installs.  Removes the
file named file.
 
Arguments:
     (Package Builder) build_obj
     (string) file
Returns:
     None
Bugs:
     Uses external rm, which may result in an
     a request for user prompt. Possibly switch
     to python equivelant???
 
     Note: there is no proper error checking!
N_SetDir(build_obj, directory)
Macro function to aid in creation of new packages. Sets
the current directory relative to the build root. (The build
root directory is automatically prepended to the directory
passed). Note: DO NOT use directory names start with a /.
 
Arguments:
     (Package Builder) build object,
     (string) directory
Returns:
     None
Bugs:
     None Known.
N_SimpleDepString(build_obj, deplist)
Macro function to help automnate package builds.  Creates
a dependency string from a list of dependency modules.
 
Arguments:
     (Package Builder) builder object,
     (string list) dependency list
Returns:
     (string) Dependency string
Bugs:
     None known.
N_UncompressPatch(build_obj, patch_file)
Macro to simplify package creation. Decompresses a patch
located in the download area.
 
Arguments:
     (Package Builder) build object,
     (string) patch filename
Returns:
     None
Bugs:
     Error checking is rather limited.
N_UnpackageSourceTBz2(build_obj, source_file, chdir=None)
Unpackages a source tar.bz2 file into the build root
directory structure specified by the build_obj
build environment.  source_file specifies the name
of the tar.bz2 to unpack.  Throws an exception of type
Command Error in the event that the source file isn't
properly extracted.
 
Arguments:
     (Package Builder) build object,
     (string) file name,
     (string) chdir, directory to change to before unpacking
Returns:
     None
Bugs:
    None known.
N_UnpackageSourceTgz(build_obj, source_file, chdir=None)
Unpackages a source tar.gz file into the build root
directory structure specified by the build_obj
build environment.  source_file specifies the name
of the tar.gz to unpack. Throws an exception of type
CommandError, in the event that the sources don't
unpackage.
 
Arguments:
     (Package Builder) build object,
     (string) source file,
     (string) chdir - directory to move to before unpacking
Returns:
     None
Bugs:
     None known.
path_from_filename(filename)
Macro function that splits a filename into parts.
 
Arguments:
     (string) filename
Returns:
     the path portion of of the file designated by filename
Bugs:
     None Known

 
Data
        CPU_ARCH = 'i686'
NCONS_BUILD_ROOT = '/tmp/nxpackage/build/'
NCONS_CHROOT_ROOT = '/tmp/nxpackage/chroot/'
NCONS_CLASSES = {'': 'Uncategorized Software', 'application': 'Uncategorized application', 'devel': 'Software development', 'editors': 'Text editors', 'games': 'Fun and games', 'gui': 'GUI toolkits and support', 'media': 'Multimedia Applications', 'service': 'Provides a server or system service', 'system': 'Basic system software', 'util': 'General uncategorized utilities', ...}
NCONS_DEST_ROOT = '/system/nxpkg//packages/'
NCONS_DOWNLOAD_ROOT = '/system/nxpkg/download/'
NCONS_NCONS_BUILD = '/tmp/nxpackage/'
NCONS_NCONS_ROOT = '/system/nxpkg/'
NCONS_SCRIPT_ROOT = '/tmp/nxpackage/script/'
NCONS_SERVICE_TYPES = ['service']
NCONS_TYPE_CONF = 'c'
NCONS_TYPE_DEVEL = 'd'
NCONS_TYPE_DEVICE = 'v'
NCONS_TYPE_EXE = 'e'
NCONS_TYPE_GENERAL = 'g'
NCONS_TYPE_INFO = 'i'
NCONS_TYPE_LIB = 'l'
NCONS_TYPE_LOCALES = 'o'
NCONS_TYPE_MAN = 'm'
NCONS_TYPE_SHARE = 's'
NCONS_VERBOSE = 1
NXPAK_VERSION = '0.2.5'
SYS_ARCH = 'i686-pc-linux-gnu'