BS(1) General Commands Manual BS(1) NAME bs - build software SYNOPSIS bs [ -V | --version ] [ -v | --verbose | -d level | --debug=level ] [ -h | --help ] [ -p | --paths ] [ -n | --simulate ] [ -f file | --con- fig=file ] [ -k | --keep ] step module DESCRIPTION Bs is a tool to execute the steps of the program and package develop- ment cycles. It takes two arguments: step specifies the step of a cycle to execute ( prologue, schedule, test, release, make [tarball/package] or epilogue) and the cycle or cycle-phase name ( source, tarball, pkctrl or pack- age); module specifies the name of the program or package (which are assumed to be the same). The steps and their meanings are listed be- low. Prior familiarity with the program and package development cycles is essential. STEPS The steps of the program development cycle are these, listed in the or- der in which they are to be called: prologue-sources, ps Run the user-written script specified by the SITE_PRO- LOGUE_SOURCES_CMD configuration variable. This script should perform all the actions necessary to bring module to a state where the program developer can enter the normal program devel- opment cycle (starting with the schedule-sources step). It is expected that this script should: create the module directory, populate it with a minimal set of source files, import it to a repository (e.g. Git or Subversion) schedule-sources, ss Schedule a new release. test-sources, ts Test the sources. This means: run some standard tests (e.g. check the program sources are up to date with respect to their repository), run module's regression test suite and attempt to make the tarball. release-sources, rs Release the sources. This means: repeat the test-sources step but tolerate no errors or warnings, finalise the ChangeLog and, in the repository, copy module/trunk to module/tags/release-id. make-tarball, mt Make the tarball. epilogue-sources, es Run the user-written script specified by the SITE_EPI- LOGUE_SOURCES_CMD configuration variable. Typically, this step is not needed. After running the above steps, the program developer should normally wait for an external event (e.g. a bug report or the release of a new version of a prerequisite library) and then repeat the cycle from the schedule-sources step. The steps of the package development cycle are these, listed in the or- der in which they are to be called: prologue-pkgctrl, pp Run the user-written script specified by the SITE_PROLOGUE_PKGC- TRL_CMD configuration variable. This script should perform all the actions necessary to bring module.vendor module to a state where the package developer can enter the normal program devel- opment cycle (starting with the schedule-pkgctrl step). It is expected that this script should: create the module.vendor di- rectory, populate it with a minimal set of package control files, archive it in a repository and immediately retrieve a copy of the package control files from the repository. schedule-pkgctrl, sp Schedule a new release. test-pkgctrl, tp Test the package control files. This means: run some standard tests (e.g. check the package control files are up to date with respect to their repository) and make the package. release-pkgctrl, rp Release the package control files. This means: repeat the test-pkgctrl step but tolerate no errors or warnings, finalise the changelog and and tag the sources with the release ID in the repository. module.debian/trunk to module.debian/tags/re- lease-id. make-package, mp Make the package. epilogue-pkgctrl, ep Run the user-written script specified by the SITE_EPILOGUE_PKGC- TRL_CMD configuration variable. It is expected that this script insert the package into a package repository (perhaps using paa(1)). After running the above steps, the package developer should normally wait for an external event (e.g. a bug report or the release of a new version of the program sources) and then repeat the cycle from the schedule-pkgctrl step. In addition, there are the following steps available: status Report the last successfully completed program source and pack- age development steps. CONFIGURATION Many variables need to be set in the configuration file. See the com- ments in /usr/share/doc/bs/examples/bs.conf for details. OPTIONS -d level, --debug=level Determines how verbose this program will be. The message types displayed for the different values of level are as follows: 0 displays no messages; 1 displays only errors, 2 displays errors and warnings; 3 displays errors, warn- ings and informational messages; higher values display errors, warnings, informational mes- sages and various messages intended for debug- ging. The default is 2. -h, --help Displays a brief usage message. -p, --paths Lists the compiled-in paths of various files and directories that this program uses. -n, --simulate Some external commands that this program runs may be displayed rather than actually exe- cuted. BEWARE: different programs implement different levels of simulation; so do not rely on -n having no effect! -v, --verbose Equivalent to -d 3. -V, --version Prints the program's version number and exits. -f file, --config=file Set the configuration file. If this option is not used then the file specified by the BS_CONFIG environment variable is used and, if that is not set, a hard-coded default is used (see ENVIRONMENT and FILES below). -k, --keep Do not delete the sandbox after use; this might be useful in diagnosing problems with the build. EXIT STATUS On success bs returns zero. On failure it returns non-zero and dis- plays a diagnostic message. FILES /etc/bs.conf Default configuration file ENVIRONMENT VARIABLES BS_CONFIG Specifies the location of the configuration file. EXAMPLES None. CAVEATS Bs builds Debian packages (see deb(5)). It then uses alien(1) to con- vert that to an RPM (see rpm(8)). It currently lacks support for doing this the other way round or for other package formats. Bs supports git(1) and svn(1). Its code to access these has been ab- stracted into a separate source code file, so adding support for other repository types should not be difficult. The configuration file has too many settings. STANDARDS This manual page documents version 3.1.4.12 of bs. SEE ALSO bs-config(1), alien(1), deb(5), rpm(1), git(1), svn(1), dch(1), paa(1) AUTHOR Alexis Huxley <alexishuxley@gmail.com> COPYRIGHT & DISTRIBUTION POLICY Copyright (C) 2011-2025 Alexis Huxley 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 MER- CHANTABILITY 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., 675 Mass Ave, Cambridge, MA 02139, USA. 8 Aug 2025 BS(1)