1rpkg(1)                          rpm-packager                          rpkg(1)
2
3
4

NAME

6       rpkg - RPM packaging utility
7

SYNOPSIS

9       rpkg [ global_options ] command [ command_options ] [ command_arguments
10       ]
11       rpkg help
12       rpkg command --help
13

DESCRIPTION

15       rpkg is a script to manage spec enriched Git repositories - meaning any
16       repositories  which  contain  an  rpm spec file. It is designed to work
17       with expanded application sources as well as with standard DistGit tar‐
18       balls  and patches. Note that you should trust the .spec files you work
19       with because many operations (like `rpkg srpm` or `rpkg lint`)  involve
20       parsing  the  spec  file, which brings along evaluation of any shell or
21       lua scriplets present in it.
22
23   Global Options

COMMAND OVERVIEW

25       rpkg add [-h] [--all] [paths ...]
26              Add changes to index
27
28       rpkg build [-h]  [--outdir  OUTDIR]  [--spec  SPEC]  [--config  CONFIG]
29       [--wait] [project]
30              Alias for copr-build
31
32       rpkg  ci  [-h]  [--message  MESSAGE  |  --file  FILE] [--all] [--amend]
33       [--with-changelog] [--tag] [--push] [--signoff] [file ...]
34              Alias for commit
35
36       rpkg clean [-h] [--dry-run] [-x] [--force] [-d]
37              Remove untracked files
38
39       rpkg clog [-h] [--raw]
40              Output top changelog entry to stdout
41
42       rpkg clone [-h] [--branches] [--branch BRANCH] [--anonymous]  repo_path
43       [directory]
44              Clone and checkout a repository
45
46       rpkg  commit  [-h]  [--message MESSAGE | --file FILE] [--all] [--amend]
47       [--with-changelog] [--tag] [--push] [--signoff] [file ...]
48              Commit changes
49
50       rpkg compile [-h] [--target TARGET] [--with OPTION] [--without  OPTION]
51       [--outdir   OUTDIR]   [--spec   SPEC]  [--short-circuit  SHORT_CIRCUIT]
52       [--nocheck]
53              Local test rpmbuild compile
54
55       rpkg config [-h]
56              Do nothing, only output used config
57
58       rpkg copr-build [-h] [--outdir OUTDIR] [--spec SPEC] [--config  CONFIG]
59       [--wait] [project]
60              Build package in Copr build system
61
62       rpkg diff [-h] [--cached] [file ...]
63              Show changes between the last commit and working tree, etc.
64
65       rpkg gimmespec [-h]
66              Print auto-located input spec file name
67
68       rpkg  import  [-h]  [--repo-path  REPO_PATH] [--skip-diffs] [--offline]
69       srpm
70              Import srpm content
71
72       rpkg install [-h] [--target TARGET] [--with OPTION] [--without  OPTION]
73       [--outdir   OUTDIR]   [--spec   SPEC]  [--short-circuit  SHORT_CIRCUIT]
74       [--nocheck]
75              Local test rpmbuild install
76
77       rpkg lint [-h] [--info] [--rpmlint-config RPMLINT_CONFIG] [target_path]
78              Run rpmlint against rendered spec and build products if present.
79              Needs rpmlint to be installed.
80
81       rpkg  local  [-h]  [--target TARGET] [--with OPTION] [--without OPTION]
82       [--outdir OUTDIR] [--spec SPEC] [--nocheck]
83              Local test rpmbuild binary
84
85       rpkg log [-h] [--graph] [--all] [--show-signature] [revision ...] [path
86       ...]
87              Display git log history
88
89       rpkg  merge  [-h]  [--no-commit] [--squash] [--message MESSAGE] [--file
90       FILE] [--signoff] [--abort] [--continue] [commit ...]
91              Incorporates changes from the named  commits  into  the  current
92              branch
93
94       rpkg new [-h] [--outdir OUTDIR] [--spec SPEC]
95              Diff against last package tag
96
97       rpkg nvr [-h] [--outdir OUTDIR] [--spec SPEC]
98              Print package name-version-release
99
100       rpkg  prep  [-h]  [--target  TARGET] [--with OPTION] [--without OPTION]
101       [--outdir OUTDIR] [--spec SPEC]
102              Prep test rpmbuild binary
103
104       rpkg pull [-h] [--rebase] [--no-rebase]
105              Pull changes from the remote repository and update  the  working
106              copy
107
108       rpkg push [-h] [--follow-tags] [--force]
109              Push changes and annotated tags to remote repository
110
111       rpkg reset [-h] [--soft | --mixed | --hard] [commit|path]
112              Reset branch tip, index, or the working tree
113
114       rpkg sources [-h] [--repo-path REPO_PATH] [--outdir OUTDIR]
115              Download source files from lookaside cache
116
117       rpkg spec [-h] [--outdir OUTDIR] [--spec SPEC] [--sources] [--print]
118              Generate spec file from a spec template
119
120       rpkg  srpm  [-h]  [--target  TARGET] [--with OPTION] [--without OPTION]
121       [--outdir OUTDIR] [--spec SPEC]
122              Create a source rpm
123
124       rpkg status [-h] [pathspec ...]
125              Display git status of the current working tree and index
126
127       rpkg switch  [-h]  [--create]  [--detach]  [--list-branches]  [--fetch]
128       [target]
129              Work with branches
130
131       rpkg  tag  [-h] [--list] [--delete] [--skip-edit] [--name NAME] [--ver‐
132       sion VERSION] [--release RELEASE] [tag]
133              Manage git tags
134
135       rpkg unused-patches [-h]
136              Print list of patches in CWD not referenced by name in the spec‐
137              file
138
139       rpkg upload [-h] [--repo-path REPO_PATH] [--offline] file [file ...]
140              Upload source files
141
142       rpkg verify-files [-h] [target_dir]
143              Locally verify %%files section
144

COMMAND REFERENCE

