diff --git a/src/content/docs/distribute/aur.mdx b/src/content/docs/distribute/aur.mdx new file mode 100644 index 0000000000..5f733865c1 --- /dev/null +++ b/src/content/docs/distribute/aur.mdx @@ -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= +pkgver=1.0.0 +pkgrel=1 +pkgdesc="Description of your app" +arch=('x86_64' 'aarch64') +url="https://github.com//" +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///releases/download/v$pkgver/appname_"$pkgver"_amd64.deb") +source_aarch64=("https://github.com///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= +pkgver=1.0.0 +pkgrel=1 +pkgdesc="Description of your app" +arch=('x86_64' 'aarch64') +url="https://github.com//" +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///releases/download/v$pkgver/appname_"$pkgver"_amd64.deb") +source_aarch64=("https://github.com///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=-git +pkgver=1.1.0 +pkgrel=1 +pkgdesc="Description of your app" +arch=('any') +url="https://github.com//" +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=('') +conflicts=('' '') +options=('!strip' '!emptydirs') +source=('git+https://github.com//') +sha256sums=('SKIP') +prepare() { + cd + npm install + npm run tauri build +} +package() { + cd "$srcdir"//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