-
Notifications
You must be signed in to change notification settings - Fork 659
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: Documentation for distributing with the Arch User Repository. (#…
…2146) Co-authored-by: Fabian-Lars <[email protected]>
- Loading branch information
1 parent
ace3803
commit 5a6604e
Showing
1 changed file
with
162 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
--- | ||
title: AUR | ||
sidebar: | ||
order: 1 | ||
--- | ||
|
||
# Publishing To The Arch User Repository | ||
|
||
## Setup | ||
|
||
First go to `https://aur.archlinux.org` and make an account. Be sure to add the proper ssh keys. Next, clone an empty git repository using this command. | ||
|
||
```sh | ||
git clone https://aur.archlinux.org/your-repo-name | ||
``` | ||
|
||
After completing the steps above, create a file with the name `PKGBUILD`. Once the file is created you can move onto the next step. | ||
|
||
### Writing a PKGBUILD file | ||
|
||
```ini title="PKGBUILD" | ||
pkgname=<pkgname> | ||
pkgver=1.0.0 | ||
pkgrel=1 | ||
pkgdesc="Description of your app" | ||
arch=('x86_64' 'aarch64') | ||
url="https://github.com/<user>/<project>" | ||
license=('mit') | ||
depends=('cairo' 'desktop-file-utils' 'gdk-pixbuf2' 'glib2' 'gtk3' 'hicolor-icon-theme' 'libsoup' 'pango' 'webkit2gtk') | ||
options=('!strip' '!emptydirs') | ||
install=${pkgname}.install | ||
source_x86_64=("https://github.com/<user>/<project>/releases/download/v$pkgver/appname_"$pkgver"_amd64.deb") | ||
source_aarch64=("https://github.com/<user>/<project>/releases/download/v$pkgver/appname_"$pkgver"_arm64.deb") | ||
``` | ||
|
||
- At the top of the file, define your package name and assign it the variable `pkgname`. | ||
- Set your `pkgver` variable. Typically it is best to use this variable in the source variable to increase maintainability. | ||
- The `pkgdesc` variable on your aur repo's page and tells vistors what your app does. | ||
- The `arch` variable controls what architectures can install your package. | ||
- The `url` variable, while not required, helps to make your package appear more professional. | ||
- The `install` variable defines a file that runs the installation commands. | ||
- The `depends` variable includes a list of items that are required to make your app run. For any Tauri app you must include all of the dependencies shown above. | ||
- The `source` variable is required and defines the location where your upstream package is. You can make a `source` architecture specific by adding the architecture to the end of the variable name. | ||
|
||
### Generating `SRCINFO` | ||
|
||
In order to push your repo to the aur you must generate an `srcinfo` file. This can be done with this command. | ||
|
||
```sh | ||
makepkg --printsrcinfo >> .SRCINFO | ||
``` | ||
|
||
### Testing | ||
|
||
Testing the app is extremely simple. All you have to do is run makepkg -f within the same directory as the pkgbuild file and see if it works | ||
|
||
### Publishing | ||
|
||
Finally, after the testing phase is over, you can publish the application to the arch user repository with these commands. | ||
|
||
```sh | ||
git add . | ||
|
||
git commit -m "Initial Commit" | ||
|
||
git push | ||
``` | ||
|
||
If all goes well, your repository should now appear on the aur website. | ||
|
||
## Examples | ||
|
||
### Extracting From A Debian Package | ||
|
||
```ini title="PKGBUILD" | ||
# Maintainer: | ||
# Contributor: | ||
pkgname=<pkgname> | ||
pkgver=1.0.0 | ||
pkgrel=1 | ||
pkgdesc="Description of your app" | ||
arch=('x86_64' 'aarch64') | ||
url="https://github.com/<user>/<project>" | ||
license=('mit') | ||
depends=('cairo' 'desktop-file-utils' 'gdk-pixbuf2' 'glib2' 'gtk3' 'hicolor-icon-theme' 'libsoup' 'pango' 'webkit2gtk') | ||
options=('!strip' '!emptydirs') | ||
install=${pkgname}.install | ||
source_x86_64=("https://github.com/<user>/<project>/releases/download/v$pkgver/appname_"$pkgver"_amd64.deb") | ||
source_aarch64=("https://github.com/<user>/<project>/releases/download/v$pkgver/appname_"$pkgver"_arm64.deb") | ||
sha256sums_x86_64=('ca85f11732765bed78f93f55397b4b4cbb76685088553dad612c5062e3ec651f') | ||
sha256sums_aarch64=('ed2dc3169d34d91188fb55d39867713856dd02a2360ffe0661cb2e19bd701c3c') | ||
package() { | ||
|
||
# Extract package data | ||
tar -xz -f data.tar.gz -C "${pkgdir}" | ||
|
||
} | ||
``` | ||
|
||
```ini title="my-tauri-app.install" | ||
post_install() { | ||
gtk-update-icon-cache -q -t -f usr/share/icons/hicolor | ||
update-desktop-database -q | ||
} | ||
|
||
post_upgrade() { | ||
post_install | ||
} | ||
|
||
post_remove() { | ||
gtk-update-icon-cache -q -t -f usr/share/icons/hicolor | ||
update-desktop-database -q | ||
} | ||
|
||
``` | ||
|
||
### Building from source | ||
|
||
```ini title="PKGBUILD" | ||
# Maintainer: | ||
pkgname=<pkgname>-git | ||
pkgver=1.1.0 | ||
pkgrel=1 | ||
pkgdesc="Description of your app" | ||
arch=('any') | ||
url="https://github.com/<user>/<project>" | ||
license=('mit') | ||
depends=('cairo' 'desktop-file-utils' 'gdk-pixbuf2' 'glib2' 'gtk3' 'hicolor-icon-theme' 'libsoup' 'pango' 'webkit2gtk') | ||
makedepends=('git' 'file' 'openssl' 'appmenu-gtk-module' 'libappindicator-gtk3' 'librsvg' 'base-devel' 'curl' 'wget' 'rustup' 'npm' 'nodejs' 'dpkg') | ||
provides=('<pkgname>') | ||
conflicts=('<binname>' '<pkgname>') | ||
options=('!strip' '!emptydirs') | ||
source=('git+https://github.com/<user>/<project>') | ||
sha256sums=('SKIP') | ||
prepare() { | ||
cd <project> | ||
npm install | ||
npm run tauri build | ||
} | ||
package() { | ||
cd "$srcdir"/<project>/src-tauri/target/*unknown-linux*/release/bundle/deb | ||
dpkg-deb -x *.deb here | ||
cd here | ||
|
||
install -Dm755 usr/bin/myapp "$pkgdir"/usr/bin/myapp | ||
|
||
# Install desktop file | ||
install -Dm644 usr/share/applications/myapp.desktop "$pkgdir"/usr/share/applications/myapp.desktop | ||
|
||
# Install icons | ||
install -Dm644 usr/share/icons/hicolor/128x128/apps/myapp.png "$pkgdir"/usr/share/icons/hicolor/128x128/apps/myapp.png | ||
install -Dm644 usr/share/icons/hicolor/256x256@2/apps/myapp.png "$pkgdir"/usr/share/icons/hicolor/256x256@2/apps/myapp.png | ||
install -Dm644 usr/share/icons/hicolor/32x32/apps/myapp.png "$pkgdir"/usr/share/icons/hicolor/32x32/apps/myapp.png | ||
# Extract package data | ||
} | ||
``` | ||
|
||
[`async_runtime::spawn`]: https://docs.rs/tauri/2.0.0-beta/tauri/async_runtime/fn.spawn.html | ||
[`serde::serialize`]: https://docs.serde.rs/serde/trait.Serialize.html | ||
[`serde::deserialize`]: https://docs.serde.rs/serde/trait.Deserialize.html | ||
[`thiserror`]: https://github.com/dtolnay/thiserror | ||
[`result`]: https://doc.rust-lang.org/std/result/index.html |