Differences between revisions 10 and 11
Revision 10 as of 2021-06-04 01:56:49
Size: 7160
Editor: PaulWise
Comment: typo
Revision 11 as of 2021-06-04 03:48:04
Size: 7320
Editor: GuillemJover
Comment: Itemize steps
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
Assemble a team of people working on the port and find a financial sponsor to support the team's work.   * Assemble a team of people working on the port and find a financial sponsor to support the team's work.
Line 13: Line 13:
Register accounts for each team member on the bug trackers and subscribe to the mailing lists for the upstream [[https://savannah.gnu.org/projects/config|GNU config]], [[https://www.gnu.org/software/binutils/|binutils]], [[https://gcc.gnu.org/|gcc]], [[https://www.gnu.org/software/gdb/|gdb]], [[https://www.qemu.org/|qemu]], [[https://sourceware.org/glibc/|glibc]], [[https://www.kernel.org/|linux]] projects.   * Register accounts for each team member on the bug trackers and subscribe to the mailing lists for the upstream [[https://savannah.gnu.org/projects/config|GNU config]], [[https://www.gnu.org/software/binutils/|binutils]], [[https://gcc.gnu.org/|gcc]], [[https://www.gnu.org/software/gdb/|gdb]], [[https://www.qemu.org/|qemu]], [[https://sourceware.org/glibc/|glibc]], [[https://www.kernel.org/|linux]] projects.
Line 15: Line 15:
Register accounts for each team member on the [[DebianWiki|Debian wiki]] ([[DebianWiki/EditorQuickStart#Account|registration]]) and [[Salsa]] ([[https://salsa.debian.org/users/sign_up|register]]).   * Register accounts for each team member on the [[DebianWiki|Debian wiki]] ([[DebianWiki/EditorQuickStart#Account|registration]]) and [[Salsa]] ([[https://salsa.debian.org/users/sign_up|register]]).
Line 17: Line 17:
[[https://www.oftc.net/Services/#register-your-account|Register]] and [[https://services.oftc.net/|verify]] accounts for each team member on the [[https://www.oftc.net/|OFTC]] IRC chat network and join the #debian-bootstrap, #debian-ports and other Debian [[IRC]] channels.   * [[https://www.oftc.net/Services/#register-your-account|Register]] and [[https://services.oftc.net/|verify]] accounts for each team member on the [[https://www.oftc.net/|OFTC]] IRC chat network and join the #debian-bootstrap, #debian-ports and other Debian [[IRC]] channels.
Line 21: Line 21:
Identify related ports and ISAs, decide that the port is worth creating and detail the reasons why.   * Identify related ports and ISAs, decide that the port is worth creating and detail the reasons why.
Line 23: Line 23:
Decide on the GNU triplet, [[Multiarch/Tuples|Debian multiarch tuple]], Debian architecture name, the name that end-users will use for the architecture and other [[ArchitectureSpecificsMemo|details]] of the architecture and ABI.   * Decide on the GNU triplet, [[Multiarch/Tuples|Debian multiarch tuple]], Debian architecture name, the name that end-users will use for the architecture and other [[ArchitectureSpecificsMemo|details]] of the architecture and ABI.
Line 25: Line 25:
Discuss the port with the community. Please send an email to the DebianList:FIXME mailing list. If the port is related to some other architectures, ensure you CC the mailing list for the architecture family. Also join the #debian-bootstrap and #debian-ports [[IRC]] channels.   * Discuss the port with the community. Please send an email to the DebianList:FIXME mailing list. If the port is related to some other architectures, ensure you CC the mailing list for the architecture family. Also join the #debian-bootstrap and #debian-ports [[IRC]] channels.
Line 27: Line 27:
Finalise the architecture details, especially including the ABI and CPU baseline requirements.   * Finalise the architecture details, especially including the ABI and CPU baseline requirements.
Line 31: Line 31:
Prepare patches supporting the port and get the necessary changes included upstream for [[https://savannah.gnu.org/projects/config|GNU config]] ([[https://git.savannah.gnu.org/cgit/config.git/tree/config.guess|instructions]]), [[https://www.gnu.org/software/binutils/|binutils]], gcc ([[https://gcc.gnu.org/contribute.html|instructions]]), gdb ([[https://www.gnu.org/software/gdb/contribute/|instructions]]), qemu ([[https://www.qemu.org/contribute/|instructions]]), glibc ([[https://sourceware.org/glibc/wiki/Contribution%20checklist|instructions]]), linux ([[https://kernelnewbies.org/|info]]) projects and any other upstream projects that you need to modify.   * Prepare patches supporting the port and get the necessary changes included upstream for [[https://savannah.gnu.org/projects/config|GNU config]] ([[https://git.savannah.gnu.org/cgit/config.git/tree/config.guess|instructions]]), [[https://www.gnu.org/software/binutils/|binutils]], gcc ([[https://gcc.gnu.org/contribute.html|instructions]]), gdb ([[https://www.gnu.org/software/gdb/contribute/|instructions]]), qemu ([[https://www.qemu.org/contribute/|instructions]]), glibc ([[https://sourceware.org/glibc/wiki/Contribution%20checklist|instructions]]), linux ([[https://kernelnewbies.org/|info]]) projects and any other upstream projects that you need to modify.
Line 33: Line 33:
Prepare patches supporting the port in [[HelmutGrohne/rebootstrap|rebootstrap]], dpkg and other Debian-specific packages.   * Prepare patches supporting the port in [[HelmutGrohne/rebootstrap|rebootstrap]], dpkg and other Debian-specific packages.
Line 35: Line 35:
Use your modified rebootstrap, the other patches and manual [[DebianBootstrap|bootstrapping]] to build all of build-essential.   * Use your modified rebootstrap, the other patches and manual [[DebianBootstrap|bootstrapping]] to build all of build-essential.
Line 37: Line 37:
Keep working on the bootstrap process until all of build-essential is installable with debootstrap.   * Keep working on the bootstrap process until all of build-essential is installable with debootstrap.
Line 39: Line 39:
Continue building as many packages as you can using the new build-essential packages.   * Continue building as many packages as you can using the new build-essential packages.
Line 41: Line 41:
Get any remaining changes included into the upstream projects that you have modified.   * Get any remaining changes included into the upstream projects that you have modified.
Line 43: Line 43:
Get any necessary changes included into dpkg ([[Teams/Dpkg/FAQ#new-arch|instructions]]), rebootstrap and other projects involved in the bootstrap process.   * Get any necessary changes included into dpkg ([[Teams/Dpkg/FAQ#new-arch|instructions]]), rebootstrap and other projects involved in the bootstrap process.
Line 47: Line 47:
[[Ports|Register the port]] on the Debian wiki, replace "example" throughout the page with the chosen architecture details and fill out as many details as you have.   * [[Ports|Register the port]] on the Debian wiki, replace "example" throughout the page with the chosen architecture details and fill out as many details as you have.
Line 49: Line 49:
Summarise the details of the architecture and ABI on the [[ArchitectureSpecificsMemo#Summary|arch summary wiki page]].   * Summarise the details of the architecture and ABI on the [[ArchitectureSpecificsMemo#Summary|arch summary wiki page]].
Line 51: Line 51:
Setup communication channels for the architecture. Use the architecture family as the name of any communication channels you create, just in case additional related architectures are created later. A [[https://www.debian.org/MailingLists/HOWTO_start_list|mailing list]] and [[IRC#How_to_create_a_new_.23debian-.2A_channel|IRC channel]] are recommended.   * Setup communication channels for the architecture. Use the architecture family as the name of any communication channels you create, just in case additional related architectures are created later. A [[https://www.debian.org/MailingLists/HOWTO_start_list|mailing list]] and [[IRC#How_to_create_a_new_.23debian-.2A_channel|IRC channel]] are recommended.
Line 53: Line 53:
Add your architecture to the [[Teams/Debbugs/ArchitectureTags|bugs arch usertags page]].   * Add your architecture to the [[Teams/Debbugs/ArchitectureTags|bugs arch usertags page]].
Line 55: Line 55:
[[https://www.ports.debian.org/contacts|Get]] the port included amongst the unofficial ports.   * [[https://www.ports.debian.org/contacts|Get]] the port included amongst the unofficial ports.
Line 57: Line 57:
[[https://www.debian.org/devel/buildd/|Setup unofficial buildd servers]] for the port, either in qemu or hardware.   * [[https://www.debian.org/devel/buildd/|Setup unofficial buildd servers]] for the port, either in qemu or hardware.
Line 59: Line 59:
Include the port on the [[https://www.debian.org/ports/|ports list on the Debian website]] and add the end-user name for the port to the [[https://salsa.debian.org/webmaster-team/webwml/-/blob/master/english/releases/arches.data|website arches data]]. If you create a page on the website, create one named after the architecture family, just in case additional related architectures are created later.   * Include the port on the [[https://www.debian.org/ports/|ports list on the Debian website]] and add the end-user name for the port to the [[https://salsa.debian.org/webmaster-team/webwml/-/blob/master/english/releases/arches.data|website arches data]]. If you create a page on the website, create one named after the architecture family, just in case additional related architectures are created later.
Line 61: Line 61:
Monitor build failures ([[https://buildd.debian.org/status/architecture.php|1]] [[https://udd.debian.org/cgi-bin/ftbfs.cgi|2]]) and continually fix issues.   * Monitor build failures ([[https://buildd.debian.org/status/architecture.php|1]] [[https://udd.debian.org/cgi-bin/ftbfs.cgi|2]]) and continually fix issues.
Line 63: Line 63:
Donate hardware for the [[https://gcc.gnu.org/wiki/CompileFarm|GCC compile farm]].   * Donate hardware for the [[https://gcc.gnu.org/wiki/CompileFarm|GCC compile farm]].
Line 65: Line 65:
Setup porterboxen for package maintainers to login to and port packages.   * Setup porterboxen for package maintainers to login to and port packages.
Line 67: Line 67:
Optionally, donate hardware for [[https://debomatic.github.io/|debomatic]].   * Optionally, donate hardware for [[https://debomatic.github.io/|debomatic]].
Line 69: Line 69:
Port the [[https://www.debian.org/devel/debian-installer/|Debian installer]] so that it works on the hardware you have available.   * Port the [[https://www.debian.org/devel/debian-installer/|Debian installer]] so that it works on the hardware you have available.
Line 71: Line 71:
Use the Debian installer to install Debian on the hardware you have available.   * Use the Debian installer to install Debian on the hardware you have available.
Line 73: Line 73:
Write some [[https://wiki.debian.org/InstallingDebianOn|documentation about installing the arch on the hardware]] you have installed.   * Write some [[https://wiki.debian.org/InstallingDebianOn|documentation about installing the arch on the hardware]] you have installed.
Line 75: Line 75:
Submit [[https://www.debian.org/releases/stable/amd64/ch05s04#submit-bug|installation reports]] for the hardware you have installed.   * Submit [[https://www.debian.org/releases/stable/amd64/ch05s04#submit-bug|installation reports]] for the hardware you have installed.
Line 77: Line 77:
Submit some [[https://wiki.debian.org/Hardware/Database|hardware probes]] for the hardware you have installed.   * Submit some [[https://wiki.debian.org/Hardware/Database|hardware probes]] for the hardware you have installed.
Line 81: Line 81:
Grow the hardware ecosystem until it satisfies the [[https://dsa.debian.org/ports/hardware-requirements/|requirements for an official port]].   * Grow the hardware ecosystem until it satisfies the [[https://dsa.debian.org/ports/hardware-requirements/|requirements for an official port]].
Line 83: Line 83:
Improve the port until it satisfies the [[https://ftp-master.debian.org/archive-criteria.html|criteria for being included in the main archive]].   * Improve the port until it satisfies the [[https://ftp-master.debian.org/archive-criteria.html|criteria for being included in the main archive]].
Line 85: Line 85:
Donate hardware for the official buildds and co-ordinate with [[Teams/DSA|the Debian sysadmins]] to setup the hardware in Debian hosting locations.   * Donate hardware for the official buildds and co-ordinate with [[Teams/DSA|the Debian sysadmins]] to setup the hardware in Debian hosting locations.
Line 87: Line 87:
Add quality assurance for the port for [[https://reproducible-builds.org/|Reproducible Builds]], [[https://ci.debian.net/doc/|Debian CI]], and [[https://piuparts.debian.org/|piuparts]] (doesn't yet support non-x86 ports) and other [[qa.debian.org|Debian QA efforts]].   * Add quality assurance for the port for [[https://reproducible-builds.org/|Reproducible Builds]], [[https://ci.debian.net/doc/|Debian CI]], and [[https://piuparts.debian.org/|piuparts]] (doesn't yet support non-x86 ports) and other [[qa.debian.org|Debian QA efforts]].
Line 89: Line 89:
Add support for the port to the [[https://www.debian.org/devel/debian-live/|live images]] and [[Cloud|cloud]] images if appropriate hardware exists.   * Add support for the port to the [[https://www.debian.org/devel/debian-live/|live images]] and [[Cloud|cloud]] images if appropriate hardware exists.
Line 93: Line 93:
Improve the port until it satisfies the [[https://release.debian.org/testing/arch_policy.html|criteria for being included in a Debian release]].   * Improve the port until it satisfies the [[https://release.debian.org/testing/arch_policy.html|criteria for being included in a Debian release]].
Line 97: Line 97:
Improve the port based on reports from users and QA services.   * Improve the port based on reports from users and QA services.
Line 99: Line 99:
Make the port more performant by porting or optimising various libraries (ToDo: add examples).   * Make the port more performant by porting or optimising various libraries (ToDo: add examples).
Line 101: Line 101:
Make the bootstrap process more trustworthy through [[https://bootstrappable.org/|Bootstrappable Builds]].   * Make the bootstrap process more trustworthy through [[https://bootstrappable.org/|Bootstrappable Builds]].

This page documents the approximate procedure for creating a new port and getting it included into Debian. It is a work in progress and is based on the port template wiki page.

/!\ Do not skip any of the steps.

/!\ Complete each step before moving to later steps.

People

  • Assemble a team of people working on the port and find a financial sponsor to support the team's work.
  • Register accounts for each team member on the bug trackers and subscribe to the mailing lists for the upstream GNU config, binutils, gcc, gdb, qemu, glibc, linux projects.

  • Register accounts for each team member on the Debian wiki (registration) and Salsa (register).

  • Register and verify accounts for each team member on the OFTC IRC chat network and join the #debian-bootstrap, #debian-ports and other Debian IRC channels.

Preparation

  • Identify related ports and ISAs, decide that the port is worth creating and detail the reasons why.
  • Decide on the GNU triplet, Debian multiarch tuple, Debian architecture name, the name that end-users will use for the architecture and other details of the architecture and ABI.

  • Discuss the port with the community. Please send an email to the FIXME mailing list. If the port is related to some other architectures, ensure you CC the mailing list for the architecture family. Also join the #debian-bootstrap and #debian-ports IRC channels.

  • Finalise the architecture details, especially including the ABI and CPU baseline requirements.

Bootstrap

  • Prepare patches supporting the port and get the necessary changes included upstream for GNU config (instructions), binutils, gcc (instructions), gdb (instructions), qemu (instructions), glibc (instructions), linux (info) projects and any other upstream projects that you need to modify.

  • Prepare patches supporting the port in rebootstrap, dpkg and other Debian-specific packages.

  • Use your modified rebootstrap, the other patches and manual bootstrapping to build all of build-essential.

  • Keep working on the bootstrap process until all of build-essential is installable with debootstrap.
  • Continue building as many packages as you can using the new build-essential packages.
  • Get any remaining changes included into the upstream projects that you have modified.
  • Get any necessary changes included into dpkg (instructions), rebootstrap and other projects involved in the bootstrap process.

Unofficial port

  • Register the port on the Debian wiki, replace "example" throughout the page with the chosen architecture details and fill out as many details as you have.

  • Summarise the details of the architecture and ABI on the arch summary wiki page.

  • Setup communication channels for the architecture. Use the architecture family as the name of any communication channels you create, just in case additional related architectures are created later. A mailing list and IRC channel are recommended.

  • Add your architecture to the bugs arch usertags page.

  • Get the port included amongst the unofficial ports.

  • Setup unofficial buildd servers for the port, either in qemu or hardware.

  • Include the port on the ports list on the Debian website and add the end-user name for the port to the website arches data. If you create a page on the website, create one named after the architecture family, just in case additional related architectures are created later.

  • Monitor build failures (1 2) and continually fix issues.

  • Donate hardware for the GCC compile farm.

  • Setup porterboxen for package maintainers to login to and port packages.
  • Optionally, donate hardware for debomatic.

  • Port the Debian installer so that it works on the hardware you have available.

  • Use the Debian installer to install Debian on the hardware you have available.
  • Write some documentation about installing the arch on the hardware you have installed.

  • Submit installation reports for the hardware you have installed.

  • Submit some hardware probes for the hardware you have installed.

Official port

Released port

Other work

  • Improve the port based on reports from users and QA services.
  • Make the port more performant by porting or optimising various libraries (ToDo: add examples).

  • Make the bootstrap process more trustworthy through Bootstrappable Builds.