logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

build - build SUSE Linux RPMs in a chroot environment

Description

build  is  a  tool to build binary packages in a safe and reproducible way.  The default is to build in a
       chroot sandbox, but build also supports building in a virtual machine for better security.

       If a recipe file is specified on the command line, build will use this file and all other  files  in  the
       directory  for  building  the  package.  If no recipe argument is provided, build will search the current
       directory for a file.

       The build tool understands the following recipe file types:

       spec   A specfile used to generate rpms.

       src.rpm
              A source rpm, which will be unpacked for the build.

       kiwi   A kiwi config file used to generate a kiwi image.

       dsc    A dsc file used to generate Debian binary packages.

       PKGBUILD
              A file used to generate Arch Linux binary packages.

       build.collax
              A shell script used to generate a Collax binary package.

Environment

BUILD_ROOT
              The directory where build should install the chrooted build system.  "/var/tmp/build-root" is used
              by default. See the --root option.

       BUILD_RPMS
              This can be used instead of the --rpms option. Deprecated.

       BUILD_RPM_BUILD_STAGE
              The rpm build stage (-ba, -bb, ...).  This is just passed through to rpm, check  the  rpm  manpage
              for  a  complete list and descriptions.  "-ba" is the default. You should probably use the --stage
              option instead.

Name

       build - build SUSE Linux RPMs in a chroot environment

Options

--clean
              Remove the build system and reinitialize it from scratch.

       --no-init
              Skip the build system initialization and start with build immediately.

       --repodir_or_url
              Either a directory containing binary packages (optionally with  repository  metadata),  or  a  url
              pointing  to  some  remote  repository.  Multiple  --repo options can be used so create a specific
              repository layering. Note that packages are searched in the specified repository order,  i.e.  the
              first  repository  containing a package with a specific name wins regardless of the version.  As a
              special form, 'zypp://reponame' can be used to specify a system repository. 'zypp://' selects  all
              enabled  system  repositories.  This is also the default if BUILD_RPMS is not set and no --rpms or
              --repo option is used.

       --distdistribution
              Set the distribution. If this option is not given,  build  tries  to  guess  the  distribution  by
              looking  at the available packages.  The specified distribution can either be a string like "11.2"
              or "sles9", "debian7", or the pathname of the build configuration to use.

       --rootbuildroot
              Specifies where the build system is set up. Overrides the BUILD_ROOT enviroment variable.

       --help Print a short help text.

       --norootforbuild
              Force  building  with  user  abuild.  Otherwise,  build   searches   the   recipe   file   for   a
              "needsrootforbuild" hint to decide what user to use.

       --list-state
              list  packages that would be used to create a fresh build root.  Does not create the build root or
              perform a build.

       --rpmspath1:path2:path3...
              Where build can find the packages needed to create the build system.  This  option  overrides  the
              BUILD_RPMS environment variable. This option is deprecated, use --repo instead.

       --archarch1:arch2:arch3...
              What architectures to select from the RPMs.  build automatically sets this to a sensible value for
              your host if you do not specify this option so you should almost never need it.

Recipe File Options

       The build command interprets some special control comments in the recipe file:

       #norootforbuild#needsrootforbuildbuild  uses  either  user  root  or user abuild in the build system to do the build.  For non-SUSE
              distros as well as since SUSE 10.2, the default build user is abuild.  For 10.2  and  before,  the
              default  build  user is root.  These two flags in the spec file allow to deviate from the defaults
              and force-set the build user to abuild and  root  (for  #norootforbuild  and  #needsrootforbuild
              respectively.

       #needsbinariesforbuild
              provide  the  binary  rpms that have been used to set up the build root in /.build.binaries within
              the build root.

Rpm Build Specific Options

--useusedforbuild
              Tell  build not to do dependency expansion, but to extract the list of packages to install from "#
              usedforbuild" lines or, if none are found, from all "BuildRequires" lines.  This option is  useful
              if you want to re-build a package from a srcrpm with exactly the same packages used for the srcrpm
              build.

       --stage
              Pass a stage option to rpmbuild. The default is -ba.

       --target
              Call rpmbuild with a target option. This can be used for cross building.

       --verify
              Verify the files in an existing build system.

See Also

rpm(8),dpkg(8),pacman(8),kiwi(8)

       MaximumRPM:
              http://www.rpm.org/max-rpm/crossdistributionpackaging:
              http://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howtoopenSUSEpackagingstandardsandguidelines:
              http://en.opensuse.org/Portal:Packaging

                                 (c) 1997-2018 SUSE Linux AG Nuernberg, Germany                         BUILD(1)

Synopsis

build [--clean|--no-init] [--repodir_or_url] [--repo...]  [--rootbuildroot] [recipefile]
       build--helpbuild--verify

Virtual Machine Specific Options

--xen--kvm--uml--qemu--emulator--zvm--lxc
              Sets a specific vm type.

       --vm-typetype
              As above.

       --vm-diskfile
              Specifies  the  location  of  the disk image to use. If this option is not given, buildroot.img is
              used (e.g. /var/tmp/build-root.img).

       --vm-disk-sizesize_in_mb
              Specify the size of the disk image to create.

       --vm-disk-filesystemtype
              Sets the filesystem type to use when creating the disk image. The  default  is  to  use  the  ext3
              filesystem.

       --vm-swapfile
              Specifies  the  location  of  the swap file to use. If this option is not given, buildroot.swap is
              used (e.g. /var/tmp/build-root.swap).

       --vm-swap-sizesize_in_mb
              Specify the size of the swap file to create.

       --vm-memorysize_in_mb
              Sets the desired memory size of the virtual machine.

       --vm-kernelkernel_file
              Set a specific kernel to boot in the virtual machine.

       --vm-initrdinitrd_file
              Set a specific kernel to boot in the virtual machine.

       --vm-disk-clean
              Force the recreation of the disk image.

       --vm-telnetPORT
              Is forwarding PORT to a telnet session inside of the VM.  Specify also needed extra  packages  via
              -x parameter, usually: --vm-telnet1234-xtelnet-server-xnet-tools
                 And connect from the host via: telnetlocalhost1234
                 NOTE: The telnet server gets started after all packages got installed.

See Also