Tags:
tag this topic
create new tag
view all tags
---+!! Using the LCFG Build Tools on Debian Support for building Debian packages with the LCFG Build Tools was added in version =0.9.18= which was released on Friday 18th January 2019. For useful information on Debian packaging see DebianPackaging %TOC% ---++ Creating Debian packaging metadata To build a project as a Debian package there needs to be a =debian= sub-directory which contains all the necessary metadata. This is the equivalent of the RPM specfile with which people will already be familar. The biggest difference from a specfile being that with Debian packages there are separate files for each aspect of packaging (e.g. the build/install process, controlling which files appear in a package, handling package scripts). A tool to generate the necessary Debian package metadata is provided. This uses the lcfg metadata (stored in the =lcfg.yml= file) and examines the contents of the project directory, it does NOT make any attempt to parse the specfile. What is generated is intended to be a good starting point, it should be adequate for a standard LCFG component package or a simple project with a single package. For more complex projects with various sub-packages the Debian metadata will need to be editted manually. The metadata is generated using the =gendeb= command like this: <verbatim> % lcfg-reltool gendeb No version-control information in the LCFG metafile for this project. Auto-detected that the SVN module should be used. LCFG: Creating debian/compat metadata file LCFG: Creating debian/control metadata file LCFG: Creating debian/copyright metadata file LCFG: Creating debian/docs metadata file LCFG: Creating debian/postinst metadata file LCFG: Creating debian/postrm metadata file LCFG: Creating debian/prerm metadata file LCFG: Creating debian/rules metadata file LCFG: Creating debian/lcfg-file.service metadata file LCFG: Creating debian/source/format metadata file LCFG: Creating debian directory 'debian' LCFG: Please review the debian directory for this project </verbatim> The tool attempts to add all the new files to the version-control system. It's a good idea to review what has changed before committing: <verbatim> % svn status A debian A debian/compat A debian/control A debian/copyright A debian/docs A debian/lcfg-file.service A debian/postinst A debian/postrm A debian/prerm A debian/rules A debian/source A debian/source/format </verbatim> Anything in the =debian= sub-directory which has a =?= (question mark) prefix will need adding if it is required. Once you are happy with the changes then they should be committed and a new release should be tagged: <verbatim> % svn commit -m "Added debian packaging metadata" debian % lcfg-reltool minor </verbatim> Once the =debian= sub-directory exists the behaviour of the LCFG build tools will be changed. For example, whenever a release is tagged the =debian/changelog= file will be updated and Debian source files will be generated whenever commands such as =pack= and =devpack= are used (which are called be =rpm= and =devrpm=). ---++ Building Debian Packages Manually When the source for a project is packed (e.g. as part of calling =pack=, =devpack=, =rpm= or =devrpm=) the Debian source files will be generated. This avoids bootstrapping issues by making it possible to pack the source on a non-Debian machine and then copy the files over to a Debian machine for building the binary packages. This can be done like this: <verbatim> % cd lcfg-example % lcfg-reltool pack No version-control information in the LCFG metafile for this project. Auto-detected that the SVN module should be used. LCFG: Successfully exported the source tree. LCFG: Successfully generated cmake files. Successfully generated metadata files for RPM LCFG: Successfully generated source tar file. LCFG: Tar file is: /afs/inf.ed.ac.uk/user/s/squinney/lcfgbuild/lcfg-example-1.2.40/lcfg-example-1.2.40.tar.gz LCFG: Debian Tar file is: /afs/inf.ed.ac.uk/user/s/squinney/lcfgbuild/lcfg-example-1.2.40/lcfg-example_1.2.40-1.debian.tar.gz LCFG: Debian DSC file is: /afs/inf.ed.ac.uk/user/s/squinney/lcfgbuild/lcfg-example-1.2.40/lcfg-example_1.2.40-1.dsc Successfully generated metadata files for Debian </verbatim> The output shows that this generated 3 files which are needed for building a Debian package: =lcfg-example-1.2.40.tar.gz=, =lcfg-example_1.2.40-1.debian.tar.gz= and =lcfg-example_1.2.40-1.dsc= These are: $ Project source : This is the =.orig.tar.gz= file, it contains all the source code for your project, it will NOT contain the =debian= sub-directory. $ Debian metadata : This is the =.debian.tar.gz= file, it contains the =debian= sub-directory. $ Debian source control : This is the =.dsc= file, it is used to control the build process. Note that Debian expects a *very* specific naming style for these files. The project name will always be lower-cased and there must be an =_= (underscore) between the name and version strings. Assuming those 3 files have already been copied over to the target machine, manually building a Debian package can be done something like this: <verbatim> % dpkg-source --extract lcfg-example_1.2.40-1.dsc dpkg-source: warning: extracting unsigned source package (lcfg-example_1.2.40-1.dsc) dpkg-source: info: extracting lcfg-example in lcfg-example-1.2.40 dpkg-source: info: unpacking lcfg-example_1.2.40.orig.tar.gz dpkg-source: info: unpacking lcfg-example_1.2.40-1.debian.tar.gz % cd lcfg-example-1.2.40 % debuild --no-sign % cd .. </verbatim> If all has gone well you now have a Debian binary package named like =lcfg-example_1.2.40-1_all.deb=. There are other output files, one which is quite useful is the =.build= file which contains a log of the whole build process, that can be useful when trying to locate the cause of a build failure. ---++ Building Debian Packages using Build Tools If you have the LCFG build tools installed on a Debian machine then the binary packages can be generated simply like this: <verbatim> % cd lcfg-example % lcfg-reltool deb </verbatim> Or <verbatim> % cd lcfg-example % lcfg-reltool devdeb </verbatim> These work in a similar way to the familiar =rpm= and =devrpm= tools that are used for building RPMs. -- %USERSIG{squinney - 2019-01-18}%
E
dit
|
A
ttach
|
P
rint version
|
H
istory
: r2
<
r1
|
B
acklinks
|
V
iew topic
|
M
ore topic actions
Topic revision: r2 - 2019-02-06
-
squinney
Home
Site map
LCFG web
Main web
Sandbox web
TWiki web
LCFG Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
P
P
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
E
dit
A
ttach
Copyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback