# Uploading via dput
There are two tools in Debian based distros which provide the functionality to put a package on a remote server in the correct location for it to built and inserted into a package repository; dput and dput-ng. The package `dput-ng` provides better results. In dput-ng there is are switches to allow one to unset profiles, use those switches so you don't upload to Debian inadvertently.
Please use source-only uploads (created by passing `-S -sa` to dpkg-buildpackage, e.g. by using `gbp` via `gbp buildpackage -S -sa`) if possible, and only upload binaries directly if absolutely necessary (e.g. for bootstrapping). The autobuild system of the Laniakea archive management system will usually build new packages pretty quickly.
To upload please create the following `~/.dput.cf` snippet:
```
[pureos-origin]
fqdn = upload.pureos.net
method = https
incoming = pureos
login = anonymous
allow_unsigned_uploads = 0
```
Then issue this command;
`dput pureos-origin stream_0.1.0-1pureos1.1_source.changes`
- Upload might take ~20 minutes to be processed after the upload is fully complete.
- See also [[ https://tracker.pureos.net/w/development/new_queue/ | NEW queue ]] and [[ https://tracker.pureos.net/w/development/pureos_archive_layout/ | archive layout ]]
- If you want to get notification about any new upload that gets submitted to the archive, consider subscribing to the [[ https://lists.puri.sm/listinfo/pureos-changes | pureos-changes ]] mailinglist.
- Uploads targeted at the current development release of PureOS (currently `byzantium`) will automatically be redirected to `landing`, just like uploads to the `*-updates` suite of a stable release will automatically go to `*-proposed-updates` first.
# Uploading via git tag
Packages can also be uploaded by tagging them appropriately in git. Have a look at https://source.puri.sm/snippets/138
The flow of a package once accepted by the archive is the same.
# Tracing the package after the upload
* If the package didn't have any version in the archive before it will be held in [[development/NEW Queue]]
* If the package gets accepted a mail is sent to the [pureos-changes mailing list](https://lists.puri.sm/listinfo/pureos-changes)
* In case of a source package a build for the binary packages will be scheduled and put to the end of the [build queue](https://master.pureos.net/jobs/queue/1).
* If the package built successfully it will [wait for migration](https://master.pureos.net/migrations/)
* The status of a package in a certain suite (including build logs can queried via `https://software.pureos.net/package/src/<suite>/<sourcepackage>`. Example: phosh's status in byzantium: https://software.pureos.net/package/src/byzantium/phosh
* Once the (suite dependent) migration period passes it will migrate to the target suite. The ultimate reference if a package is in a suite is the archive's package file at e.g. https://repo.pureos.net/pureos/dists/byzantium/main/binary-arm64/Packages.xz for arm64 packages and for [[ https://repo.pureos.net/pureos/dists/byzantium/main/binary-amd64/ | AMD64 ]] in byzantium.