[[Soyuz/TechnicalDetails/UploadProcessor|Next Page: The Upload Processor]] = Soyuz Upload Processing = The very first step in upload processing is actually receiving packages from contributors. This is done with a [[http://twistedmatrix.com/|Twisted]] daemon called txpkgupload, which is both an FTP and SFTP server. It runs on pepo, the Ubuntu machine, and haetae, the PPA machine. == txpkgupload == * lp:txpkgupload To upload a package with FTP you have two ways: 1. For uploading to a PPA: `dput ppa:lpuserid/ppaname my_source.changes` 2. Create a dput config for flexibility. In your `~/.dput.cf` file, add: {{{ [dogfood] fqdn = dogfood.launchpad.net method = ftp incoming = ubuntu/ login = anonymous allow_unsigned_uploads = 0 }}} This allows you to type `dput dogfood my_source.changes` and it uploads to the `dogfood` target in the config. For SFTP uploading there is no shortcut and you always need to create a dput.cf. {{{ [ppa-sftp] fqdn = dogfood.launchpad.net:5022 method = sftp incoming = ~%(ppa-sftp)s/ubuntu login = julian-edwards }}} This has actually created a shortcut so you can type: `dput ppa-sftp:lpuserid/ppaname my_source.changes` txpkgupload is configured with a `txpkgupload.yaml` file, including the destination directory for uploaded files - let's call that $INCOMING for now. txpkgupload has a bit of magic in it and it will autocreate directories as the [S]FTP client does a CWD command. The destination directory has a very specific layout of sub-directories like this: {{{ $INCOMING/upload-[s]ftp-YYYYMMDD-HHMMSS-NNNNNN/distribution_name/ }}} or for PPA uploads: {{{ $INCOMING/upload-[s]ftp-YYYYMMDD-HHMMSS-NNNNNN/~[/ppa_name]/[/distroseriesname] }}} Everything after the directory under the `upload-[s]ftp-YYYYMMDD-HHMMSS-NNNNNN/` is controlled by the uploading user - it allows them to set whether it's a distribution upload or a PPA upload. This is controlled from the .dput.cf that you set. [[Soyuz/TechnicalDetails/UploadProcessor|Next Page: The Upload Processor]]