146   rpkg add
147         usage: rpkg add [-h] [--all] [paths ...]
148
149         This  command  updates  the  index  with changes found in the working
150       tree.
151
152         positional arguments:
153           paths       Specific paths to add changes for.
154
155         options:
156           -h, --help  show this help message and exit
157           --all, -A   Update index with all  changes  found  in  the  working
158       tree.
159
160
161   rpkg build
162         usage: rpkg build [-h] [--outdir OUTDIR] [--spec SPEC] [--config CON‐
163       FIG]
164                           [--wait]
165                           [project]
166
167         Build package in Copr build system. You need  to  have  copr-cli  in‐
168       stalled and
169         also set up Copr API key. For more information about the API key, see
170       API KEY
171         section in copr-cli(1) man page. NOTE: This method  of  building  the
172       package
173         does not support with, without, and rpmdefines rpkg configuration op‐
174       tions.
175         These options are used to build an srpm which is then  sent  to  Copr
176       but rpm
177         build  in Copr happens without these options already, which is impor‐
178       tant for
179         the resulting build. If you want these options  applied,  you  should
180       rather
181         setup auto-rebuilding in Copr that will react to new pushes into your
182         repository.
183
184         positional arguments:
185           project           Name  of the project in format OWNER/PROJECT. You
186       can omit
187                            it if you have specified  copr_project  configura‐
188       tion option.
189
190         options:
191           -h, --help       show this help message and exit
192           --outdir  OUTDIR  Where to put any generated rpm content. Directory
193       must
194                            exist.
195           --spec SPEC      An input spec template. If  not  given,  the  spec
196       template is
197                            auto-located  in  <path>  as  a file ending either
198       with
199                            ".spec.rpkg" or ".spec" suffix  (in  this  order).
200       The
201                            directory of the template then also becomes search
202       location
203                            for the associated sources and rpkg.conf file.  By
204       default,
205                            these  files are being looked up in <path>. Essen‐
206       tially,
207                            this argument changes the subpackage we work  with
208       and which
209                            is  determined  by  the  --path argument initially
210       (with CWD as
211                            the default value for it).
212           --config CONFIG  Path to an alternative Copr configuration file
213           --wait, -w       Wait for build to finish.
214
215
216   rpkg ci
217         usage: rpkg  ci  [-h]  [--message  MESSAGE  |  --file  FILE]  [--all]
218       [--amend]
219                        [--with-changelog] [--tag] [--push] [--signoff]
220                        [file ...]
221
222         Alias for commit.
223
224         positional arguments:
225           file                  Optional list of specific files to commit
226
227         options:
228           -h, --help            show this help message and exit
229           --message MESSAGE, -m MESSAGE
230                                 Use  the  given  <msg>  as the commit message
231       summary
232           --file FILE, -F FILE  Take the commit message from the given file
233           --all, -a             Tell the command to automatically stage files
234       that
235                                 have been modified or deleted.
236           --amend               Replace the tip of the current branch by cre‐
237       ating a
238                                 new commit.
239           --with-changelog      Get the last changelog from  SPEC  as  commit
240       message
241                                 content. This option must be used with -m to‐
242       gether.
243           --tag, -t             Create a tag for this commit
244           --push, -p            Commit and push as one action
245           --signoff, -s         Include a signed-off-by
246
247
248   rpkg clean
249         usage: rpkg clean [-h] [--dry-run] [-x] [--force] [-d]
250
251         This command can be used to clean up your work  tree  from  untracked
252       files and,
253         files described by .gitignore additionally if -x option is passed.
254
255         options:
256           -h, --help     show this help message and exit
257           --dry-run, -n  Don't actually remove anything, just show what would
258       be done.
259           -x             Don't exclude files described  by  .gitignore  rules
260       from
261                          deletion.
262           --force,  -f     This option is required to perform deletion of any
263       files or
264                          directories if git configuration variable  clean.re‐
265       quireForce
266                          is set to true. It is passed by default if rpkg con‐
267       figuration
268                          variable git.clean_force is set to true.
269           -d             Remove whole directories in addition to files.  This
270       option is
271                          passed by default if rpkg configuration variable
272                          git.clean_dirs is set to true.
273
274
275   rpkg clog
276         usage: rpkg clog [-h] [--raw]
277
278         This  will output the latest rpm changelog entry to stdout. The lead‐
279       ing "- "
280         text will be stripped.
281
282         options:
283           -h, --help  show this help message and exit
284           --raw       Generate a more "raw" clog without twiddling  the  con‐
285       tents
286
287
288   rpkg clone
289         usage: rpkg clone [-h] [--branches] [--branch BRANCH] [--anonymous]
290                           repo_path [directory]
291
292         This  command  will  clone  the  named repository from the configured
293       repository
294         base URL. By default it will also checkout the master branch for your
295       working
296         copy.
297
298         positional arguments:
299           repo_path             Name of the repository to clone or full clone
300       url. If
301                                 just a basename is  specified,  preconfigured
302       git clone
303                                 urls  and  default  namespace is used to con‐
304       struct the
305                                 final clone url.
306           directory             Directory in which to clone the repository
307
308         options:
309           -h, --help            show this help message and exit
310           --branches, -B        Checkout a subdirectory for each branch
311           --branch BRANCH, -b BRANCH
312                                 Check out a specific branch. This has no  ef‐
313       fect if
314                                 --branches/-B is specified.
315           --anonymous, -a       Check out a repository anonymously
316
317
318   rpkg commit
319         usage:  rpkg  commit  [-h]  [--message MESSAGE | --file FILE] [--all]
320       [--amend]
321                            [--with-changelog] [--tag] [--push] [--signoff]
322                            [file ...]
323
324         This invokes a git commit. All tracked files  with  changes  will  be
325       committed
326         unless a specific file list is provided. $EDITOR will be used to gen‐
327       erate a
328         changelog message unless one is given to the command. A tag  or  push
329       can be
330         done  at the same time. If you have set git.gpg_keyid rpkg configura‐
331       tion
332         option, commit and tag will be created signed with the configured GPG
333       key.
334
335         positional arguments:
336           file                  Optional list of specific files to commit
337
338         options:
339           -h, --help            show this help message and exit
340           --message MESSAGE, -m MESSAGE
341                                 Use  the  given  <msg>  as the commit message
342       summary
343           --file FILE, -F FILE  Take the commit message from the given file
344           --all, -a             Tell the command to automatically stage files
345       that
346                                 have been modified or deleted.
347           --amend               Replace the tip of the current branch by cre‐
348       ating a
349                                 new commit.
350           --with-changelog      Get the last changelog from  SPEC  as  commit
351       message
352                                 content. This option must be used with -m to‐
353       gether.
354           --tag, -t             Create a tag for this commit
355           --push, -p            Commit and push as one action
356           --signoff, -s         Include a signed-off-by
357
358
359   rpkg compile
360         usage: rpkg compile [-h] [--target TARGET] [--with OPTION] [--without
361       OPTION]
362                             [--outdir OUTDIR] [--spec SPEC]
363                             [--short-circuit SHORT_CIRCUIT] [--nocheck]
364
365         This  command  calls  rpmbuild  to compile the source. By default the
366       prep and
367         configure stages will be done as well, unless the  short-circuit  op‐
368       tion is
369         used.
370
371         options:
372           -h, --help            show this help message and exit
373           --target TARGET       Prep for a specific arch or arch-vendor-os.
374           --with  OPTION          Enable %bcond spec OPTION. Can be specified
375       multiple
376                                 times.
377           --without OPTION      Disable %bcond spec OPTION. Can be  specified
378       multiple
379                                 times.
380           --outdir  OUTDIR        Where to put any generated rpm content. Di‐
381       rectory must
382                                 exist.
383           --spec SPEC           An input spec template.  If  not  given,  the
384       spec
385                                 template  is auto-located in <path> as a file
386       ending
387                                 either with ".spec.rpkg"  or  ".spec"  suffix
388       (in this
389                                 order).  The  directory  of the template then
390       also
391                                 becomes search location  for  the  associated
392       sources and
393                                 rpkg.conf  file.  By default, these files are
394       being
395                                 looked up in <path>. Essentially, this  argu‐
396       ment
397                                 changes the subpackage we work with and which
398       is
399                                 determined by the --path  argument  initially
400       (with CWD
401                                 as the default value for it).
402           --short-circuit SHORT_CIRCUIT
403                                 short-circuit compile
404           --nocheck             nocheck compile
405
406
407   rpkg config
408         usage: rpkg config [-h]
409
410         Do nothing, only output used config.
411
412         options:
413           -h, --help  show this help message and exit
414
415
416   rpkg copr-build
417         usage: rpkg copr-build [-h] [--outdir OUTDIR] [--spec SPEC] [--config
418       CONFIG]
419                                [--wait]
420                                [project]
421
422                 Build package in Copr build system.
423
424                 You need to have copr-cli installed and also set up Copr  API
425       key.
426                 For  more  information about the API key, see API KEY section
427       in
428                 copr-cli(1) man page.
429
430                 NOTE: This method of building the package does not support
431                 with, without, and rpmdefines rpkg configuration options.
432                 These options are used to build an srpm which is then
433                 sent to Copr but rpm build in Copr happens without
434                 these options already, which is important for the
435                 resulting build. If you want these options applied,
436                 you should rather setup auto-rebuilding in Copr
437                 that will react to new pushes into your repository.
438
439
440         positional arguments:
441           project          Name of the project in format  OWNER/PROJECT.  You
442       can omit
443                            it  if  you have specified copr_project configura‐
444       tion option.
445
446         options:
447           -h, --help       show this help message and exit
448           --outdir OUTDIR  Where to put any generated rpm content.  Directory
449       must
450                            exist.
451           --spec  SPEC       An  input  spec template. If not given, the spec
452       template is
453                            auto-located in <path> as  a  file  ending  either
454       with
455                            ".spec.rpkg"  or  ".spec"  suffix (in this order).
456       The
457                            directory of the template then also becomes search
458       location
459                            for  the associated sources and rpkg.conf file. By
460       default,
461                            these files are being looked up in <path>.  Essen‐
462       tially,
463                            this  argument changes the subpackage we work with
464       and which
465                            is determined by  the  --path  argument  initially
466       (with CWD as
467                            the default value for it).
468           --config CONFIG  Path to an alternative Copr configuration file
469           --wait, -w       Wait for build to finish.
470
471
472   rpkg diff
473         usage: rpkg diff [-h] [--cached] [file ...]
474
475         Use git diff to show changes that have been made to tracked files. By
476       default
477         cached changes (changes that have been git added) will not be shown.
478
479         positional arguments:
480           file        Optionally diff specific files
481
482         options:
483           -h, --help  show this help message and exit
484           --cached    View staged changes
485
486
487   rpkg gimmespec
488         usage: rpkg gimmespec [-h]
489
490         Print auto-located input spec file name
491
492         options:
493           -h, --help  show this help message and exit
494
495
496   rpkg import
497         usage:  rpkg  import  [-h]  [--repo-path  REPO_PATH]   [--skip-diffs]
498       [--offline]
499                            srpm
500
501         This  will  extract  sources, patches, and the spec file from an srpm
502       and
503         overwrites the current package content accordingly. It will import to
504       the
505         current  branch by default. Newly discovered sources will be uploaded
506       and
507         .gitignore and sources file updated accordingly.
508
509         positional arguments:
510           srpm                  Source rpm to import. It can be also  an  URL
511       in which
512                                 case  the  target  srpm  will  be  downloaded
513       first.
514
515         options:
516           -h, --help            show this help message and exit
517           --repo-path REPO_PATH
518                                 Path to git repository for  which  to  upload
519       sources. If
520                                 not  specified,  it will be automatically de‐
521       rived from
522                                 remote URL configured for the current branch.
523           --skip-diffs          Don't show diffs when importing.
524           --offline             Do not actually upload the files but  do  all
525       the rest.
526
527
528   rpkg install
529         usage: rpkg install [-h] [--target TARGET] [--with OPTION] [--without
530       OPTION]
531                             [--outdir OUTDIR] [--spec SPEC]
532                             [--short-circuit SHORT_CIRCUIT] [--nocheck]
533
534         This will call rpmbuild to run the install section. All leading  sec‐
535       tions will
536         be processed as well, unless the short-circuit option is used.
537
538         options:
539           -h, --help            show this help message and exit
540           --target TARGET       Prep for a specific arch or arch-vendor-os.
541           --with  OPTION          Enable %bcond spec OPTION. Can be specified
542       multiple
543                                 times.
544           --without OPTION      Disable %bcond spec OPTION. Can be  specified
545       multiple
546                                 times.
547           --outdir  OUTDIR        Where to put any generated rpm content. Di‐
548       rectory must
549                                 exist.
550           --spec SPEC           An input spec template.  If  not  given,  the
551       spec
552                                 template  is auto-located in <path> as a file
553       ending
554                                 either with ".spec.rpkg"  or  ".spec"  suffix
555       (in this
556                                 order).  The  directory  of the template then
557       also
558                                 becomes search location  for  the  associated
559       sources and
560                                 rpkg.conf  file.  By default, these files are
561       being
562                                 looked up in <path>. Essentially, this  argu‐
563       ment
564                                 changes the subpackage we work with and which
565       is
566                                 determined by the --path  argument  initially
567       (with CWD
568                                 as the default value for it).
569           --short-circuit SHORT_CIRCUIT
570                                 short-circuit install
571           --nocheck             nocheck install
572
573
574   rpkg lint
575         usage:  rpkg  lint  [-h]  [--info]  [--rpmlint-config RPMLINT_CONFIG]
576       [target_path]
577
578         Rpmlint can be configured using the --rpmlint-config/-r option or  by
579       setting
580         rpkg.rpmlint_config variable.
581
582         positional arguments:
583           target_path           Directory with rpm items to be linted or just
584       a single
585                                 rpm item like a .spec file. if not specified,
586       the
587                                 latest  package  directory  from  base output
588       path will be
589                                 selected.
590
591         options:
592           -h, --help            show this help message and exit
593           --info, -i            Display explanations for reported messages
594           --rpmlint-config RPMLINT_CONFIG, -r RPMLINT_CONFIG
595                                 Use a specific configuration file for rpmlint
596
597
598   rpkg local
599         usage: rpkg local [-h] [--target TARGET] [--with  OPTION]  [--without
600       OPTION]
601                           [--outdir OUTDIR] [--spec SPEC] [--nocheck]
602
603         Locally test run of rpmbuild producing binary RPMs.
604
605         options:
606           -h, --help        show this help message and exit
607           --target TARGET   Prep for a specific arch or arch-vendor-os.
608           --with  OPTION     Enable %bcond spec OPTION. Can be specified mul‐
609       tiple
610                             times.
611           --without OPTION  Disable %bcond spec OPTION. Can be specified mul‐
612       tiple
613                             times.
614           --outdir OUTDIR   Where to put any generated rpm content. Directory
615       must
616                             exist.
617           --spec SPEC       An input spec template. If not  given,  the  spec
618       template is
619                             auto-located  in  <path>  as a file ending either
620       with
621                             ".spec.rpkg" or ".spec" suffix (in  this  order).
622       The
623                             directory  of  the  template  then  also  becomes
624       search
625                             location for the associated sources and rpkg.conf
626       file. By
627                             default,  these  files  are  being  looked  up in
628       <path>.
629                             Essentially, this argument changes the subpackage
630       we work
631                             with  and which is determined by the --path argu‐
632       ment
633                             initially (with CWD as the default value for it).
634           --nocheck         nocheck local build
635
636
637   rpkg log
638         usage: rpkg log [-h] [--graph] [--all] [--show-signature]
639                         [revision ...] [path ...]
640
641         Display git log history.  Can  be  configured  by  git.log_graph  and
642       git.log_all
643         rpkg configuration options.
644
645         positional arguments:
646           revision          Specific revisions or revision range to be shown.
647           path               Limit  commits  to those that touch the specific
648       path(s).
649                             You might need to use a -- to explicitly separate
650       paths
651                             from  revisions.  In  that case, you also need to
652       insert
653                             another -- to first separate options from all the
654                             positional arguments.
655
656         options:
657           -h, --help        show this help message and exit
658           --graph           Draw a text-based graphical representation of the
659       commit
660                             history. By default enabled by rpkg configuration
661       option
662                             git.log_graph.
663           --all             Pretend as if all the refs in refs/,  along  with
664       HEAD, are
665                             listed  on the command line as a revision. By de‐
666       fault
667                             enabled by rpkg configuration option git.log_all.
668           --show-signature  Show gpg signatures and check their validity.
669
670
671   rpkg merge
672         usage: rpkg merge [-h] [--no-commit] [--squash] [--message MESSAGE]
673                           [--file FILE] [--signoff] [--abort] [--continue]
674                           [commit ...]
675
676         Incorporates changes from the named commits  (since  the  time  their
677       histories
678         diverged from the current branch) into the current branch.
679
680         positional arguments:
681           commit                Commits, usually other branch heads, to merge
682       into our
683                                 branch. If no commit is given, merge the  re‐
684       mote-
685                                 tracking branches that the current branch is
686                                 configured to use as its upstream.
687
688         options:
689           -h, --help            show this help message and exit
690           --no-commit           Perform the merge but do not auto-commit.
691           --squash               Produce  the working tree and index state as
692       if a real
693                                 merge happened but do  not  auto-commit.  The
694       next commit
695                                 will  have  only  a single parent and contain
696       all the
697                                 merged changes.
698           --message MESSAGE, -m MESSAGE
699                                 Use the given <msg>  as  the  commit  message
700       summary.
701           --file FILE, -F FILE  Take the commit message from the given file.
702           --signoff             Add Signed-off-by line by the committer.
703           --abort                 Abort   the   current  conflict  resolution
704       process, and try
705                                 to reconstruct the pre-merge state.
706           --continue            When all your merge conflicts have  been  re‐
707       solved, you
708                                 can  conclude  the merge by running this com‐
709       mand.
710
711
712   rpkg new
713         usage: rpkg new [-h] [--outdir OUTDIR] [--spec SPEC]
714
715         This will use git to show a diff of all the changes (even uncommitted
716       changes)
717         since the last package tag was created.
718
719         options:
720           -h, --help       show this help message and exit
721           --outdir  OUTDIR  Where to put any generated rpm content. Directory
722       must
723                            exist.
724           --spec SPEC      An input spec template. If  not  given,  the  spec
725       template is
726                            auto-located  in  <path>  as  a file ending either
727       with
728                            ".spec.rpkg" or ".spec" suffix  (in  this  order).
729       The
730                            directory of the template then also becomes search
731       location
732                            for the associated sources and rpkg.conf file.  By
733       default,
734                            these  files are being looked up in <path>. Essen‐
735       tially,
736                            this argument changes the subpackage we work  with
737       and which
738                            is  determined  by  the  --path argument initially
739       (with CWD as
740                            the default value for it).
741
742
743   rpkg nvr
744         usage: rpkg nvr [-h] [--outdir OUTDIR] [--spec SPEC]
745
746         Print package name-version-release
747
748         options:
749           -h, --help       show this help message and exit
750           --outdir OUTDIR  Where to put any generated rpm content.  Directory
751       must
752                            exist.
753           --spec  SPEC       An  input  spec template. If not given, the spec
754       template is
755                            auto-located in <path> as  a  file  ending  either
756       with
757                            ".spec.rpkg"  or  ".spec"  suffix (in this order).
758       The
759                            directory of the template then also becomes search
760       location
761                            for  the associated sources and rpkg.conf file. By
762       default,
763                            these files are being looked up in <path>.  Essen‐
764       tially,
765                            this  argument changes the subpackage we work with
766       and which
767                            is determined by  the  --path  argument  initially
768       (with CWD as
769                            the default value for it).
770
771
772   rpkg prep
773         usage:  rpkg  prep  [-h] [--target TARGET] [--with OPTION] [--without
774       OPTION]
775                          [--outdir OUTDIR] [--spec SPEC]
776
777         Use rpmbuild to "prep" the sources (unpack the source archive(s)  and
778       apply any
779         patches).
780
781         options:
782           -h, --help        show this help message and exit
783           --target TARGET   Prep for a specific arch or arch-vendor-os.
784           --with  OPTION     Enable %bcond spec OPTION. Can be specified mul‐
785       tiple
786                             times.
787           --without OPTION  Disable %bcond spec OPTION. Can be specified mul‐
788       tiple
789                             times.
790           --outdir OUTDIR   Where to put any generated rpm content. Directory
791       must
792                             exist.
793           --spec SPEC       An input spec template. If not  given,  the  spec
794       template is
795                             auto-located  in  <path>  as a file ending either
796       with
797                             ".spec.rpkg" or ".spec" suffix (in  this  order).
798       The
799                             directory  of  the  template  then  also  becomes
800       search
801                             location for the associated sources and rpkg.conf
802       file. By
803                             default,  these  files  are  being  looked  up in
804       <path>.
805                             Essentially, this argument changes the subpackage
806       we work
807                             with  and which is determined by the --path argu‐
808       ment
809                             initially (with CWD as the default value for it).
810
811
812   rpkg pull
813         usage: rpkg pull [-h] [--rebase] [--no-rebase]
814
815         This command uses git to fetch remote changes and apply them  to  the
816       current
817         working copy. A rebase option is available which can be used to avoid
818       merges.
819
820         options:
821           -h, --help   show this help message and exit
822           --rebase     Rebase the locally committed changes on top of the re‐
823       mote
824                        changes after fetching. This can avoid a merge commit,
825       but does
826                        rewrite local history.
827           --no-rebase  Do not rebase, overriding .git settings  to  the  con‐
828       trary
829
830
831   rpkg push
832         usage: rpkg push [-h] [--follow-tags] [--force]
833
834         Push changes and annotated tags to remote repository.
835
836         options:
837           -h, --help     show this help message and exit
838           --follow-tags   Push all the refs that would be pushed without this
839       option
840                          and also push annotated tags reachable from the refs
841       that are
842                          pushed  by default. This option is passed by default
843       if
844                          git.push_follow_tags configuration variable  is  set
845       to true.
846           --force, -f    Force push
847
848
849   rpkg reset
850         usage: rpkg reset [-h] [--soft | --mixed | --hard] [commit|path]
851
852         Reset  HEAD  to  the specified commit and update index and/or working
853       tree.
854         Alternatively, if path is passed instead of commit, reset the respec‐
855       tive index
856         entry to its state at HEAD.
857
858         positional arguments:
859           commit|path   Commit or path. If path is passed, the respective in‐
860       dex entry
861                        is updated to its HEAD state, otherwise the action de‐
862       pends on
863                        the specified option switch (--mixed is implicit).
864
865         options:
866           -h, --help   show this help message and exit
867           --soft        Does  not  touch  the index file or the working tree.
868       Only resets
869                        the head to the specified commit.
870           --mixed      Resets the index but not the working tree. This is the
871       default
872                        action.
873           --hard        Resets  the  index  and  working tree. Any changes to
874       tracked files
875                        in the working tree since  the  specified  commit  are
876       discarded.
877
878
879   rpkg sources
880         usage: rpkg sources [-h] [--repo-path REPO_PATH] [--outdir OUTDIR]
881
882         Download source files from lookaside cache.
883
884         options:
885           -h, --help            show this help message and exit
886           --repo-path REPO_PATH
887                                 Path  to git repository for which to download
888       sources.
889                                 If not specified, it  will  be  automatically
890       derived
891                                 from  remote  URL  configured for the current
892       branch.
893           --outdir OUTDIR       Directory to put downloaded files  into  (de‐
894       faults to
895                                 cwd)
896
897
898   rpkg spec
899         usage:  rpkg  spec  [-h]  [--outdir OUTDIR] [--spec SPEC] [--sources]
900       [--print]
901
902         Preprocess a given spec template and put the resulting spec file into
903       outdir.
904         The  spec  template  is simply copied into the outdir if spec prepro‐
905       cessing is
906         turned off or if the input spec template does not  contain  any  pre‐
907       processor
908         macros.
909
910         options:
911           -h, --help       show this help message and exit
912           --outdir  OUTDIR  Where to put any generated rpm content. Directory
913       must
914                            exist.
915           --spec SPEC      An input spec template. If  not  given,  the  spec
916       template is
917                            auto-located  in  <path>  as  a file ending either
918       with
919                            ".spec.rpkg" or ".spec" suffix  (in  this  order).
920       The
921                            directory of the template then also becomes search
922       location
923                            for the associated sources and rpkg.conf file.  By
924       default,
925                            these  files are being looked up in <path>. Essen‐
926       tially,
927                            this argument changes the subpackage we work  with
928       and which
929                            is  determined  by  the  --path argument initially
930       (with CWD as
931                            the default value for it).
932           --sources        Enable source generation by the  input  spec  tem‐
933       plate. By
934                            default disabled.
935           --print, -p      Print rendered spec file to stdout.
936
937
938   rpkg srpm
939         usage:  rpkg  srpm  [-h] [--target TARGET] [--with OPTION] [--without
940       OPTION]
941                          [--outdir OUTDIR] [--spec SPEC]
942
943         Create a source rpm
944
945         options:
946           -h, --help        show this help message and exit
947           --target TARGET   Prep for a specific arch or arch-vendor-os.
948           --with OPTION     Enable %bcond spec OPTION. Can be specified  mul‐
949       tiple
950                             times.
951           --without OPTION  Disable %bcond spec OPTION. Can be specified mul‐
952       tiple
953                             times.
954           --outdir OUTDIR   Where to put any generated rpm content. Directory
955       must
956                             exist.
957           --spec  SPEC        An  input spec template. If not given, the spec
958       template is
959                             auto-located in <path> as a  file  ending  either
960       with
961                             ".spec.rpkg"  or  ".spec" suffix (in this order).
962       The
963                             directory  of  the  template  then  also  becomes
964       search
965                             location for the associated sources and rpkg.conf
966       file. By
967                             default, these  files  are  being  looked  up  in
968       <path>.
969                             Essentially, this argument changes the subpackage
970       we work
971                             with and which is determined by the --path  argu‐
972       ment
973                             initially (with CWD as the default value for it).
974
975
976   rpkg status
977         usage: rpkg status [-h] [pathspec ...]
978
979         Display git status of the current working tree and index.
980
981         positional arguments:
982           pathspec    Limit status information to the specific subpaths.
983
984         options:
985           -h, --help  show this help message and exit
986
987
988   rpkg switch
989         usage:  rpkg  switch  [-h]  [--create]  [--detach]  [--list-branches]
990       [--fetch]
991                            [target]
992
993         Switch to a given git branch. If --detach option is given, also  tag,
994       or a
995         commit can be used as a target for switching. Additionally, this com‐
996       mand can
997         be used to list the existing local and remote branches  or  to  fetch
998       new refs
999         from remote.
1000
1001         positional arguments:
1002           target               Target branch name or alternatively, commit or
1003       tag to
1004                                switch to. If provided with  a  remote  branch
1005       name that
1006                                does  not  have  a local match, it creates one
1007       and sets it
1008                                to track the corresponding remote branch.
1009
1010         options:
1011           -h, --help           show this help message and exit
1012           --create, -c         Create a new local branch even if it does  not
1013       have the
1014                                corresponding remote and switch to it.
1015           --detach, -d         Detach HEAD at target commit or tag.
1016           --list-branches,  -l   List both remote-tracking branches and local
1017       branches.
1018                                Implied when target is not specified.
1019           --fetch              Fetch branches and  tags  from  remote  before
1020       switch.
1021
1022
1023   rpkg tag
1024         usage: rpkg tag [-h] [--list] [--delete] [--skip-edit] [--name NAME]
1025                         [--version VERSION] [--release RELEASE]
1026                         [tag]
1027
1028         This  command  uses  git to create, list, or delete tags. If you have
1029       set
1030         git.gpg_keyid in rpkg configuraion, the tags will be created signed.
1031
1032         positional arguments:
1033           tag                   Name of the tag. Overrides any of the --name,
1034                                 --version, --release args if specified
1035
1036         options:
1037           -h, --help            show this help message and exit
1038           --list, -l            List all tags with a given pattern, or all if
1039       not
1040                                 pattern is given
1041           --delete, -d          Delete a tag
1042           --skip-edit, -s       Skip changelog editing when creating a tag.
1043           --name NAME, -n NAME  Set package name part of the tag name to spe‐
1044       cific
1045                                 value.
1046           --version VERSION, -v VERSION
1047                                 Set version part of the tag name to  specific
1048       value.
1049           --release RELEASE, -r RELEASE
1050                                 Set  release part of the tag name to specific
1051       value.
1052
1053
1054   rpkg unused-patches
1055         usage: rpkg unused-patches [-h]
1056
1057         Print list of patches in current working directory not referenced  by
1058       name in
1059         the specfile.
1060
1061         options:
1062           -h, --help  show this help message and exit
1063
1064
1065   rpkg upload
1066         usage:  rpkg  upload  [-h]  [--repo-path  REPO_PATH] [--offline] file
1067       [file ...]
1068
1069         This command will upload  new  source  file(s)  to  lookaside  cache.
1070       Source file
1071         names  are  appended to sources file, and .gitignore will be also up‐
1072       dated with
1073         new uploaded file(s). Please remember to commit them.
1074
1075         positional arguments:
1076           file                  List of files to upload
1077
1078         options:
1079           -h, --help            show this help message and exit
1080           --repo-path REPO_PATH
1081                                 Path to git repository for  which  to  upload
1082       sources. If
1083                                 not  specified,  it will be automatically de‐
1084       rived from
1085                                 remote URL configured for the current branch.
1086           --offline             Do not actually upload the files but  do  all
1087       the rest,
1088                                 which   involves   updating   .gitignore  and
1089       sources file.
1090
1091
1092   rpkg verify-files
1093         usage: rpkg verify-files [-h] [target_dir]
1094
1095         Locally run 'rpmbuild -bl' to verify the  spec  file's  %%files  sec‐
1096       tions. This
1097         requires a successful run of the install commaned in advance.
1098
1099         positional arguments:
1100           target_dir   Directory  with build results to verify. If not speci‐
1101       fied, the
1102                       latest package directory from base output path will  be
1103       selected.
1104
1105         options:
1106           -h, --help  show this help message and exit
1107
1108

