// 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[]

[[coption]]
=== *debmake -cc*

The *debmake* command with the *-cc* option can make a summary of the copyright and license for the entire source tree to standard output.

----
 $ tar -xvzf package-1.0.tar.gz
 $ cd package-1.0
 $ debmake -cc | less
----

With the *-c* option, this provides shorter report.

[[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.

[[koption]]
=== *debmake -k*

This is an experimental feature.

When updating a package for the new upstream release, the *debmake* command can verify the content of the existing *debian/copyright* file against the copyright and license situation of the entire updated source tree.

----
 $ cd package-vcs
 $ gbp import-orig --uscan --pristine-tar
 ... update source with the new upstream release
 $ debmake -k | less
----

The "`*debmake -k*`" command parses the *debian/copyright* file from the top to the bottom and compares the license of all the non-binary files in the current package with the license described in the last matching file pattern entry of the *debian/copyright* file.

When editing the auto-generated *debian/copyright* file, please make sure to keep the generic file patterns at the top of the list.

TIP: For all new upstream releases, run the "`*debmake -k*`" command to ensure that the *debian/copyright* file is current.

[[poption]]
=== *debmake -P*

The *debmake* command invoked with the *-P* option pedantically checks auto-generated files for copyright+license text even if they are with permissive license.

This option affects not only the content of the *debian/copyright* file generated by normal execution, but also the output by the execution with the *-k*, *-c*, *-cc*, and *-ccc* options.

[[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.

[[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.
