KUP(1) | kernel.org | KUP(1) |
kup - kernel.org upload utility
kup [global options] command [-- command...]
This utility is used to upload files to kernel.org and other systems using the same upload system (kup-server). Each upload is required to have a PGP signature, and the server will generate multiple compressed formats if the content uploaded is intended to be compressed.
Additionally, if the user has content from a git(1) tree already on server, it is possible to reproduce the content server-side, thereby reducing bandwidth needs. The user still has to generate the content locally and sign it.
cat batchfile | ssh -a -x -k -T [user@]host
A series of commands can be specified on a single command line, separated by a double dash argument (--).
In all cases, PGP signatures are detached signature files corresponding to the uncompressed content. If a remote_path ends in .gz then gzip, bzip2 and xz compressed files are generated on the server; otherwise the content is stored uncompressed.
git archive has been found to be relatively stable, so this command is relatively robust to git version changes. The --prefix is passed to git archive verbatim.
The output of git diff-tree has been found to vary between git versions, so successful use of this command may require the same version of git locally as on the server in order to produce a valid signature.
Remote (server) pathnames all need to be absolute paths, starting with a slash (/). The sole exception is new_path for the mv and link commands, which if it is not absolute is taken to be relative to the old_path minus the final component. Similarly, if new_path ends in a slash then the final component of old_path will be appended.
For the put command, except when --tar or --diff is specified, if the remote_path ends in a slash then the final (filename) component of local_file will be appended to the final pathname.
Kup checks the presence of $HOME/.kuprc and can load the host and rsh parameters from the config file. The environment variables KUP_HOST and KUP_RSH will override the values set in this config file.
SAMPLE $HOME/.kuprc:
host = user@kup.kernel.org rsh = /usr/bin/ssh -a -x -k -T
Generate a tarball locally, sign it, compress it, and upload it into /pub/foolib on the server:
git archive --format=tar --prefix=foolib-1.0/ -o foolib-1.0.tar v1.0 gpg --detach-sign --armor foolib-1.0.tar bzip2 -9 foolib-1.0.tar kup put foolib-1.0.tar.bz2 foolib-1.0.tar.asc /pub/foolib/foolib-1.0.tar.bz2
Generate a tarball locally, sign it, then tell kup-server to generate an identical tarball on the server, verify the signature, and put the compressed results in /pub/foolib:
git archive --format=tar --prefix=foolib-1.0/ -o foolib-1.0.tar v1.0 gpg --detach-sign --armor foolib-1.0.tar kup put --tar --prefix=foolib-1.0/ /repos/foolib.git v1.0 foolib-1.0.tar.asc /pub/foolib/foolib-1.0.tar.gz
Written by H. Peter Anvin <hpa@zytor.com>.
Copyright © 2011 Intel Corporation
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, Inc.; either version 2 of the License, or (at your option) any later version; incorporated herein by reference. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
git(1), ssh(1), gzip(1), bzip2(1), xz(1).
2011 | kernel.org upload utility |