CONFIGURATION

1110       rpkg  reads  configuration options from the following files in this or‐
1111       der:
1112
1113           /etc/rpkg.conf,     ~/.config/rpkg.conf,      <git_root>/rpkg.conf,
1114       <pkg_path>/rpkg.conf
1115
1116       Configuration  found  in <pkg_path>/rpkg.conf has the highest priority.
1117       Configuration  found  in  /etc/rpkg.conf  has  the   lowest   priority.
1118       <git_root>  placeholder above is the top level of the Git repository we
1119       are working in. If we are in a plain directory (i.e.  there is not .git
1120       subdir)  and  all  our  parent  directories  are also plain, reading of
1121       <git_root>/rpkg.conf is skipped. <pkg_path> is CWD, by default, but  it
1122       can  be  overriden with --path argument and --spec argument, the latter
1123       having higher priority.
1124
1125       There are also built-in default values for each variable that are  used
1126       if the variable is not specified in any configuration file. You can see
1127       them below together with the variable descriptions.
1128
1129
1130   DEFAULT CONFIGURATION WITH DESCRIPTIONS
1131           [rpkg]
1132           # Whether to enable spec preprocessing,
1133           # that is parsing and evaluation of {{{ ... }}} expressions
1134           # type: bool
1135           preprocess_spec = True
1136
1137           # Base directory where generated files should be put.
1138           # The files will not be put directly there but
1139           # instead into dynamically generated subdirectories
1140           # type: string
1141           base_output_path = /tmp/rpkg
1142
1143           # Path to user preproc macros. You may use ${git_props:root}
1144           # variable to anchor the path to top-level of your git repo.
1145           # type: list of space-separated strings
1146           user_macros =
1147
1148           # rpm bcondition "with" specifier
1149           # type: list of space-separated strings
1150           with =
1151
1152           # rpm bcondition "without" specifier
1153           # type: list of space-separated strings
1154           without =
1155
1156           # Defines rpm variables for spec parsing
1157           # type: list of space-separated quoted  string  pairs  (e.g.  'dist
1158       %nil')
1159           rpmdefines =
1160
1161           # Defines rpm variables for spec parsing during
1162           # version/release bumping (see the tag subcommand)
1163           # This list is not being concatenated with rpmdefines.
1164           # type: list of space-separated quoted string pairs
1165           bump_rpmdefines = 'dist %nil'
1166
1167           # Path to rpmlint configuration (see the lint subcommand)
1168           # type: string
1169           rpmlint_config =
1170
1171           # Paths to default preproc macros relative to
1172           # /usr/lib/rpkg.macros.d directory
1173           # type: list of space-separated strings
1174           default_macros = git.bash
1175
1176           [git]
1177           # Default Git repository URL, used by `rpkg clone <repo_path>`
1178           # type: string
1179           clone_url =
1180
1181           # Default Git repository URL, used by `rpkg clone -a <repo_path>`
1182           # type: string
1183           anon_clone_url =
1184
1185           # If you clone a project with rpkg clone and specify only
1186           # its basename (i.e. the last part like "dist-git"), then
1187           # default namespace (e.g. rpms) will be automatically
1188           # prepended to it together with ending slash if specified.
1189           # type: string
1190           default_namespace =
1191
1192           # Whether to automatically push tags with rpkg push
1193           # type: bool
1194           push_follow_tags = True
1195
1196           # Allows removing of files and directories
1197           # for rpkg clean operation
1198           # type: bool
1199           clean_force = True
1200
1201           # Whether rpkg clean should descend into
1202           # untracked directories
1203           # type: bool
1204           clean_dirs = True
1205
1206           # Whether rpkg log should be in graph form
1207           # type: bool
1208           log_graph = True
1209
1210           # Whether rpkg log should display all branches
1211           # type: bool
1212           log_all = True
1213
1214           # Key to sign commits and tags with. Specifying
1215           # it enables signing.
1216           # type: bool
1217           gpg_keyid =
1218
1219           # In which Copr project to build a package by using
1220           # rpkg build command, in form: user/project or @group/project
1221           # type: string
1222           copr_project =
1223
1224           [lookaside]
1225           # Download URL for DistGit lookaside cache, used by rpkg sources.
1226           # There are some dynamic variables that you can use:
1227           #   %(repo_path)s  is  a  fully-namespaced  repository  name  (e.g.
1228       rpms/rpkg-util)
1229           # %(ns<n>)s, ..., %(ns2)s, %(ns1)s, %(name)s is %(repo_path)s split
1230       into individual components.
1231           #  E.g.  forks/praiskup/rpms/passwd  path  will  provide variables:
1232       %(ns3)s == forks, %(ns2)s == praiskup, %(ns1)s  ==  rpms,  %(name)s  ==
1233       passwd
1234           #   %(filename)s,  %(hashtype)s,  %(hash)s  fields  are  read  from
1235       'sources' file, if present.
1236           # Further, you can use ${git_props:remote_netloc} interpolation
1237           # variable to base the download URL on git clone URL.
1238           # type: string
1239           download_url =
1240
1241           # Upload URL for DistGit lookaside cache, used by rpkg upload.
1242           # You can use ${git_props:remote_netloc} interpolation
1243           # variable to base the download URL on git clone URL.
1244           # type: string
1245           upload_url =
1246
1247           # For client certificate authentication if employed
1248           # by the server
1249           # type: string
1250           client_cert =
1251
1252           # For client certificate authentication if employed
1253           # by the server
1254           # type: string
1255           client_key =
1256
1257           # For client certificate authentication if employed
1258           # by the server
1259           # type: string
1260           ca_cert =
1261
1262
1263   DYNAMIC CONFIGURATION SECTIONS
1264       There are also other config sections which  are  dynamically  added  by
1265       rpkg  during  runtime.  These are [DEFAULT] (containing user, path, and
1266       pkg_path properties) and [git_props] (containing  lots  of  git  status
1267       specific  information). You can print the whole final config (including
1268       those sections) with rpkg config command.
1269
1270
1271   INTERPOLATION
1272       When specifying configuration values, you can use interpolation to ref‐
1273       erence  another  configuration  variable even from another section. The
1274       syntax is: ${<section name>:<param name>} (e.g. ${git_props:remote_net‐
1275       loc}).
1276
1277       There  is  also  %(<var>)s  interpolation  for  some fields like looka‐
1278       side:download_url.  The variables you can interpolate like this are al‐
1279       ways field-specific.
1280
1281

