Sign inSign up

essentialkaos/rpmbuilder

By essentialkaos

•Updated about 23 hours ago

RPM package build helper

Image
Developer tools
0

10K+

essentialkaos/rpmbuilder repository overview

GitHub Actions CI Status

Usage demo⁠ • Installation⁠ • Tips⁠ • Usage⁠ • Build Status⁠ • Contributing⁠ • License⁠


rpmbuilder is RPM package build helper.

⁠Usage demo

Building Redis rpm package for CentOS6 and CentOS7:

demo

⁠Installation
⁠From ESSENTIAL KAOS Public Repository⁠
sudo yum install -y https://yum.kaos.st/get/$(uname -r).rpm
sudo yum install rpmbuilder

Build node:

sudo yum install -y https://yum.kaos.st/get/$(uname -r).rpm
sudo yum install rpmbuilder-node
sudo passwd builder
# change builder user password here
sudo service buildmon start
⁠Tips
  • You could define rpmbuilder options inside your specs (example⁠). It very helpful for determining information about external sources.
  • If you have a big bunch of default options, you can define them in the preferences file. More info⁠.
  • Since version 2.5.0 rpmbuilder provides automatic checksum generation feature. More info⁠.
⁠Usage
Usage: rpmbuilder {spec-file} {options}

Spec file:

  You can define absolute or relative path to spec file. You also can define only spec name (without extension).
  In this case, rpmbuilder try use {name}.spec file for build and try to find {name}.source file and use as 
  sources list.

Source packaging:

  --pack, -p files                 Pack specified files to archive with default source name (mergeable)
  --relative-pack, -R              Use relative path in source archive instead of absolute
  --source-dir, -sd path           Path to a directory which contains source files specified in spec file
  --source-list, -sl file          Path to file which contains a list of source files specified in spec file
  --dlcache, -dc dir               Path to a directory for downloads caching
  --download, -dl dir              Download all remote sources to a specified directory
  --no-validate, -nv               Don't validate sources

  --git url                        Fetch sources from Git repository
  --svn url                        Fetch sources from SVN repository
  --hg url                         Fetch sources from Mercurial repository
  --bzr url                        Fetch sources from Bazaar repository
  --path, -rp path                 Path to a directory with sources in repository
  --branch, -rb branch             Use specified repository branch
  --revision, -rr rev              Use specified revision
  --tag, -rt tag                   Use specified tag
  --svn-user, -su username         Username for access to SVN repository
  --svn-pass, -sp password         Password for access to SVN repository

  --github, -gh url                Fetch sources from github.com repository by url
  --github, -gh user:project       Fetch sources from github.com repository by user and project
  --github, -gh user/project       Fetch sources from github.com repository by user and project
  --bitbucket, -bb url             Fetch sources from bitbucket.org repository by url
  --bitbucket, -bb user:project    Fetch sources from bitbucket.org repository by user and project
  --bitbucket, -bb user/project    Fetch sources from bitbucket.org repository by user and project
  --launchpad, -lp url             Fetch sources from launchpad.net repository by url
  --launchpad, -lp project-name    Fetch sources from launchpad.net repository by project name

  --gopack, -G url                 Fetch and pack golang sources using gopack

  Examples:

    rpmbuilder package.spec -sl sources/current -d ~/mypackages
    rpmbuilder package.spec --source-list files.list --dest ~/mypackages
    rpmbuilder package.spec --pack "file1 file2 dir1 dir2 file3"
    rpmbuilder package.spec -p "file1 file2" -p "dir1 dir2 file3" -p file4
    rpmbuilder package.spec --git git://github.com/user/project.git --tag 1.3-12
    rpmbuilder package.spec --git git://github.com/user/project.git -rb develop
    rpmbuilder package.spec --git git://github.com/user/project.git -rr f8debbfdbebb97f5d0ee2218edf1425ac219cff5
    rpmbuilder package.spec -bb user:project
    rpmbuilder package.spec --github https://github.com/user/project/
    rpmbuilder package.spec --gopack github.com/user/project --version v1.2.3

Dependencies install:

  --dep-install, -di               Automatically install build dependencies before build process
  --enable-repo, -ER repo-name     Enable repositories (mergeable)
  --disable-repo, -DR repo-name    Disable repositories (mergeable)
  --exclude-package, -EX package   Exclude package by name or glob (mergeable)

Remote build:

  --parallel, -P                   Parallel build on all build servers in same time
  --remote, -r                     Build rpm package on remote server
  --remote, -r user:pass@host      Build rpm package on the remote server with specified host, username and password
  --remote, -r file                Build rpm package on the remote servers listed in specified file
  --host, -hh host                 Remote host IP or domain name
  --user, -uu username             Remote host user
  --pass, -pp password             Password for specified user
  --key, -kk file                  Path to the private key for specified user
  --attach, -A                     Attach to parallel build session in tmux

  Examples:

    rpmbuilder package.spec --remote -ru builder -rp mypass -rh 127.0.0.1
    rpmbuilder package.spec -r builder:[email protected] -i ~/.ssh/id_dsa
    rpmbuilder package.spec --remote ~/servers.list --key ~/.ssh/id_dsa

Build options:

  --no-build, -NB                  Don't execute any build stages
  --no-clean, -NC                  Don't remove source files and spec file after build
  --no-deps, -ND                   Don't verify build dependencies
  --no-binary, -NR                 Don't build binary packages
  --no-source, -NS                 Don't build source package
  --arch, -a arch                  Override target arch for a build
  --qa-rpaths "<value>,…"          Ignoring rpaths check

Arguments passing:

  --with, -w param                 Pass conditional parameters into a rpmbuild (mergeable)
  --without, -W param              Pass conditional parameters into a rpmbuild (mergeable)
  --define, -D "macro=value"       Define MACRO with value (exist macro will be not redefined) (mergeable)

  Examples:

    rpmbuilder package.spec --with ssl --with ldap
    rpmbuilder package.spec -w ssl -W ldap
    rpmbuilder package.spec --with "ssl ldap"
    rpmbuilder package.spec --define "install_dir=/some/dir" --define "service_user=someone"

  More info: https://kaos.sh/rpmbuilder/w/Conditional-Builds

Spec validation:

  --no-lint, -0                    Don't check spec file before package build
  --strict, -1                     Don't build package if perfecto found major problems in spec file
  --pedantic, -2                   Don't build package if perfecto found minor problems in spec file
  --perfect, -3                    Don't build package if perfecto found any problems in spec file

Other:

  --sign, -s                       Sign package after build
  --dest, -d dir                   Save built packages to a specified directory
  --keep-log, -kl                  Save build log after an unsuccessful build
  --bump, -b                       Bump release in spec file after a successful build
  --bump-comment, -bc comment      Comment which will be added while release bump
  --tmp dir                        Path to a temporary directory
  --verbose, -V                    Verbose output
  --no-color, -C                   Disable colors in output
  --help, -h                       Show this help message
  --version, -v                    Show information about version

⁠Build Status
BranchStatus
masterCI
developCI
⁠Contributing

Before contributing to this project please read our Contributing Guidelines⁠.

⁠License

Apache License, Version 2.0⁠

Tag summary

Content type

Image

Digest

sha256:a116c455f…

Size

305.2 MB

Last updated

about 23 hours ago

docker pull essentialkaos/rpmbuilder