DU4 zone development (dilos-userland)
Porting from Debian 11 (bullseye)
Install two DU4 zones (see How to bootstrap a DU4 zone ):
Download zone
Append (add below) lines of debian’s sources into your local zone /etc/apt/sources.list |
---|
deb-src http://security.debian.org/debian-security bullseye-security/updates main contrib non-free |
add architecture: |
---|
sudo dpkg --add-architecture amd64 |
Then make it available:
update existing packages |
---|
sudo apt update |
Install git:
install packages |
---|
sudo apt install git |
Now you can download in your home any sources from bullseye using:
apt source component-name
The combination of the sources in your /etc/apt/sources.list and apt search mechanism give us the most actual version of the component you want to port.
Build zone
Install git, tools and make to start:
install packages |
---|
sudo apt install build-essential make git |
Build already ported package (DilOS procedure, could be used for port verification)
Prepare build directory:
clone repo (do not forget add your public key into https://bitbucket.org/account/settings/ssh-keys) |
---|
git clone git@bitbucket.org:dilos/du4.git |
go to components directory |
---|
cd du4/components |
Build the component:
you are ready to build your package from userland, for example: apt |
---|
cd apt gmake JOBS=4 deb (JOBS is the number of parallel build processes you want to use) |
After the building process is done, you find the built package(s) in <du4>/components/${component}/build directory
Port a new package (Debian procedure)
Preinstall necessary packages:
dpkg-dev |
---|
sudo apt install dpkg-dev |
Download source package from Debian:
porting gzip |
---|
apt source gzip |
cd gzip-1.10 |
dpkg-checkbuilddeps |
See output (for example):
dpkg-checkbuilddeps: error: Unmet build dependencies: debhelper-compat …
Try to install necessary packages from DU4 repository into your build zone |
---|
sudo apt install debhelper-compat … |
If some package has not been found in DU4 repository it means this one shall be ported too.
When dpkg-checkbuilddeps return empty output it means all depends are installed and you can build the component.
Check if the component is correctly buildable:
Update debian/changelog:
cat changelog | less |
---|
gzip (1.10-4+deb11u1+dilos1) unstable; urgency=high
-- DilOS Team dilos@dilos.org Mon, 27 Jun 2022 21:34:00 +0300 gzip (1.10-4+deb11u1) bullseye-security; urgency=high |
Current date in necessary format could be gotten by:
date -R
Build binary DEB packages |
---|
sudo dpkg-buildpackage -b -uc -us |
If it has been built successfully:
Build source packages |
---|
sudo dpkg-buildpackage -d -S -us -uc -sa |
After that you can provide result packages to Jenkins for integration.
If build failed you shall make all necessary fixes (using quilt tool), increment the +dilos<version> and add new line in debian/changelog with short description of the fix you made.
Bug fixing
Install DU4 zone (see How to bootstrap a DU4 zone )
Add line of DU4 sources into your local zone /etc/apt/sources.list |
---|
deb-src http://10.20.60.188/dilos4 du4-unstable main contrib non-free |
Then make it available:
update existing packages |
---|
sudo apt update |
Now install git and make to start:
install packages |
---|
sudo apt install build-essential make git |
Preinstall necessary packages:
dpkg-dev |
---|
sudo apt install dpkg-dev |
Download source package from DU4:
porting gzip |
---|
apt source gzip |
cd gzip-1.10 |
dpkg-checkbuilddeps |
All next steps are the same as described above.
Using single build zone
Prepare build zone (see “Build zone”).
Download all necessary Debian sources manually:
Go to https://packages.debian.org/source/bullseye.
Enter <package-name> into “search package names“ edit box, enter the page.
Select “bullseye“, scroll down the page.
Copy one-by-one all source links and download using wget |
---|
wget http://deb.debian.org/debian/pool/main/g/gzip/gzip_1.10-4+deb11u1.dsc |
wget http://deb.debian.org/debian/pool/main/g/gzip/gzip_1.10.orig.tar.gz |
wget http://deb.debian.org/debian/pool/main/g/gzip/gzip_1.10-4+deb11u1.debian.tar.xz |
Unpack them |
---|
dpkg-source -x gzip_1.10-4+deb11u1.dsc |
Done, you’ve downloaded and unpack original Debian 11 sources. Now you can compare the code and debian’s files with ours from DU4 sources or port them as described above.
Some notes and hints
Do not mix deb-src between DU4 and bullseye in one /etc/apt/sources.list! It will confuse apt when it shall download the sources.
Patching
Install quilt:
sudo apt install quilt
update the ~/.quiltrc:
QUILT_PATCHES=debian/patches
#QUILT_NO_DIFF_INDEX=1
QUILT_NO_DIFF_TIMESTAMPS=1
QUILT_DIFF_OPTS="--show-c-function"
#QUILT_REFRESH_ARGS="-p ab"
QUILT_DIFF_ARGS="--color=auto" # If you want some color when using quilt diff.
QUILT_PATCH_OPTS="--reject-format=unified"
QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:diff_rem=1;31:diff_hunk=1;33:diff_ctx=35:diff_cctx=33"
Create new patch (from sources root):
quilt new dilos.patch
Add file to patch:
quilt add dir-for-file/file.ext
Make all necessary updates with this file.
Create/update patch:
quilt refresh
Committing the component
As far as you start porting/fixing the component you shall take corresponded ticket in DU4 Jira to your owning:
Open corresponded ticket and move it to status Assigned (see DilOS 4 Development Workflow (English) ):
clone repo (do not forget add your public key into https://bitbucket.org/account/settings/ssh-keys)
git clone git@bitbucket.org:dilos/du4.git
go to components directory
cd du4/components
Move your Jira ticket into state “IN ANALYSYS“.
Create branch for the component (ticket name - component name):
git checkout -b d4-333-apt
Create folder for component (usually, it is name without version-revision):
mkdir apt
cd apt
Copy the original debian folder from the source (safe the attributes):
cp -a -r debian ../../du4/components/apt
Create Makefile here:
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright (c) 2023 DilOS Team <dilos@dilos.org>
#
include ../../make-rules/shared-macros.mk
COMPONENT_NAME= apt
include ../../make-rules/deb_src2.mk
#
build:
@echo "Nothing build"
install:
@echo "Nothing install"
clean:
$(RM) -r $(BUILD_DIR)
# $(RM) *.changes
# $(RM) *.deb
clobber: clean
test: $(NO_TESTS)
Add, commit and push the branch with original debian:
git add --all
git commit -m “original apt_2.2.4 from bullseye“
git push --set-upstream origin d4-333-apt
This step is important for reviewers and integrator, - they must know what exactly was changed relatively to origin!
Now you start porting process, so move your Jira ticket into “In Progress“ state selecting “Create fix” menu item.
After all necessary updating the debian/files into DilOS commit the changes:
git add --all
git commit -m “DilOS update for apt“
git push
In your browser go to https://bitbucket.org/dilos/du4/branches.
Push “Create” link in the “Pull request” column for your branch.
Check the “Delete branch“ checkbox.
Push “Create pull request“ button.
Add reviewers.
Integration (outers: without access to build server)
After getting successful build and generating source packages:
sudo dpkg-buildpackage -d -S -us -uc -sa
Copy result sources to your integrator:
scp zabbix_6.0.7+dfsg* alvano@10.20.50.182:integration
Password would be sent from integrator privately.
Integration (internals: with personal zone on build server)
Go to Jenkins VM:
ssh username@10.20.50.29
Go to Jenkins home (/ws/jenkins
) and create upload dir using ticket name:
cd ../jenkins
mkdir D4-188
cd D4-188
And copy sources from your VM into this dir:
scp alvano@10.20.50.182:work/build/zabbix_6.0.7+dfsg* .
Open browser and login to Jenkins (http://10.20.60.190:8080/ci):
Select your upload menu item (in my case “upload-src-dev1“), select “Build with Parameters“ and put your dir name into “COMPONENT_NAME“ edit box:
Click “Build“ button.