EXAMPLES

1283       Run %prep phase of an rpm build:
1284
1285           $ rpkg prep
1286           git_dir_pack: packing path /home/clime/rpkg-util
1287           git_dir_pack:   Wrote:   /tmp/rpkg/rpkg-util-12-ft3gm2mw/rpkg-util-
1288       f01b36d7-dirty.tar.gz
1289           Wrote: /tmp/rpkg/rpkg-util-12-ft3gm2mw/rpkg-util.spec
1290           Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.iqrI6z
1291           + umask 022
1292           + cd /tmp/rpkg/rpkg-util-12-ft3gm2mw
1293           + cd /tmp/rpkg/rpkg-util-12-ft3gm2mw
1294           + rm -rf rpkg-util
1295           +  /usr/bin/gzip   -dc   /tmp/rpkg/rpkg-util-12-ft3gm2mw/rpkg-util-
1296       f01b36d7-dirty.tar.gz
1297           + /usr/bin/tar -xof -
1298           + STATUS=0
1299           + '[' 0 -ne 0 ']'
1300           + cd rpkg-util
1301           + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
1302           + RPM_EC=0
1303           ++ jobs -p
1304           + exit 0
1305
1306       Generate spec file from a template:
1307
1308           $ rpkg spec
1309           Wrote: /tmp/rpkg/rpkg-util-13-53194610/rpkg-util.spec
1310
1311       Build srpm:
1312
1313           $ rpkg srpm
1314           git_dir_pack: packing path /home/clime/rpkg-util
1315           git_dir_pack:   Wrote:   /tmp/rpkg/rpkg-util-14-q3t0g4um/rpkg-util-
1316       f01b36d7-dirty.tar.gz
1317           Wrote: /tmp/rpkg/rpkg-util-14-q3t0g4um/rpkg-util.spec
1318           Wrote:           /tmp/rpkg/rpkg-util-14-q3t0g4um/rpkg-util-3.proto‐
1319       type.git.229.f01b36d7.dirty.02idw5-1.fc31.src.rpm
1320
1321

