<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Developer Manual</title>
		<link>https://manual.archlinux.page/</link>
		<description>Recent content on Developer Manual</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
			<copyright>Licensed under [CC-BY-SA-4.0](https://gitlab.archlinux.org/archlinux/developer-manual/-/blob/main/LICENSE)</copyright>
		
		
			<atom:link href="https://manual.archlinux.page/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title></title>
				<link>https://manual.archlinux.page/staff/staff-services/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/staff/staff-services/</guid>
				<description>&lt;h1 id=&#34;staff-services&#34;&gt;Staff Services&lt;a class=&#34;anchor&#34; href=&#34;#staff-services&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Arch Linux provides a number of services for Arch Linux Staff which they can freely use but fair use is applicable.&lt;/p&gt;&#xA;&lt;h2 id=&#34;accountsarchlinuxorg&#34;&gt;accounts.archlinux.org&lt;a class=&#34;anchor&#34; href=&#34;#accountsarchlinuxorg&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This server hosts Keycloak, a single sign on server Arch Linux uses to easily onboard new users to new groups and provide a seamless login experience through all our services once they all use SSO.&#xA;Currently Gitlab, Matrix and HedgeDoc use SSO and staff only need a Keycloak account to be able to use these services.&lt;/p&gt;</description>
			</item>
			<item>
				<title>32-bit</title>
				<link>https://manual.archlinux.page/package-guidelines/32-bit/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/32-bit/</guid>
				<description>&lt;h1 id=&#34;32-bit-package-guidelines&#34;&gt;32-bit package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#32-bit-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Legacy &lt;a href=&#34;https://en.wikipedia.org/wiki/32-bit_computing&#34;&gt;32-bit&lt;/a&gt; software can be built and installed on machines of another native architecture, such as &lt;a href=&#34;https://en.wikipedia.org/wiki/X86-64&#34;&gt;x86_64&lt;/a&gt;.&#xA;This article explains the production and conventions of such packages.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Prefix &lt;a href=&#34;https://aur.archlinux.org/packages/?O=0&amp;amp;K=lib32-&#34;&gt;32-bit versions&lt;/a&gt; of native packages with &lt;a href=&#34;#lib32&#34;&gt;lib32-&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD#pkgdesc&#34;&gt;Package decriptions&lt;/a&gt; should distinguish these from native counterparts, i.e. &lt;code&gt;pkgdesc+=&amp;quot; (32-bit)&amp;quot;&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;variables-and-parameters&#34;&gt;Variables and parameters&lt;a class=&#34;anchor&#34; href=&#34;#variables-and-parameters&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;lib32&#34;&gt;lib32&lt;a class=&#34;anchor&#34; href=&#34;#lib32&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Specify these &lt;a href=&#34;https://wiki.archlinux.org/title/bash&#34;&gt;bash&lt;/a&gt; variables in a &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt; to tell the compiler to output 32-bit code:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export CFLAGS&lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; -m32&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export CXXFLAGS&lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; -m32&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export LDFLAGS&lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; -m32&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export PKG_CONFIG_PATH&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/usr/lib32/pkgconfig&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;file-placement&#34;&gt;File placement&lt;a class=&#34;anchor&#34; href=&#34;#file-placement&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;&#xA;&lt;p&gt;Ensure lib32 package files do not conflict with native package files and include all necessary files, such as architecture-specific includes.&#xA;For example, if a package builds using &lt;a href=&#34;https://en.wikipedia.org/wiki/Autoconf&#34;&gt;GNU Autoconf&lt;/a&gt;, specify the following to &lt;code&gt;configure&lt;/code&gt;:&lt;/p&gt;</description>
			</item>
			<item>
				<title>CLR</title>
				<link>https://manual.archlinux.page/package-guidelines/clr/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/clr/</guid>
				<description>&lt;h1 id=&#34;clr-package-guidelines&#34;&gt;CLR package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#clr-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document defines the standard for packaging Common Language Runtime (.NET) projects under Arch Linux.&#xA;Currently only &lt;a href=&#34;https://wiki.archlinux.org/title/Mono&#34;&gt;Mono&lt;/a&gt; is capable of providing a usable, efficient CLR runtime for multiple systems and this standard will reflect its use.&#xA;Be aware that a lot of CLR programs were developed with Microsoft .NET in mind and, as such, may or may not run under Mono because of .NET-exclusive factors such as P/Invoke calls and Microsoft digital rights management (DRM) APIs and are thus will not yield a usable package for Arch Linux.&#xA;However, if combined with &lt;a href=&#34;https://wiki.archlinux.org/title/Wine&#34;&gt;Wine&lt;/a&gt; as of version 1.5.6 (?), your package may have a chance to run under it.&#xA;Please see the &lt;a href=&#34;https://manual.archlinux.page/package-guidelines/wine/&#34;&gt;Wine PKGBUILD Guidelines&lt;/a&gt; for more information if such is the case.&lt;/p&gt;</description>
			</item>
			<item>
				<title>CMake</title>
				<link>https://manual.archlinux.page/package-guidelines/cmake/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/cmake/</guid>
				<description>&lt;h1 id=&#34;cmake-package-guidelines&#34;&gt;CMake package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#cmake-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document covers standards and guidelines on writing &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for software that uses &lt;a href=&#34;https://archlinux.org/packages/?name=cmake&#34;&gt;cmake&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;From the &lt;a href=&#34;https://cmake.org&#34;&gt;CMake web page&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&lt;p&gt;CMake is an open-source, cross-platform family of tools designed to build, test and package software.&#xA;CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&lt;h2 id=&#34;typical-usage&#34;&gt;Typical usage&lt;a class=&#34;anchor&#34; href=&#34;#typical-usage&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The typical usage consists of running the &lt;code&gt;cmake&lt;/code&gt; command and after that execute the building command.&#xA;The &lt;code&gt;cmake&lt;/code&gt; command usually sets some parameters, checks for the needed dependencies and creates the build files, letting the software ready to be built by other tools like &lt;code&gt;make&lt;/code&gt; and &lt;code&gt;ninja&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>DKMS</title>
				<link>https://manual.archlinux.page/package-guidelines/dkms/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/dkms/</guid>
				<description>&lt;h1 id=&#34;dkms-package-guidelines&#34;&gt;DKMS package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#dkms-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Here are some guidelines to follow when creating a &lt;a href=&#34;https://wiki.archlinux.org/title/DKMS&#34;&gt;DKMS&lt;/a&gt; package.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-name&#34;&gt;Package name&lt;a class=&#34;anchor&#34; href=&#34;#package-name&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;DKMS packages are named by appending &lt;code&gt;-dkms&lt;/code&gt; to the original package name.&lt;/p&gt;&#xA;&lt;p&gt;The variable &lt;code&gt;$_pkgname&lt;/code&gt; is often used below &lt;code&gt;$pkgname&lt;/code&gt; to describe the package name minus the &lt;code&gt;-dkms&lt;/code&gt; suffix (e.g. &lt;code&gt;_pkgname=&amp;quot;${pkgname%-*}&amp;quot;&lt;/code&gt;)&lt;/p&gt;&#xA;&lt;h2 id=&#34;dependencies&#34;&gt;Dependencies&lt;a class=&#34;anchor&#34; href=&#34;#dependencies&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Add &lt;a href=&#34;https://archlinux.org/packages/?name=dkms&#34;&gt;dkms&lt;/a&gt; to &lt;code&gt;depends&lt;/code&gt; array.&#xA;This is important because this will provide tools and hooks that will rebuild the kernel driver provided by the &lt;code&gt;-dkms&lt;/code&gt; package whenever the kernel is updated.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Eclipse plugin</title>
				<link>https://manual.archlinux.page/package-guidelines/eclipse-plugins/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/eclipse-plugins/</guid>
				<description>&lt;h1 id=&#34;eclipse-plugin-package-guidelines&#34;&gt;Eclipse plugin package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#eclipse-plugin-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;There are many ways to install working &lt;a href=&#34;https://wiki.archlinux.org/title/Eclipse&#34;&gt;Eclipse&lt;/a&gt; plugins, especially since the introduction of the &lt;em&gt;dropins&lt;/em&gt; directory in Eclipse 3.4, but some of them are messy, and having a standardized and consistent way of packaging is very important to lead to a clean system structure.&#xA;It is not easy, however, to achieve this without the packager knowing every detail about how Eclipse plugins work.&#xA;This page aims to define a standard and simple structure for Eclipse plugin &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s, so that the filesystem structure can remain consistent between all plugins without having the packager to start again for every new package.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Font</title>
				<link>https://manual.archlinux.page/package-guidelines/font/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/font/</guid>
				<description>&lt;h1 id=&#34;font-package-guidelines&#34;&gt;Font package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#font-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document covers proposed standards and guidelines on writing &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for &lt;a href=&#34;https://wiki.archlinux.org/title/Fonts&#34;&gt;Fonts&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;general-guidelines&#34;&gt;General guidelines&lt;a class=&#34;anchor&#34; href=&#34;#general-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/TrueType&#34;&gt;TTF&lt;/a&gt; fonts: &lt;code&gt;ttf-fontname&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/OpenType&#34;&gt;OTF&lt;/a&gt; fonts: &lt;code&gt;otf-fontname&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If the font is a &lt;a href=&#34;https://en.wikipedia.org/wiki/Variable_font&#34;&gt;variable font&lt;/a&gt;, add the suffix &lt;code&gt;-variable&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint note&#39;&gt;&#xA;&lt;p class=&#34;book-hint-heading note&#34;&gt;ℹ️ Note&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The package name should be entirely lowercase.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://gitlab.archlinux.org/archlinux/packaging/packages/noto-fonts/-/issues/2#note_185834&#34;&gt;Ultimately&lt;/a&gt; there is no hard rule for font package naming, i.e. these are only &lt;em&gt;guidelines&lt;/em&gt;.&#xA;In general, package naming follows upstream.&#xA;See also &lt;a href=&#34;https://bugs.archlinux.org/task/77425&#34;&gt;FS#77425&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;/blockquote&gt;&lt;h3 id=&#34;package-description&#34;&gt;Package description&lt;a class=&#34;anchor&#34; href=&#34;#package-description&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;The package description should at least contain the word &lt;em&gt;font&lt;/em&gt; and what type of font it is: sans-serif, serif or monospace.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Free Pascal</title>
				<link>https://manual.archlinux.page/package-guidelines/free-pascal/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/free-pascal/</guid>
				<description>&lt;h1 id=&#34;free-pascal-package-guidelines&#34;&gt;Free Pascal package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#free-pascal-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This page explains on how to write &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for software built with the &lt;a href=&#34;https://www.freepascal.org/&#34;&gt;Free Pascal Compiler (FPC)&lt;/a&gt;.&#xA;Compiling for x86_64 Arch Linux requires the &lt;a href=&#34;https://archlinux.org/packages/?name=fpc&#34;&gt;fpc&lt;/a&gt; package.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The project name alone is usually sufficient.&#xA;However, in the case of cross-compiling, the package should be prefixed with &lt;code&gt;fpc32-&lt;/code&gt; when targeting i686 Linux from multilib and named in the format of &lt;code&gt;fpc-cpu-system-pkgname&lt;/code&gt; when targeting non-Arch Linux systems.&lt;/p&gt;&#xA;&lt;h2 id=&#34;helpful-snippets&#34;&gt;Helpful snippets&lt;a class=&#34;anchor&#34; href=&#34;#helpful-snippets&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Determine FPC&amp;rsquo;s version and the CPU and OS of the units to output:&lt;/p&gt;</description>
			</item>
			<item>
				<title>GNOME</title>
				<link>https://manual.archlinux.page/package-guidelines/gnome/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/gnome/</guid>
				<description>&lt;h1 id=&#34;gnome-package-guidelines&#34;&gt;GNOME package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#gnome-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://wiki.archlinux.org/title/GNOME&#34;&gt;GNOME&lt;/a&gt; packages on Arch Linux follow a certain schema.&lt;/p&gt;&#xA;&lt;h2 id=&#34;source-url&#34;&gt;Source URL&lt;a class=&#34;anchor&#34; href=&#34;#source-url&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;GNOME packages normally follow two source URL scheme: a released tarball stored in GNOME&amp;rsquo;s FTP server and a specific commit in the software&amp;rsquo;s Git repository&lt;/p&gt;&#xA;&lt;h3 id=&#34;using-released-tarball&#34;&gt;Using released tarball&lt;a class=&#34;anchor&#34; href=&#34;#using-released-tarball&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;When downloading a released tarball, you can get it from &lt;a href=&#34;https://download.gnome.org&#34;&gt;https://download.gnome.org&lt;/a&gt; using the following source array:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;source&lt;span style=&#34;color:#f92672&#34;&gt;=(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://download.gnome.org/sources/&lt;/span&gt;$pkgname&lt;span style=&#34;color:#e6db74&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;pkgver%.*&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/&lt;/span&gt;$pkgname&lt;span style=&#34;color:#e6db74&#34;&gt;-&lt;/span&gt;$pkgver&lt;span style=&#34;color:#e6db74&#34;&gt;.tar.xz&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;where &lt;code&gt;${pkgver%.*}&lt;/code&gt; returns the &lt;em&gt;major&lt;/em&gt;.&lt;em&gt;minor&lt;/em&gt; package version, by removing the suffix of &lt;code&gt;pkgver&lt;/code&gt; (which is the &lt;em&gt;micro&lt;/em&gt; package version).&#xA;E.g., if &lt;em&gt;pkgver=3.28.0&lt;/em&gt; then &lt;code&gt;${pkgver%.*}&lt;/code&gt; would return &lt;em&gt;3.28&lt;/em&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Go</title>
				<link>https://manual.archlinux.page/package-guidelines/go/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/go/</guid>
				<description>&lt;h1 id=&#34;go-package-guidelines&#34;&gt;Go package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#go-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document covers standards and guidelines on writing &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for &lt;a href=&#34;https://wiki.archlinux.org/title/Go&#34;&gt;Go&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;general-guidelines&#34;&gt;General guidelines&lt;a class=&#34;anchor&#34; href=&#34;#general-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Use &lt;code&gt;go-modulename&lt;/code&gt; if the package provides a program that is strongly coupled to the Go ecosystem.&#xA;For other applications, use only the program name.&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint note&#39;&gt;&#xA;&lt;p class=&#34;book-hint-heading note&#34;&gt;ℹ️ Note&lt;/p&gt;&#xA;&lt;p&gt;The package name should be entirely lowercase.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&#34;building&#34;&gt;Building&lt;a class=&#34;anchor&#34; href=&#34;#building&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;dependencies&#34;&gt;Dependencies&lt;a class=&#34;anchor&#34; href=&#34;#dependencies&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Go 1.11 introduced the initial support for &lt;a href=&#34;https://github.com/golang/go/wiki/Modules&#34;&gt;go modules&lt;/a&gt;.&#xA;This allows Go upstream code to declare dependencies and pin them to the given project version.&#xA;Currently our packaging efforts utilize this to vendor dependencies.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Haskell</title>
				<link>https://manual.archlinux.page/package-guidelines/haskell/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/haskell/</guid>
				<description>&lt;h1 id=&#34;haskell-package-guidelines&#34;&gt;Haskell package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#haskell-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document aims to cover standards and guidelines for producing good &lt;a href=&#34;https://wiki.archlinux.org/title/Haskell&#34;&gt;Haskell&lt;/a&gt; &lt;a href=&#34;https://wiki.archlinux.org/title/Creating_packages&#34;&gt;packages&lt;/a&gt; on Arch.&lt;/p&gt;&#xA;&lt;p&gt;Until this document is rewritten, contact &lt;a href=&#34;https://wiki.archlinux.org/title/User:Felixonmars&#34;&gt;User:Felixonmars&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;For Haskell libraries, use &lt;code&gt;haskell-libraryname&lt;/code&gt; usually the same name as on &lt;a href=&#34;https://hackage.haskell.org/&#34;&gt;hackage&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint note&#39;&gt;&#xA;&lt;p class=&#34;book-hint-heading note&#34;&gt;ℹ️ Note&lt;/p&gt;&#xA;&lt;p&gt;The package name should be entirely lowercase.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;a class=&#34;anchor&#34; href=&#34;#architecture&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD#arch&#34;&gt;PKGBUILD#arch&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Every Haskell library or program is architecture-dependent.&lt;/p&gt;&#xA;&lt;h2 id=&#34;source&#34;&gt;Source&lt;a class=&#34;anchor&#34; href=&#34;#source&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The preferred source of a Haskell program or library is from &lt;a href=&#34;https://hackage.haskell.org&#34;&gt;hackage&lt;/a&gt;.&#xA;&lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD#source&#34;&gt;PKGBUILD#source&lt;/a&gt; &lt;code&gt;source=()&lt;/code&gt; array should use the following URL template:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Java</title>
				<link>https://manual.archlinux.page/package-guidelines/java/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/java/</guid>
				<description>&lt;h1 id=&#34;java-package-guidelines&#34;&gt;Java package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#java-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document defines a proposed standard for packaging &lt;a href=&#34;https://wiki.archlinux.org/title/Java&#34;&gt;Java&lt;/a&gt; programs under Arch Linux.&#xA;Java programs are notoriously difficult to package cleanly without overlapping dependencies.&#xA;This document describes a way to remedy this situation.&#xA;These guidelines are flexible in order to cover the many different scenarios that arise when dealing with Java applications.&lt;/p&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;a class=&#34;anchor&#34; href=&#34;#introduction&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Arch Linux packagers cannot seem to agree on how to handle Java packages.&#xA;Various methods are used in &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s across the official and unofficial repositories and in the &lt;a href=&#34;https://wiki.archlinux.org/title/AUR&#34;&gt;AUR&lt;/a&gt;.&#xA;These solutions include placing the whole mess in &lt;code&gt;/opt&lt;/code&gt; with shell scripts in &lt;code&gt;/usr/bin&lt;/code&gt; or profiles placed in &lt;code&gt;/etc/profile&lt;/code&gt;.&#xA;Others are placed in directories in &lt;code&gt;/usr/share&lt;/code&gt; with scripts placed in &lt;code&gt;/usr/bin&lt;/code&gt;.&#xA;Many add unnecessary files to the system &lt;code&gt;CLASSPATH&lt;/code&gt; and &lt;code&gt;PATH&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>KDE</title>
				<link>https://manual.archlinux.page/package-guidelines/kde/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/kde/</guid>
				<description>&lt;h1 id=&#34;kde-package-guidelines&#34;&gt;KDE package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#kde-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;blockquote class=&#39;book-hint warning&#39;&gt;&#xA;&lt;p class=&#34;book-hint-heading warning&#34;&gt;⚠️ Warning&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;This article or section is out of date.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Reason:&lt;/strong&gt; &lt;a href=&#34;https://gitlab.archlinux.org/archlinux/developer-manual/-/work_items/8&#34;&gt;References kde4, looks really outdated in general&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The &lt;a href=&#34;https://wiki.archlinux.org/title/KDE&#34;&gt;KDE&lt;/a&gt; packages on Arch Linux follow a certain schema.&lt;/p&gt;&#xA;&lt;h2 id=&#34;build-directory&#34;&gt;Build directory&lt;a class=&#34;anchor&#34; href=&#34;#build-directory&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;A good way of building &lt;a href=&#34;https://en.wikipedia.org/wiki/CMake&#34;&gt;CMake&lt;/a&gt; packages is to make a build directory outside the root of the project and run cmake from that directory.&#xA;The &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt; should look this way:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;prepare&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  mkdir -p build&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;build&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  cd build&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  cmake ../&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;pkgname&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;-&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;pkgver&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;install-prefix&#34;&gt;Install prefix&lt;a class=&#34;anchor&#34; href=&#34;#install-prefix&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Every packages must set the &lt;code&gt;CMAKE_INSTALL_PREFIX&lt;/code&gt; variable.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Kernel module</title>
				<link>https://manual.archlinux.page/package-guidelines/kernel-module/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/kernel-module/</guid>
				<description>&lt;h1 id=&#34;kernel-module-package-guidelines&#34;&gt;Kernel module package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#kernel-module-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;package-separation&#34;&gt;Package separation&lt;a class=&#34;anchor&#34; href=&#34;#package-separation&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Packages that contain &lt;a href=&#34;https://wiki.archlinux.org/title/kernel_modules&#34;&gt;kernel modules&lt;/a&gt; should be treated specially, to support users who wish to have more than one kernel installed on a system.&lt;/p&gt;&#xA;&lt;p&gt;When packaging software containing a kernel module and other non-module supporting files/utilities, it is important to separate the kernel modules from the supporting files.&lt;/p&gt;&#xA;&lt;h3 id=&#34;guidelines&#34;&gt;Guidelines&lt;a class=&#34;anchor&#34; href=&#34;#guidelines&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;When packaging such software (using the &lt;a href=&#34;https://wiki.archlinux.org/title/NVIDIA&#34;&gt;NVIDIA&lt;/a&gt; drivers as an example) the convention is:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;create an &lt;em&gt;nvidia&lt;/em&gt; package containing just the kernel modules built for the vanilla kernel&lt;/li&gt;&#xA;&lt;li&gt;create an &lt;em&gt;nvidia-utils&lt;/em&gt; package containing the supporting files&lt;/li&gt;&#xA;&lt;li&gt;make sure &lt;em&gt;nvidia&lt;/em&gt; depends on &lt;em&gt;nvidia-utils&lt;/em&gt; (unless there is a good reason not to do so)&lt;/li&gt;&#xA;&lt;li&gt;for another kernel like &lt;em&gt;linux-mm&lt;/em&gt;, create &lt;em&gt;nvidia-mm&lt;/em&gt; containing the kernel modules built against that kernel which &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD#provides&#34;&gt;provides&lt;/a&gt; &lt;em&gt;nvidia&lt;/em&gt; and also &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD#depends&#34;&gt;depends&lt;/a&gt; on &lt;em&gt;nvidia-utils&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;make sure &lt;em&gt;nvidia&lt;/em&gt; depends on the kernel, for example:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;depends&lt;span style=&#34;color:#f92672&#34;&gt;=(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;linux&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;nvidia-utils&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;rationale&#34;&gt;Rationale&lt;a class=&#34;anchor&#34; href=&#34;#rationale&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;While kernel modules built for different kernels always live in different directories and can peacefully coexist, the supporting files are expected to be found in one location.&#xA;If one package contained module and supporting files, you would be unable to install the modules for more than one kernel because the supporting files in the packages would cause pacman file conflicts.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Lisp</title>
				<link>https://manual.archlinux.page/package-guidelines/lisp/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/lisp/</guid>
				<description>&lt;h1 id=&#34;lisp-package-guidelines&#34;&gt;Lisp package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#lisp-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;At the moment, there are relatively few &lt;a href=&#34;https://en.wikipedia.org/wiki/Lisp_%28programming_language%29&#34;&gt;Lisp&lt;/a&gt; packages available in the Arch repositories.&#xA;This means that at some point or another, more will likely appear.&#xA;It is useful, therefore, to figure out now, while there are few packages, how they should be packaged.&lt;/p&gt;&#xA;&lt;h2 id=&#34;directory-structure-and-naming&#34;&gt;Directory structure and naming&lt;a class=&#34;anchor&#34; href=&#34;#directory-structure-and-naming&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;There is at least one package in the base repository (&lt;a href=&#34;https://archlinux.org/packages/?name=libgpg-error&#34;&gt;libgpg-error&lt;/a&gt;) that includes lisp files, which are placed in &lt;code&gt;/usr/share/common-lisp/source/gpg-error&lt;/code&gt;.&#xA;In keeping with this, other lisp packages should also place their files in &lt;code&gt;/usr/share/common-lisp/source/pkgname&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Meson</title>
				<link>https://manual.archlinux.page/package-guidelines/meson/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/meson/</guid>
				<description>&lt;h1 id=&#34;meson-package-guidelines&#34;&gt;Meson package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#meson-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;From &lt;a href=&#34;https://mesonbuild.com/&#34;&gt;Meson&amp;rsquo;s official website&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&lt;p&gt;Meson is an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&lt;p&gt;Written in Python, Meson features multi-platform support, support for several programming languages, cross compilation, and more.&lt;/p&gt;&#xA;&lt;p&gt;Meson does not build software directly, but rather sets up a back-end build system.&#xA;While it is commonly used with &lt;a href=&#34;https://archlinux.org/packages/?name=ninja&#34;&gt;ninja&lt;/a&gt;, other build systems can be used.&#xA;It is commonly used to replace &lt;a href=&#34;https://wiki.archlinux.org/title/GNU_Build_System&#34;&gt;GNU Build System&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>MinGW</title>
				<link>https://manual.archlinux.page/package-guidelines/mingw/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/mingw/</guid>
				<description>&lt;h1 id=&#34;mingw-package-guidelines&#34;&gt;MinGW package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#mingw-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This page explains how to write &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for software running on Windows.&lt;/p&gt;&#xA;&lt;p&gt;In order to build software for Windows on Linux one needs:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Windows header files and import libraries for the WinAPI and the C standard library.&#xA;There are two options to get those:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mingw-w64.org&#34;&gt;mingw-w64&lt;/a&gt;: provides 32 and 64-bit toolchains with secure crt, Vista+ API, DDK (ReactOS), and DirectX (WINE) support.&#xA;For a full list of supported features and differences with the old MinGW.org, see &lt;a href=&#34;https://sourceforge.net/p/mingw-w64/wiki2/Feature%20list/&#34;&gt;here&lt;/a&gt;.&#xA;Available from the official repositories by installing &lt;a href=&#34;https://archlinux.org/packages/?name=mingw-w64-headers&#34;&gt;mingw-w64-headers&lt;/a&gt; and &lt;a href=&#34;https://archlinux.org/packages/?name=mingw-w64-crt&#34;&gt;mingw-w64-crt&lt;/a&gt;.&#xA;AUR packages providing further libraries rely on those packages.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://osdn.net/projects/mingw/&#34;&gt;MinGW&lt;/a&gt;: provides 32-bit toolchains with limited DirectX support.&#xA;It also suffers from long-standing breakage in the implementation of thread-local storage and the floating point library support.&#xA;It has been removed from the official repositories and the AUR.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;A compiler and its runtime library.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;For C/C++ one can use GCC and Clang.&#xA;To use GCC one needs to install &lt;a href=&#34;https://archlinux.org/packages/?name=mingw-w64-gcc&#34;&gt;mingw-w64-gcc&lt;/a&gt; as the regular &lt;a href=&#34;https://archlinux.org/packages/?name=gcc&#34;&gt;gcc&lt;/a&gt; package cannot be used.&#xA;To use Clang one can simply use &lt;a href=&#34;https://archlinux.org/packages/?name=clang&#34;&gt;clang&lt;/a&gt; specifying an &lt;code&gt;*-w64-mingw32&lt;/code&gt; platform triple as target.&#xA;Since the regular &lt;a href=&#34;https://archlinux.org/packages/?name=clang&#34;&gt;clang&lt;/a&gt; package does not contain the compiler runtime libraries for Windows targets one needs to compile them separately or use the runtime provided by &lt;a href=&#34;https://archlinux.org/packages/?name=mingw-w64-gcc&#34;&gt;mingw-w64-gcc&lt;/a&gt;.&#xA;AUR packages providing further libraries rely on &lt;a href=&#34;https://archlinux.org/packages/?name=mingw-w64-gcc&#34;&gt;mingw-w64-gcc&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;For Rust one can use &lt;a href=&#34;https://aur.archlinux.org/packages/mingw-w64-rust/&#34;&gt;mingw-w64-rust&lt;/a&gt;.&#xA;The regular &lt;a href=&#34;https://archlinux.org/packages/?name=rust&#34;&gt;rust&lt;/a&gt; package is not built to be able to cross-compile for Windows.&#xA;If Rust was installed using the &lt;a href=&#34;https://archlinux.org/packages/?name=rustup&#34;&gt;rustup&lt;/a&gt; package, you should instead add the Windows target: &lt;code&gt;rustup target add x86_64-pc-windows-gnu&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;For Go one can just use the regular &lt;a href=&#34;https://archlinux.org/packages/?name=go&#34;&gt;go&lt;/a&gt; package.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;A C/C++ standard library.&#xA;One can use libstdc++ provided by &lt;a href=&#34;https://archlinux.org/packages/?name=mingw-w64-gcc&#34;&gt;mingw-w64-gcc&lt;/a&gt; or libc++ from the LLVM project.&#xA;AUR packages providing further libraries rely on libstdc++.&lt;/li&gt;&#xA;&lt;li&gt;A linker and additional tooling.&#xA;One can use GNU binutils provided by &lt;a href=&#34;https://archlinux.org/packages/?name=mingw-w64-binutils&#34;&gt;mingw-w64-binutils&lt;/a&gt; or LLVM/lld provided by &lt;a href=&#34;https://archlinux.org/packages/?name=llvm&#34;&gt;llvm&lt;/a&gt; and &lt;a href=&#34;https://archlinux.org/packages/?name=lld&#34;&gt;lld&lt;/a&gt;.&#xA;There is also &lt;a href=&#34;https://aur.archlinux.org/packages/mingw-w64-tools/&#34;&gt;mingw-w64-tools&lt;/a&gt; providing a few additional Windows-specific tools.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;For ix86/x86_64 the typical choice is to use mingw-w64- with GCC/libstdc++ and binutils.&#xA;This is therefore what AUR packages following the package naming &lt;code&gt;mingw-w64-pkgname&lt;/code&gt; use.&#xA;The rest of this Wiki page focuses on those packages.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Node.js</title>
				<link>https://manual.archlinux.page/package-guidelines/nodejs/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/nodejs/</guid>
				<description>&lt;h1 id=&#34;nodejs-package-guidelines&#34;&gt;Node.js package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#nodejs-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document covers standards and guidelines on writing &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for &lt;a href=&#34;https://wiki.archlinux.org/title/Node.js&#34;&gt;Node.js&lt;/a&gt; packages.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;blockquote class=&#39;book-hint tip&#39;&gt;&#xA;&lt;p class=&#34;book-hint-heading tip&#34;&gt;💡 Tip&lt;/p&gt;&#xA;&lt;p&gt;A custom &lt;code&gt;_pkgname&lt;/code&gt; variable can be used instead of &lt;code&gt;pkgname&lt;/code&gt;.&#xA;This variable can generically be defined as follows: &lt;code&gt;_pkgname=${pkgname#nodejs-}&lt;/code&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Package names for Node.js libraries should start with a &lt;code&gt;nodejs-&lt;/code&gt; prefix.&#xA;For standalone applications, just use the program name.&lt;/p&gt;&#xA;&lt;h2 id=&#34;source&#34;&gt;Source&lt;a class=&#34;anchor&#34; href=&#34;#source&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/npm&#34;&gt;npm&lt;/a&gt; provides a stable naming scheme for download URLs.&#xA;&lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD#source&#34;&gt;PKGBUILD#source&lt;/a&gt; &lt;code&gt;source=()&lt;/code&gt; array can use the following URL template:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Non-free</title>
				<link>https://manual.archlinux.page/package-guidelines/non-free/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/non-free/</guid>
				<description>&lt;h1 id=&#34;non-free-application-package-guidelines&#34;&gt;Non-free application package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#non-free-application-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;For many applications (most of which are Windows ones) there are neither sources nor tarballs available.&#xA;Many of such applications can not be freely distributed because of license restrictions and/or lack of legal ways to obtain installer for no fee.&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint note&#39;&gt;&#xA;&lt;p class=&#34;book-hint-heading note&#34;&gt;ℹ️ Note&lt;/p&gt;&#xA;&lt;p&gt;All information here is package-agnostic, for information specific to the most typical non-free software see &lt;a href=&#34;https://manual.archlinux.page/package-guidelines/wine/&#34;&gt;Wine package guidelines&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&#34;rationale&#34;&gt;Rationale&lt;a class=&#34;anchor&#34; href=&#34;#rationale&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;There are multiple reasons for packaging even non-packageable software:&lt;/p&gt;</description>
			</item>
			<item>
				<title>OCaml</title>
				<link>https://manual.archlinux.page/package-guidelines/ocaml/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/ocaml/</guid>
				<description>&lt;h1 id=&#34;ocaml-package-guidelines&#34;&gt;OCaml package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#ocaml-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Writing &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for software written in &lt;a href=&#34;https://en.wikipedia.org/wiki/OCaml&#34;&gt;OCaml&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;For libraries, use &lt;code&gt;ocaml-modulename&lt;/code&gt;.&#xA;For applications, use the program name.&#xA;In either case, the name should be entirely lowercase.&lt;/p&gt;&#xA;&lt;h2 id=&#34;file-placement&#34;&gt;File placement&lt;a class=&#34;anchor&#34; href=&#34;#file-placement&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;libraries&#34;&gt;Libraries&lt;a class=&#34;anchor&#34; href=&#34;#libraries&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;OCaml libraries should be installed under &lt;code&gt;/usr/lib/ocaml&lt;/code&gt;.&#xA;Installation in &lt;code&gt;/usr/lib/ocaml/site-lib&lt;/code&gt; is deprecated.&lt;/p&gt;&#xA;&lt;p&gt;OCaml libraries should be installed using &lt;a href=&#34;https://archlinux.org/packages/?name=ocaml-findlib&#34;&gt;ocaml-findlib&lt;/a&gt;.&#xA;&lt;code&gt;ocaml-findlib&lt;/code&gt; includes library metadata in the package that makes it easy to manage libraries.&#xA;It is a de-facto standard and a lot of OCaml software now requires it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>PHP</title>
				<link>https://manual.archlinux.page/package-guidelines/php/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/php/</guid>
				<description>&lt;h1 id=&#34;php-package-guidelines&#34;&gt;PHP package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#php-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document covers the creation of &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for PHP libraries.&#xA;The target audience of this document is intended to be packagers of PHP libraries.&#xA;For PHP Web applications, see &lt;a href=&#34;https://manual.archlinux.page/package-guidelines/webapp/&#34;&gt;Web application package guidelines&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-names&#34;&gt;Package names&lt;a class=&#34;anchor&#34; href=&#34;#package-names&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;For modules the package name should begin with &lt;code&gt;php-&lt;/code&gt; and the rest of the name should be constructed from the library name by converting it to lowercase and separate words with hyphens.&#xA;For example the package name corresponding to &lt;code&gt;File iterator&lt;/code&gt; will be &lt;code&gt;php-file-iterator&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Python</title>
				<link>https://manual.archlinux.page/package-guidelines/python/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/python/</guid>
				<description>&lt;h1 id=&#34;python-package-guidelines&#34;&gt;Python package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#python-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document covers standards and guidelines on writing &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for &lt;a href=&#34;https://wiki.archlinux.org/title/Python&#34;&gt;Python&lt;/a&gt; software.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;For &lt;a href=&#34;https://wiki.archlinux.org/title/Python#Installation&#34;&gt;Python 3&lt;/a&gt; library modules, use &lt;code&gt;python-modulename&lt;/code&gt;.&#xA;Also use the prefix if the package provides a program that is strongly coupled to the Python ecosystem (e.g. pip or tox).&#xA;For other applications, use only the program name.&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint note&#39;&gt;&#xA;&lt;p class=&#34;book-hint-heading note&#34;&gt;ℹ️ Note&lt;/p&gt;&#xA;&lt;p&gt;The package name should be entirely lowercase.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;a class=&#34;anchor&#34; href=&#34;#architecture&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD#arch&#34;&gt;PKGBUILD#arch&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;A Python package that contains C extensions is architecture-dependent.&#xA;Otherwise it is most likely architecture-independent.&lt;/p&gt;</description>
			</item>
			<item>
				<title>R</title>
				<link>https://manual.archlinux.page/package-guidelines/r/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/r/</guid>
				<description>&lt;h1 id=&#34;r-package-guidelines&#34;&gt;R package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#r-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document covers standards and guidelines on writing &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for &lt;a href=&#34;https://wiki.archlinux.org/title/R&#34;&gt;R&lt;/a&gt; packages.&#xA;Most information can be obtained by looking at the package&amp;rsquo;s &lt;code&gt;DESCRIPTION&lt;/code&gt; file.&#xA;You can get most of this from inside R by running &lt;code&gt;tools::CRAN_package_db()&lt;/code&gt;.&#xA;You could also visit &lt;a href=&#34;https://cran.r-project.org/src/contrib/PACKAGES&#34;&gt;CRAN&lt;/a&gt;, &lt;a href=&#34;https://bioconductor.org/packages/release/bioc/src/contrib/PACKAGES&#34;&gt;Bioconductor link1&lt;/a&gt;, and &lt;a href=&#34;https://bioconductor.org/packages/release/data/annotation/src/contrib/PACKAGES&#34;&gt;Bioconductor link2&lt;/a&gt; for all the R packages&amp;rsquo; information.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Packages should be named &lt;code&gt;r-pkgname&lt;/code&gt;, where pkgname is taken from the &lt;code&gt;Package&lt;/code&gt; field from the &lt;code&gt;DESCRIPTION&lt;/code&gt; file.&#xA;The package name should be lowercase.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby</title>
				<link>https://manual.archlinux.page/package-guidelines/ruby/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/ruby/</guid>
				<description>&lt;h1 id=&#34;ruby-package-guidelines&#34;&gt;Ruby package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#ruby-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document covers standards and guidelines on writing &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for software that uses &lt;a href=&#34;https://archlinux.org/packages/?name=ruby&#34;&gt;ruby&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;For libraries, use &lt;code&gt;ruby-$_name&lt;/code&gt; (where &lt;code&gt;$_name&lt;/code&gt; is the upstream project name).&#xA;For applications, use the project name (without the &lt;code&gt;ruby-&lt;/code&gt; prefix) and optionally add &lt;code&gt;ruby-$_name&lt;/code&gt; to &lt;code&gt;provides&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;build-and-tests&#34;&gt;Build and tests&lt;a class=&#34;anchor&#34; href=&#34;#build-and-tests&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Ruby packages should be built from upstream sources as this provides a transparent chain of trust for the build.&#xA;To ensure integration with the existing set of Ruby packages, it is expected to run tests using &lt;a href=&#34;https://archlinux.org/packages/?name=ruby-rake&#34;&gt;ruby-rake&lt;/a&gt; or &lt;a href=&#34;https://archlinux.org/packages/?name=ruby-rspec&#34;&gt;ruby-rspec&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rust</title>
				<link>https://manual.archlinux.page/package-guidelines/rust/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/rust/</guid>
				<description>&lt;h1 id=&#34;rust-package-guidelines&#34;&gt;Rust package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#rust-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This document covers standards and guidelines on writing &lt;a href=&#34;https://wiki.archlinux.org/title/PKGBUILD&#34;&gt;PKGBUILD&lt;/a&gt;s for software written in &lt;a href=&#34;https://wiki.archlinux.org/title/Rust&#34;&gt;Rust&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;When packaging &lt;a href=&#34;https://wiki.archlinux.org/title/Rust&#34;&gt;Rust&lt;/a&gt; projects, the package name should almost always be the same as the name of the generated binary.&#xA;Note that it does not make any sense to package library crates, so only crates with bins will be packaged.&#xA;For ones that generate more than one binary, the upstream crate name is usually appropriate.&#xA;In any event the package name should be entirely lowercase.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Security</title>
				<link>https://manual.archlinux.page/package-guidelines/security/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/security/</guid>
				<description>&lt;h1 id=&#34;security-package-guidelines&#34;&gt;Security package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#security-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This page describes security packaging guidelines for Arch Linux packages.&#xA;For C/C++ projects the compiler and linker can apply security hardening options.&#xA;Arch Linux applies &lt;a href=&#34;https://en.wikipedia.org/wiki/Position-independent_code&#34;&gt;PIE&lt;/a&gt;, &lt;a href=&#34;https://www.redhat.com/en/blog/enhance-application-security-fortifysource&#34;&gt;FORTIFY_SOURCE&lt;/a&gt;, stack protector, &lt;a href=&#34;https://en.wikipedia.org/wiki/NX_bit&#34;&gt;nx&lt;/a&gt; and &lt;a href=&#34;https://www.redhat.com/en/blog/hardening-elf-binaries-using-relocation-read-only-relro&#34;&gt;relro&lt;/a&gt; by default.&lt;/p&gt;&#xA;&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;a class=&#34;anchor&#34; href=&#34;#usage&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Hardening protections can be reviewed by running &lt;a href=&#34;https://archlinux.org/packages/?name=checksec&#34;&gt;checksec&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ checksec --file&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/usr/bin/cat&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote class=&#39;book-hint tip&#39;&gt;&#xA;&lt;p class=&#34;book-hint-heading tip&#34;&gt;💡 Tip&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/Namcap&#34;&gt;Namcap&lt;/a&gt; also reports some security issues described on this page.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&#34;relro&#34;&gt;RELRO&lt;a class=&#34;anchor&#34; href=&#34;#relro&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;RELRO is a generic mitigation technique to harden the data sections of an ELF binary/process.&#xA;When a program is loaded several ELF memory sections need to be written to by the linker but can be turned read-only before turning control over to the program.&#xA;This prevents attackers of overriding some ELF sections.&#xA;There are two different RELRO modes:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Shell</title>
				<link>https://manual.archlinux.page/package-guidelines/shell/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/shell/</guid>
				<description>&lt;h1 id=&#34;shell-package-guidelines&#34;&gt;Shell package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#shell-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;install&#34;&gt;Install&lt;a class=&#34;anchor&#34; href=&#34;#install&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;For users to &lt;a href=&#34;https://wiki.archlinux.org/title/Command-line_shell#Changing_your_default_shell&#34;&gt;change shells&lt;/a&gt;, the shell must appear in &lt;code&gt;/etc/shells&lt;/code&gt;.&#xA;Most shell packages have install scripts like below:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;post_install&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    grep -Fqx /bin/shellname /etc/shells &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; echo /bin/shellname &amp;gt;&amp;gt;/etc/shells&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    grep -Fqx /usr/bin/shellname /etc/shells &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; echo /usr/bin/shellname &amp;gt;&amp;gt;/etc/shells&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;post_upgrade&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    post_install&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;post_remove&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sed -i -r &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/^(\/usr)?\/bin\/shellname$/d&amp;#39;&lt;/span&gt; etc/shells&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;shell-completions&#34;&gt;Shell completions&lt;a class=&#34;anchor&#34; href=&#34;#shell-completions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Most shells provide a built in set of completions for a few common commands while also scanning at least one system directory for functions that may be supplied by other packages.&#xA;The following table is a summary of where packages may place completion files and what the files should be named.&lt;/p&gt;</description>
			</item>
			<item>
				<title>VCS</title>
				<link>https://manual.archlinux.page/package-guidelines/vcs/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/vcs/</guid>
				<description>&lt;h1 id=&#34;vcs-package-guidelines&#34;&gt;VCS package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#vcs-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Version_control&#34;&gt;Version control systems&lt;/a&gt; can be used for retrieval of source code for usual statically versioned packages, and the latest (trunk) version of a development branch.&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint tip&#39;&gt;&#xA;&lt;p class=&#34;book-hint-heading tip&#34;&gt;💡 Tip&lt;/p&gt;&#xA;&lt;p&gt;Use &lt;code&gt;/usr/share/pacman/PKGBUILD-vcs.proto&lt;/code&gt; prototype provided by the &lt;a href=&#34;https://archlinux.org/packages/?name=pacman&#34;&gt;pacman&lt;/a&gt; package.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&#34;package-naming&#34;&gt;Package naming&lt;a class=&#34;anchor&#34; href=&#34;#package-naming&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Suffix &lt;code&gt;pkgname&lt;/code&gt; with &lt;code&gt;-bzr&lt;/code&gt;, &lt;code&gt;-cvs&lt;/code&gt;, &lt;code&gt;-darcs&lt;/code&gt;, &lt;code&gt;-git&lt;/code&gt;, &lt;code&gt;-hg&lt;/code&gt;, &lt;code&gt;-svn&lt;/code&gt;, etc., unless the package fetches a specific release.&lt;/p&gt;&#xA;&lt;h2 id=&#34;versioning&#34;&gt;Versioning&lt;a class=&#34;anchor&#34; href=&#34;#versioning&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;If the resulting package is different after changing e.g. the dependencies, URL or sources — update &lt;code&gt;pkgver&lt;/code&gt; to the latest version.&#xA;If &lt;code&gt;pkgver&lt;/code&gt; has not changed since the last update to the &lt;code&gt;PKGBUILD&lt;/code&gt;, increase &lt;code&gt;pkgrel&lt;/code&gt; instead.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Web App</title>
				<link>https://manual.archlinux.page/package-guidelines/webapp/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/webapp/</guid>
				<description>&lt;h1 id=&#34;web-application-package-guidelines&#34;&gt;Web application package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#web-application-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This page describes how to package web applications.&lt;/p&gt;&#xA;&lt;h2 id=&#34;separate-user&#34;&gt;Separate user&lt;a class=&#34;anchor&#34; href=&#34;#separate-user&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;For security reasons, every web application should be run as a separate (unprivileged) user (i.e. &lt;code&gt;$pkgname&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint note&#39;&gt;&#xA;&lt;p class=&#34;book-hint-heading note&#34;&gt;ℹ️ Note&lt;/p&gt;&#xA;&lt;p&gt;Traditionally, many web applications were run as the &lt;code&gt;http&lt;/code&gt; user/group, which can be considered unsafe, as in such a scenario applications can read each other&amp;rsquo;s files.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Refer to the &lt;a href=&#34;https://man.archlinux.org/man/systemd-sysusers.8&#34;&gt;systemd-sysusers(8)&lt;/a&gt;, &lt;a href=&#34;https://man.archlinux.org/man/sysusers.d.5&#34;&gt;sysusers.d(5)&lt;/a&gt;, &lt;a href=&#34;https://man.archlinux.org/man/systemd-tmpfiles.8&#34;&gt;systemd-tmpfiles(8)&lt;/a&gt; and &lt;a href=&#34;https://man.archlinux.org/man/tmpfiles.d.5&#34;&gt;tmpfiles.d(5)&lt;/a&gt; man pages for details on how to create users and deal with ownership of files and folders for that user in a package.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Wine</title>
				<link>https://manual.archlinux.page/package-guidelines/wine/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://manual.archlinux.page/package-guidelines/wine/</guid>
				<description>&lt;h1 id=&#34;wine-package-guidelines&#34;&gt;Wine package guidelines&lt;a class=&#34;anchor&#34; href=&#34;#wine-package-guidelines&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Many Windows programs may still be useful in Linux and so we may want to have a package for them.&#xA;The differences between the two operating systems make this task a little complex.&#xA;In this guideline we will talk about Win32 binaries, since projects where source is available usually are ported to Linux.&lt;/p&gt;&#xA;&lt;h2 id=&#34;things-to-check-outright&#34;&gt;Things to check outright&lt;a class=&#34;anchor&#34; href=&#34;#things-to-check-outright&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;License: does the license allow the program to be repackaged?&lt;/li&gt;&#xA;&lt;li&gt;Installer: is it possible to install the program silently? Even better, does an installer-less version exist?&lt;/li&gt;&#xA;&lt;li&gt;Portability and cleanness: is the program portable? It is clean?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Here we mean a program is portable if it &lt;em&gt;never&lt;/em&gt; writes in the registry or outside its directory; we mean a program is clean if it &lt;em&gt;never&lt;/em&gt; writes in its directory, but it may write its settings in the user folder.&#xA;A program can be also both (e.g., it never writes settings) or neither (e.g., it writes in its directory, it writes around, it writes in the registry&amp;hellip;)&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
