Dev/git
Development Notes about git and ways to stay up to date of source code changes
Branches[edit]
Introduction[edit]
While the project is small adrelanos thinks it is best not to make a too difficult policy.
Compare[edit]
Upstream git issue. Currently not easy to compare tags in a superproject while showing what changed in the submodules.
git log -p --submodule=log 15.0.0.3.3-stable..15.0.0.3.7-developers-only
master[edit]
Adrelanos's progress of work.- Not calling it unstable, because the changes will most likely never make it unstable but it is just not tested if it still builds.
- Branching model, project readme, information, gpg...
signed git tags[edit]
Releases will be tagged and gpg signed.
Link to Source Code[edit]
https://github.com/Kicksecure/derivative-maker
subscribe to code changes[edit]
git[edit]
Git clone github.
A git specific work flow could be:
git fetch
every (few) day(s) and then git diff(tool), merge, etc.
rss feed notification[edit]
https://github.com/Kicksecure/derivative-maker/commits/master.atom
manually in your browser[edit]
Check every now and then https://github.com/Kicksecure/derivative-maker/commits/master.
Search the Source Code[edit]
Introduction[edit]
grep
ing (search for keywords inside files) or find
ing files the Kicksecure source code can be useful when looking for certain keywords or files. However, a common grep -r
or find .
will show lots of irrelevant search results due to changelog files, license files and git history. The following is a suggestions on how to securely acquire Kicksecure source code as well as on grep
ing or find
ing the Kicksecure with relevant only relevant search results.
Get the Source Code[edit]
Get the Signing Key[edit]
This step is recommended for better security, but is not strictly required. (See Trust)
Get the Source Code[edit]
Install git.
sudo apt update && sudo apt install git
Get the source code including git submodules. [1] [2]
Note: Replace 17.0.4.5-stable
with the actual tag you want to build.
git clone --depth=1 --branch 17.0.4.5-stable --jobs=4 --recurse-submodules --shallow-submodules https://github.com/Kicksecure/derivative-maker.git
OpenPGP Verify the Source Code[edit]
This chapter is recommended for better security, but is not strictly required. (See Trust.)
Change directly into source code folder.
cd derivative-maker
Git fetch. [3]
git fetch
Verify the chosen tag to build. Replace with tag you want to build.
git verify-tag 17.0.4.5-stable
The output should look similar to this.
type commit tag 17.0.4.5 tagger Patrick Schleizer <adrelanos@kicksecure.com> 1392320095 +0000
. gpg: Signature made Thu 13 Feb 2014 07:34:55 PM UTC using RSA key ID 77BB3C48
gpg: Good signature from "Patrick Schleizer <adrelanos@kicksecure.com>" [ultimate]The warning.
Is explained on the Kicksecure Signing Key page and can be safely ignored.
By convention, git tags should point to signed git commits. [5] (forum discussion) It is advisable to verify the signature of the git commit as well (replace
17.0.4.5
with the actual git tag being verified).
git verify-commit 17.0.4.5-stable^{commit}
The output should look similar to this.
gpg: Signature made Sun 07 Dec 2014 01:22:22 AM UTC using RSA key ID 77BB3C48 gpg: Good signature from "Patrick Schleizer <adrelanos@kicksecure.com>" [ultimate] Author: Patrick Schleizer <adrelanos@kicksecure.com> Date: Sun Dec 7 01:22:22 2014 +0000
.Choose Version[edit]
Retrieve a list of available git tags.
git --no-pager tag
Use git checkout to select the preferred version to build.
git checkout --recurse-submodules 17.0.4.5-stable
Replace 17.0.4.5-stable
with the actual version chosen for the build: the stable, testers-only or developers version. Common sense is required when choosing the right version number. For example, the latest available version number is not necessarily the most stable or suitable. Follow the Kicksecure News Blog as it might contain information.
Check if you really got the version you want.
git describe
Should show:
17.0.4.5-stable
Check if source folder is pristine.
git status
Should show nothing.
HEAD detached at 17.0.4.5-stable
nothing to commit, working tree clean
If it shows something else, do not continue.
Check Git[edit]
Check if you really got the version you want.
git describe
The output should show.
Check if the source folder is pristine.
git status
The output should show nothing.
nothing to commit, working tree clean
If it shows something else, do not continue.
Find Keywords[edit]
1. Create folder ~/bin
.
mkdir -p ~/bin
2. Create a file ~/bin/mygrep
.
3. Paste the following content.
#!/bin/bash set -x grep \ --exclude=README.md \ --exclude=GPLv2 \ --exclude=GPLv3 \ --exclude=COPYING \ --exclude=changelog.upstream-old1 \ --exclude-dir=mnt \ --exclude-dir=qubes-src/linux-template-builder/mnt \ --exclude=changelog.upstream \ --exclude-dir=".git" \ --exclude-dir=chroot-debian \ --exclude-dir=chroot-buster "$@"
4. Save.
5. Make executable.
chmod +x ~/bin/mygrep
6. Reboot required.
7. You need to be inside the source code folder. If not already, change directory.
cd derivative-maker
8. Search for a textual string (keyword).
For example grub-pc
. Replace grub-pc
with the actual keyword.
mygrep -r -i grub-pc
Find Files[edit]
1. Create folder ~/bin
.
mkdir -p ~/bin
2. Create a file ~/bin/myfind
.
3. Paste the following.
#!/bin/bash set -x find \ "$@" \ -type f \ -not -iwholename '*.git*'
4. Save.
5. Make executable.
chmod +x ~/bin/myfind
6. You need to be inside the source code folder. If not already, change directory.
cd derivative-maker
7. Search for a file name.
For example /etc/apparmor.d
.
myfind . | grep --color -i /etc/apparmor.d
Compiled Code[edit]
find . -name '*.c' -not -iwholename '*.git*'
./sdwdate/usr/lib/sdwdate/sclockadj.c ./bindp/usr/lib/bindp.c ./kloak/src/main.c ./kloak/src/keycodes.c ./kloak/src/eventcap.c
Put folder under Git Version Control[edit]
Operating System Software and Updates
sudo apt update
Install git
.
sudo apt install --no-install-recommends git
Unless you want to use git for pushing changes to remotes which you probably won't in a testing VM you can use the following git config without using any real names or pseudonyms. (These are the git suggested defaults. [6])
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Desalinize git in current folder or cd
to any folder you want to put under git version control. Can even be done for /home/user
folder which is very useful.
git init
Add all files to be added for next commit.
git add -A
Actually commit to git.
git commit -a -m .
Check git status of that folder.
git status
No changes registered yet to the folder since just now committed all to git.
On branch master nothing to commit, working tree clean
Create a test file or do some activity such as starting a browser or e-mail client.
touch test-file
Check again git status of that folder.
git status
Now git will show what changed.
On branch master Untracked files: (use "git add <file>..." to include in what will be committed) test-file nothing added to commit but untracked files present (use "git add" to track)
Goodies[edit]
Optional. Just sharing. Like it or not.
- Bash completion can complete git commands and branch names.
- Colorful git prompt.
apt source[edit]
You need to enable deb-src
in /etc/apt/sources.list.d/derivative.list
!
sudo apt update
Hit:1 tor+http://deb.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion buster InRelease Hit:2 https://deb.qubes-os.org/r4.1/vm bullseye InRelease Ign:3 tor+http://2s4yqjx5ul6okpp3f2gaunr2syex5jgbfpfvhxxbbjwnrsvbk5v3qbid.onion/debian buster InRelease Hit:4 tor+http://5ajw6aqf3ep7sijnscdzw77t7xq4xjpsy335yb2wiwgouo7yfxtjlmid.onion buster/updates InRelease Hit:5 tor+http://2s4yqjx5ul6okpp3f2gaunr2syex5jgbfpfvhxxbbjwnrsvbk5v3qbid.onion/debian buster Release Ign:7 https://deb.debian.org/debian buster InRelease Hit:8 https://security.debian.org buster/updates InRelease Hit:9 https://deb.debian.org/debian buster Release Hit:11 https://deb.debian.org buster InRelease Reading package lists... Done E: Failed to fetch tor+http://deb.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/dists/{{Stable project version based on Debian codename}}/InRelease Unable to find expected entry 'contrib/source/Sources' in Release file (Wrong sources.list entry or malformed file) E: Failed to fetch https://deb.debian.org/dists/stable/InRelease Unable to find expected entry 'non-free/source/Sources' in Release file (Wrong sources.list entry or malformed file) E: Some index files failed to download. They have been ignored, or old ones used instead.
The following messages can be ignored:
- "Unable to find expected entry 'contrib/source/Sources'" and
- "Unable to find expected entry 'non-free/source/Sources'"
There is nothing in these repositories and it does not limit functionality in any way. This is an inconvenient message but it will not be fixed since it was only raised once in that last five years.
apt source is fully functional.
apt source sandbox-app-launcher
Reading package lists... Done Picking 'kicksecure-meta-packages' as source package instead of 'sandbox-app-launcher' NOTICE: 'kicksecure-meta-packages' packaging is maintained in the 'Git' version control system at: https://github.com/{{project_name_short}}/sandbox-app-launcher.git Please use: git clone https://github.com/{{project_name_short}}/sandbox-app-launcher.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 48.9 kB of source archives. Get:1 tor+http://deb.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion buster/main sandbox-app-launcher 3:7.9-1 (dsc) [5,513 B] Get:2 tor+http://deb.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion buster/main sandbox-app-launcher 3:7.9-1 (tar) [37.8 kB] Get:3 tor+http://deb.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion buster/main sandbox-app-launcher 3:7.9-1 (diff) [5,588 B] Fetched 48.9 kB in 2s (19.4 kB/s) dpkg-source: info: extracting sandbox-app-launcher in sandbox-app-launcher-7.9 dpkg-source: info: unpacking sandbox-app-launcher_7.9.orig.tar.xz dpkg-source: info: unpacking sandbox-app-launcher_7.9-1.debian.tar.xz
Footnotes[edit]
- ↑
Optional
git
parameters:--depth=1
: Used to speed up download.--branch 17.0.4.5-stable
Usability. Used to speed up download.--jobs=4
: Used to speed up download.--recurse-submodules --shallow-submodules
: Usability.
git
users are free to drop any of these optional parameters. - ↑ Alternatively, this can be achieved with the following commands in several steps. This is useful if network issues arise. git clone --depth=1 --branch 17.0.4.5-stable https://github.com/Kicksecure/derivative-maker.git cd derivative-maker git submodule update --init --recursive --progress --jobs=4
- ↑ Optional. [...]
- ↑ As defined by TUF: Attacks and Weaknesses:
- ↑ Beginning from git tag 9.6 and above.
- ↑
git commit -a -m . *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: empty ident name (for <(null)>) not allowed
Unfinished: This wiki is a work in progress. Please do not report broken links until this notice is removed, use Search Engines First and contribute improving this wiki.

We believe security software like Kicksecure needs to remain open source and independent. Would you help sustain and grow the project? Learn more about our 10 year success story and maybe DONATE!