SPEC TEMPLATES

1323       Apart from being useful as a means to handle unpacked as well as packed
1324       content, they also make it possible to generate certain parts  of  your
1325       spec  file  automatically from a Git repository where your spec file is
1326       located. You need to have "preprocess_spec" configuration option set to
1327       True in rpkg config to use this functionality.
1328
1329
1330   BASIC EXAMPLE
1331           Name:       {{{ git_dir_name }}}
1332           Version:    {{{ git_dir_version }}}
1333           Release:    1%{?dist}
1334           Summary:    This is a test package.
1335
1336           License:    GPLv2+
1337           URL:        https://someurl.org
1338           VCS:        {{{ git_dir_vcs }}}
1339
1340           Source:     {{{ git_dir_pack }}}
1341
1342           %description
1343           This is a test package.
1344
1345           %prep
1346           {{{ git_dir_setup_macro }}}
1347
1348           %changelog
1349           {{{ git_dir_changelog }}}
1350
1351       Having  a  spec  template  like this in your project (instead of just a
1352       plain spec file) allows you to build source and rpm packages  automati‐
1353       cally following git history of your project.
1354
1355
1356   MACRO REFERENCE
1357       Please, see dedicated rpkg-macros page.
1358
1359

USER-DEFINED MACROS

1361       You  can  define your own rpkg macros. They are basically just standard
1362       bash functions read from file specified by user_macros config variable.
1363       When  used,  standard  output of your custom macro will be captured and
1364       the {{{ <macro_name> }}} invocation in an input spec file will  be  re‐
1365       placed with it.
1366
1367       Example of a custom macro placed in repo-specific rpkg.macros file:
1368
1369           function my_git_commits_no {
1370               total_commits=$(git rev-list --all --count)
1371               echo -n "$total_commits"
1372           }
1373
1374       If you have got rpkg.macros file with this content in git top-level di‐
1375       rectory for your project, then also create rpkg.conf file in your  top-
1376       level dir with at least the following content:
1377
1378           [rpkg]
1379           user_macros = ${git_props:root}/rpkg.macros
1380
1381       This  will  enable reading of the custom user macros. In the spec file,
1382       you can then e.g. use this snippet:
1383
1384       Release: {{{ my_git_commits_no }}}
1385
1386       to enable generating release based on total number of commits.
1387
1388

SEE ALSO

1390       https://pagure.io/rpkg-util/
1391
1392
1393
1394                                  2022-02-03                           rpkg(1)
Impressum