// vim:set filetype=asciidoc:
[[options]]
== *debmake* options

Here are some additional explanations for *debmake* options.

[[ai-option]]
=== Shortcut options (*-a*, *-i*)

The *debmake* command offers 2 shortcut options.

* *-a* : open the upstream tarball
* *-i* : execute script to build the binary package

The example in the above "`<<simple>>`" can be done simply as follows.

----
 $ debmake -a package-1.0.tar.gz -i debuild
----

TIP: A URL such as "`*https://www.example.org/DL/package-1.0.tar.gz*`" may be used for the *-a* option.

TIP: A URL such as "`*https://arm.koji.fedoraproject.org/packages/ibus/1.5.7/3.fc21/src/ibus-1.5.7-3.fc21.src.rpm*`" may be used for the *-a* option, too.

[[boption]]
=== *debmake -b*

The *debmake* command with the *-b* option provides an intuitive and flexible method to create the initial template *debian/control* file. This file defines the split of the Debian binary packages with the following stanzas:

* *Package:*
* *Architecture:* (e.g. *amd64*)
* *Multi-Arch:* (see "`<<multiarch>>`")
* *Depends:*
* *Pre-Depends:*

The *debmake* command also sets an appropriate set of substvars (substitution variables) used in each pertinent dependency stanza.

Let's quote the pertinent part from the *debmake* manpage here.

include::binary.txt[]

[[dt-option]]
=== Snapshot upstream tarball (*-d*, *-t*)

This test building scheme is suitable for git repositories organized as described in *gbp-buildpackage*(7), which uses the master, upstream, and pristine-tar branches.

The upstream snapshot from the upstream source tree in the upstream VCS can be made with the *-d* option if the upstream supports the "`*make dist*`" equivalence.

----
 $ cd /path/to/upstream-vcs
 $ debmake -d -i debuild
----

Alternatively, the same can be made with the *-t* option if the upstream tarball can be made with the *tar* command.

----
 $ cd /path/to/upstream-vcs
 $ debmake -p package -t -i debuild
----

Unless you provide the upstream version with the *-u* option or with the *debian/changelog* file, a snapshot upstream version is generated in the *0~%y%m%d%H%M* format, e.g., *0~1403012359*, from the UTC date and time.

If the upstream VCS is hosted in the __package__**/** directory instead of the __upstream-vcs__**/** directory, the "`*-p* __package__`" can be skipped.

If the upstream source tree in the VCS contains the **debian/*** files, the *debmake* command with either the *-d* option or the *-t* option combined with the *-i* option automates the making of a non-native Debian package from the VCS snapshot while using these **debian/*** files.

----
 $ cp -r /path/to/package-0~1403012359/debian/. /path/to/upstream-vcs/debian
 $ dch
   ... update debian/changelog
 $ git add -A .; git commit -m "vcs with debian/*"
 $ debmake -t -p package -i debuild
----

This *non-native* Debian binary package building scheme without the real upstream tarball is considered a *quasi-native* Debian package. See "`<<quasi-native>>`" for more details.

[[joption]]
=== *debmake -j*

This is an experimental feature.

The generation of a functioning multi-binary package always requires more manual work than that of a functioning single binary package.  The test build of the source package is the essential part of it.

For example, let's package the same __package-1.0__**.tar.gz** (see "`<<simple>>`") into a multi binary package.

* Invoke the *debmake* command with the *-j* option for the test building and the report generation.
+
----
 $ debmake -j -a package-1.0.tar.gz
----
* Check the last lines of the __package__**.build-dep.log** file to judge build dependencies for *Build-Depends*. (You do not need to list packages used by *debhelper*, *perl*, or *fakeroot* explicitly in *Build-Depends*.  This technique is useful for the generation of a single binary package, too.)
* Check the contents of the __package__**.install.log** file to identify the install paths for files to decide how you split them into multiple packages.
* Start packaging with the *debmake* command.
+
----
 $ rm -rf package-1.0
 $ tar -xvzf package-1.0.tar.gz
 $ cd package-1.0
 $ debmake -b"package1:type1, ..."
----
* Update *debian/control* and **debian/**__binarypackage__**.install** files using the above information.
* Update other *debian/** files as needed.
* Build the Debian package with the *debuild* command or its equivalent.
+
----
 $ debuild
----
* All binary package entries specified in the **debian/**__binarypackage__**.install** file are generated as __binarypackage_version-revision_arch__**.deb**.

NOTE: The *-j* option for the *debmake* command invokes *dpkg-depcheck*(1) to run *debian/rules* under *strace*(1) to obtain library dependencies.  Unfortunately, this is very slow.  If you know the library package dependencies from other sources such as the SPEC file in the source, you may just run the "*debmake* ..." command without the *-j* option and run the "`*debian/rules install*`" command to check the install paths of the generated files.

[[toption]]
=== *debmake -T*

The *debmake* command invoked with the *-T* option additionally prints verbose tutorial comment lines.  The lines marked with *&#35;&#35;&#35;* in the template files are part of the verbose tutorial comment lines.

[[backupoption]]
=== *debmake -B*

The *debmake* command invoked with the *-B* option can generate template files with *.bkup* suffix.  This is handy if you want to see auto-generated template files to the existing ones.

[[xoption]]
=== *debmake -x*

The amount of template files generated by the *debmake* command depends on the *-x*[01234] option.

* See "`<<emptypkg>>`" for cherry-picking of the template files.

NOTE: None of the existing configuration files are modified by the *debmake* command.
