{{Header}}
{{#seo:
|description=Design and Developer Documentation about Redistribution of {{project_name_long}}.
}}
{{intro|
Design and Developer Documentation about Redistribution of {{project_name_short}}.
}}
== Introduction ==
Developers only!
These are notes for producing official [[Download|downloadable]] binary {{project_name_short}} images.
{{mbox
| image = [[File:Ambox_notice.png|40px|alt=info]]
| text =
Only required if you want to redistribute (official) {{project_name_short}} builds.
}}
== Pre Building ==
=== Major Upgrade ===
Check if updates needed:
'''1.''' https://github.com/Kicksecure/kicksecure-base-files/blob/master/etc/kicksecure_version
'''2.''' https://github.com/Kicksecure/dist-base-files/blob/master/usr/share/distro-info/kicksecure.csv
'''3.''' https://github.com/{{project_name_short}}/whonix-base-files/blob/master/etc/whonix_version
'''4.''' live-config-dist/etc/calamares/branding/Whonix-Host/branding.desc
=== Point Release ===
'''1.''' package timesanitycheck
: ./usr/share/timesanitycheck/date-minimum-file-create
'''2.''' update VirtualBox download link if a newer is available
https://github.com/derivative-maker/derivative-maker/blob/master/windows/virtualbox/download.txt
'''3.''' update VirtualBox SHA256SUMS file if a newer is available
https://github.com/derivative-maker/derivative-maker/blob/master/windows/virtualbox/SHA256SUMS
=== Unsorted ===
{{Box|text=
Clean source code
*
get rid of .directory files inside the source code:
thunar
→ preferences
→ general
→ behavior
→ use common view properties for all folders
*
Get rid of ~backup
files. In other words, get rid of files starting with ~
.
{{CodeSelect|code=
find ./ -name '*~' {{!}} xargs trash-put
}}
* You can get a list of unwanted files with git clean -dfxn
and remove them with git clean -dfx
.
* Update {{project_name_short}} debian package repository.
* add your own default-key
to your own /home/user/.gnupg/gpg.conf
.
* Check that all packages point to a signed git commit and signed git tag.
{{CodeSelect|code=
dm-packaging-helper-script pkg_verify_signed_commit_and_tag
}}
* push the source code to github
{{CodeSelect|code=
git push origin master
}}
* Check, that the current git commit is a signed.
You might wish using a git
or bash
alias to safe typing.
{{CodeSelect|code=
git log --show-signature HEAD^..HEAD
}}
Or use the generic makefile as a shortcut.
{{CodeSelect|code=
make git-commit-verify
}}
* Create an OpenPGP signed git tag. This will also be used as {{project_name_short}} version number.
{{CodeSelect|code=
git tag -s version
}}
* Make sure the current git head is a signed git commit and signed git tag.
To simplify this, you could use the generic makefile.
{{CodeSelect|code=
make git-verify
}}
* Push the OpenPGP signed git tag to github.
{{CodeSelect|code=
git push origin version
}}
}}
== Building ==
=== Notes ===
'''1.''' Remote Repository: By convention, enable {{project_name_short}} stable repository by default. To do so, use --repo true
. Already included in build command below.
'''2.''' For other options and platforms also see [[Dev/Build_Documentation|build documentation]].
=== Build ===
'''1.'''
{{CodeSelect|code=
export dist_build_redistributable=true
}}
'''2.''' Build {{project_name_gateway_long}}. For example {{project_name_gateway_long}} with Xfce for VirtualBox.
{{CodeSelect|code=
./derivative-maker --target virtualbox --flavor whonix-gateway-xfce --repo true
}}
'''3.''' Build {{project_name_workstation_long}}. For example {{project_name_workstation_long}} with Xfce for VirtualBox.
{{CodeSelect|code=
./derivative-maker --target virtualbox --flavor whonix-workstation-xfce --repo true
}}
== Post Building ==
Upload the images.
{{CodeSelect|code=
dm-upload-images
}}
=== Testing ===
* {{CodeSelect|code=
/usr/share/whonix-ws-firewall/unit_tests/stream_isolation_test
}}
* At least a few testers should test final releases before posting a news. Testers may be found by posting a news.
* [[Dev/Leak_Tests|Leak Tests]]!
* [[Test]] the images before final release! (Testers-only releases can be uploaded straight away.)
=== Update Permanent Links ===
{{Box|text=
Update permalinks.
sudoedit /etc/nginx/conf.d/download_redirects
cacheclear-minimal([https://phabricator.whonix.org/T895 ticket]) }} === Git Tag === Create
-testers-only
or -stable
git tag.
=== Announcement Text Creation ===
Create Changelog and Announcement.
{{CodeSelect|code=
dm-packaging-helper-script pkg_git_packages_git_log_writer
}}
=== Wiki Page Updates ===
{{Box|text=
'''Only required if you want to redistribute (official) {{project_name_short}} builds.'''
{{Box|text=
* Check, if [[Tor Browser/Manual Download]] is still up to date.
* Update [[Download|Download Table]].
* See if the download table works in Tor Browser using New Identity.
* Update [[Known Issues]].
* See if [[Documentation]] still makes sense.
* Search the wiki for [[Special:WhatLinksHere/Template:Stable]] and [[Special:WhatLinksHere/Template:Testing]] and act accordingly.
* Update links on the [[Dev/Build Documentation]] page.
* Update [[Features]].
* Update [[Template:VersionNew]].
* Update [[Template:VersionShort]].
* Incorporate new documentation which has been prepared on the page: [[Next]].
* [[Template:Stable_project_version_based_on_Debian_codename]]
* [[Template:Stable_project_version_based_on_Debian_version_short]]
* [[Template:Debian_Codename_Testing]]
* [[Changelog]]
* Instructions containing backports.
}}
}}
=== Misc ===
{{Box|text=
'''Only required if you want to redistribute (official) {{project_name_short}} builds.'''
{{Box|text=
* See https://github.com/{{project_name_short}}?utf8=%E2%9C%93&q=deprecated&type=&language= for deprecated repositories to be deleted.
* https://www.qubes-os.org/doc/supported-releases/#templates
* ask for an announcement on https://www.qubes-os.org/news/
** (similar to https://www.qubes-os.org/news/2018/08/07/whonix-14-has-been-released/)
** (similar to https://github.com/QubesOS/qubes-posts/blob/master/2018-08-07-whonix-14-has-been-released.md)
** (similar to https://github.com/QubesOS/qubes-issues/issues/4193)
}}
}}
* https://github.com/QubesOS/qubes-mgmt-salt-dom0-virtual-machines/blob/master/qvm/whonix.jinja
=== Announcement ===
{{Box|text=
'''Only required if you want to redistribute (official) {{project_name_short}} builds.'''
{{Box|text=
==== Contents ====
* introduction (what is {{project_name_short}}) (The release announcement may be the first thing that new people who learn about {{project_name_short}} see.)
* similar to https://forums.whonix.org/t/whonix-14-has-been-released
* deprecation notice of old {{project_name_short}} version with date of deprecation
==== Where ====
* Finally announce: Post a news. (Not nagging external lists. Common sense. Mostly only final releases.)
** In {{project_name_short}} Important and Feature Blog.
** https://lists.debian.org/debian-derivatives/
*** debian-derivatives@lists.debian.org
** https://lists.torproject.org/pipermail/tor-talk/
*** tor-talk@lists.torproject.org
** https://nmap.org/mailman/listinfo/fulldisclosure
*** fulldisclosure@seclists.org
** Also this will do the job as well:
*** [[Official Online Profiles#{{project_name_short}}_Forums_Profiles|{{project_name_short}} Forums Profiles]]
}}
}}
=== Cleanup ===
* any deprecated repositories (none at time of writing)
= See Also =
* [[Dev/Maintenance]]
* [[Dev/APT Repository]]
* [[Dev/Installation_from_Repository#Distro_Morphing_vs_Builds|Distro Morphing vs Builds]]
= Footnotes =
{{reflist|close=1}}
{{Footer}}
[[Category:Development]] [[Category:Design]]