Commit 8406f595 authored by Carsten's avatar Carsten
Browse files

fix diffs with upstream

parents 9369b9e6 a9d00c46
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignConsecutiveMacros: true
AlignEscapedNewlinesLeft: false
AlignEscapedNewlines: Left
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: TopLevel
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BasedOnStyle: LLVM
BinPackArguments: true
BinPackParameters: false
BraceWrapping:
AfterClass: false
AfterEnum: false
AfterStruct: false
AfterUnion: false
AfterControlStatement: MultiLine
AfterFunction: false # should also be MultiLine, but not yet supported
AfterExternBlock: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: true
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
ColumnLimit: 100
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DerivePointerBinding: true
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
ForEachMacros: [ BOOST_FOREACH ]
IncludeBlocks: Regroup
IncludeCategories:
# config.h first thing
- Regex: '^<config.h>$'
Priority: 0
# Kea's own files
- Regex: '^<(asiodns|asiolink|cc|cfgrpt|config|config_backend|cql|cryptolink|database|dhcp|dhcpsrv|dhcp_ddns|dns|eval|exceptions|hooks|http|log|mysql|pgsql|process|stats|testutils|util|yang|admin|agent|d2|dhcp4|dhcp6|keactrl|lfc|netconf|perfdhcp|shell)/'
Priority: 1
# C++ standard library headers
- Regex: '^<[[:alnum:]]>$'
Priority: 2
# boost headers
- Regex: '^<boost/'
Priority: 3
# C headers
- Regex: '^<[[:alnum:]].h>$'
Priority: 4
# everything else
- Regex: '.*'
Priority: 5
IndentCaseLabels: false
IndentFunctionDeclarationAfterType: false
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
KeepEmptyLinesAtTheStartOfBlocks: true
Language: Cpp
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
PenaltyBreakAssignment: 30
PenaltyBreakBeforeFirstCallParameter: 80
PenaltyBreakComment: 10
PenaltyBreakFirstLessLess: 0
PenaltyBreakString: 80
PenaltyBreakTemplateDeclaration: 100
PenaltyExcessCharacter: 100
PenaltyReturnTypeOnItsOwnLine: 0
PointerAlignment: Left
PointerBindsToType: true
ReflowComments: true
SortIncludes: true
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 4
UseTab: Never
variables:
# Not normally needed, but may be if some script uses `apt-get install`.
DEBIAN_FRONTEND: noninteractive
# Locale settings do not affect the build, but might affect tests.
LC_ALL: C
CI_REGISTRY_IMAGE: registry.gitlab.isc.org/isc-projects/images/bind9
CI_REGISTRY_IMAGE: registry.gitlab.isc.org/isc-projects/kea
# Disabled warnings:
# SC2039 - complains about local var: In POSIX sh, 'local' is undefined.
......@@ -15,19 +13,88 @@ stages:
shellcheck:
stage: test
image: "$CI_REGISTRY_IMAGE:debian-stretch-amd64"
image: "$CI_REGISTRY_IMAGE:latest"
tags:
- linux
- amd64
before_script:
- sudo apt-get update
- sudo apt-get -y install shellcheck
script:
- SCRIPTS="src/bin/keactrl/keactrl.in "
- SCRIPTS+="src/bin/admin/kea-admin.in "
- SCRIPTS=
- SCRIPTS+="src/bin/admin/admin-utils.sh "
- SCRIPTS+="src/bin/admin/kea-admin.in "
- SCRIPTS+="src/bin/admin/tests/cql_tests.sh.in "
- SCRIPTS+="src/bin/admin/tests/memfile_tests.sh.in "
- SCRIPTS+="src/bin/admin/tests/mysql_tests.sh.in "
- SCRIPTS+="src/bin/admin/tests/pgsql_tests.sh.in "
- SCRIPTS+="src/bin/agent/tests/ca_process_tests.sh.in "
- SCRIPTS+="src/bin/d2/tests/d2_process_tests.sh.in "
- SCRIPTS+="src/bin/dhcp4/tests/dhcp4_process_tests.sh.in "
- SCRIPTS+="src/bin/dhcp6/tests/dhcp6_process_tests.sh.in "
- SCRIPTS+="src/bin/keactrl/keactrl.conf.in "
- SCRIPTS+="src/bin/keactrl/keactrl.in "
- SCRIPTS+="src/bin/keactrl/tests/keactrl_tests.sh.in "
- SCRIPTS+="src/bin/netconf/tests/shtests/netconf_tests.sh.in "
- SCRIPTS+="src/bin/shell/tests/basic_auth_tests.sh.in "
- SCRIPTS+="src/bin/shell/tests/shell_process_tests.sh.in "
- SCRIPTS+="src/lib/asiolink/tests/process_spawn_app.sh.in "
- SCRIPTS+="src/lib/log/tests/buffer_logger_test.sh.in "
- SCRIPTS+="src/lib/log/tests/console_test.sh.in "
- SCRIPTS+="src/lib/log/tests/destination_test.sh.in "
- SCRIPTS+="src/lib/log/tests/init_logger_test.sh.in "
- SCRIPTS+="src/lib/log/tests/local_file_test.sh.in "
- SCRIPTS+="src/lib/log/tests/logger_lock_test.sh.in "
- SCRIPTS+="src/lib/log/tests/severity_test.sh.in "
- SCRIPTS+="src/lib/testutils/dhcp_test_lib.sh.in "
- SCRIPTS+="src/lib/testutils/xml_reporting_test_lib.sh.in "
- SCRIPTS+="src/hooks/dhcp/run_script/tests/run_script_test.sh.in "
- SCRIPTS+="src/share/database/scripts/cql/upgrade_1.0_to_2.0.sh.in "
- SCRIPTS+="src/share/database/scripts/cql/upgrade_2.0_to_3.0.sh.in "
- SCRIPTS+="src/share/database/scripts/cql/upgrade_3.0_to_4.0.sh.in "
- SCRIPTS+="src/share/database/scripts/cql/upgrade_4.0_to_5.0.sh.in "
- SCRIPTS+="src/share/database/scripts/cql/wipe_data.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_1.0_to_2.0.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_2.0_to_3.0.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_3.0_to_4.0.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_4.0_to_4.1.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_4.1_to_5.0.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_5.0_to_5.1.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_5.1_to_5.2.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_5.2_to_6.0.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_6.0_to_7.0.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_7.0_to_8.0.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_8.0_to_8.1.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_8.1_to_8.2.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_8.2_to_9.0.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_9.0_to_9.1.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_9.1_to_9.2.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_9.2_to_9.3.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_9.3_to_9.4.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/upgrade_9.4_to_9.5.sh.in "
- SCRIPTS+="src/share/database/scripts/mysql/wipe_data.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/upgrade_1.0_to_2.0.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/upgrade_2.0_to_3.0.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/upgrade_3.0_to_3.1.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/upgrade_3.1_to_3.2.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/upgrade_3.2_to_3.3.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/upgrade_3.3_to_4.0.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/upgrade_4.0_to_5.0.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/upgrade_5.0_to_5.1.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/upgrade_5.1_to_6.0.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/upgrade_6.0_to_6.1.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/upgrade_6.1_to_6.2.sh.in "
- SCRIPTS+="src/share/database/scripts/pgsql/wipe_data.sh.in "
- SCRIPTS+="src/share/yang/modules/utils/check-hashes.sh "
- SCRIPTS+="src/share/yang/modules/utils/check-revisions.sh "
- SCRIPTS+="src/share/yang/modules/utils/gen-revisions.sh "
- SCRIPTS+="tools/add-config-h.sh "
- SCRIPTS+="tools/bump-lib-versions.sh "
- SCRIPTS+="tools/check-for-duplicate-includes.sh "
- SCRIPTS+="tools/cql_config "
- SCRIPTS+="tools/mk_cfgrpt.sh "
- SCRIPTS+="tools/path_replacer.sh.in "
- SCRIPTS+="tools/print-generated-files.sh "
- SCRIPTS+="tools/shellcheck-all.sh "
- SCRIPTS+="tools/sysrepo_config "
- SCRIPTS+="tools/tests_in_valgrind.sh "
- shellcheck ${SCRIPTS} ${SHELLCHECK_OPTS}
danger:
......@@ -46,3 +113,34 @@ danger:
- sysctl -w net.ipv6.conf.default.disable_ipv6=1
- gem install danger-commit_lint
- danger --fail-on-errors=true --new-comment
duplicate-includes:
stage: test
image: "$CI_REGISTRY_IMAGE:latest"
tags:
- linux
- amd64
script:
- tools/check-for-duplicate-includes.sh
missing-config-h-include:
stage: test
image: "$CI_REGISTRY_IMAGE:latest"
tags:
- linux
- amd64
script:
- FILES=$(tools/add-config-h.sh -n)
- printf '%s\n' "${FILES}"
- test -z "${FILES}"
missing-git-attribute:
stage: test
image: "$CI_REGISTRY_IMAGE:latest"
tags:
- linux
- amd64
script:
- test -z $(git diff)
- ./tools/print-generated-files.sh -a
- test -z $(git diff)
......@@ -5,32 +5,36 @@ about: Create a new issue using this checklist for each release
# Kea Release Checklist
This is thoroughly documented on https://wiki.isc.org/bin/view/QA/KeaReleaseProcess
1. [ ] Make this issue confidential :exclamation: :exclamation: :exclamation: :exclamation:
This is thoroughly documented in [the Kea Release Process guide](https://wiki.isc.org/bin/view/QA/KeaReleaseProcess).
## Pre-Release Preparation
Some of those checks and updates can be made before actual freeze.
Some of those checks and updates can be made before the actual freeze.
1. Check Jenkins results:
1. [ ] Check Jenkins jobs if they look ok (distcheck, etc)
1. [ ] Check Jenkins Tests Report: https://jenkins.isc.org/job/kea-dev/job/jenkins-tests-report/
1. [ ] Check tarball check report: https://jenkins.isc.org/job/kea-dev/job/tarball-internal/Kea_20Build_20Checks/
1. [ ] Check Perflab for drops in performance there (https://perflab.isc.org/)
1. Check versioning, ask the development team if
1. [ ] Check Jenkins jobs for failures: [distcheck](https://jenkins.aws.isc.org/job/kea-dev/job/distcheck/), etc...
1. [ ] Check [Jenkins Tests Report](https://jenkins.aws.isc.org/job/kea-dev/job/jenkins-tests-report/).
1. [ ] Check [tarball check report](https://jenkins.aws.isc.org/job/kea-dev/job/tarball-internal/Kea_20Build_20Checks/)
1. [ ] Check [Performance Test Results](https://jenkins.isc.org/job/kea-dev/job/performance/KeaPerformanceReport/) in Jenkins for drops in performance.
1. Check versioning, ask the development team if:
- the library versions are being updated
- the HOOKS_VERSION is being updated;
- `KEA_HOOKS_VERSION` is being updated
- [ ] create an issue for that for developers in Gitlab
- script: [./tools/bump-lib-versions.sh](https://gitlab.isc.org/isc-projects/kea/-/blob/master/tools/bump-lib-versions.sh) Kea-q.w.e Kea-a.b.c (where `a.b.c` is the version to be released and `q.w.e` is the version previous to that)
1. Prepare Release Notes
1. [ ] Create Release Notes on Kea GitLab wiki and notify @tomek about that. It should be created under "release notes" folder, like this one: https://gitlab.isc.org/isc-projects/kea/-/wikis/release%20notes/release-notes-1.7.10
1. [ ] Create Release Notes on Kea GitLab wiki and notify @tomek about that. It should be created under "release notes" directory, like this one: https://gitlab.isc.org/isc-projects/kea/-/wikis/release%20notes/release-notes-1.9.2
1. [ ] Finish release notes and conduct its review
1. [ ] Run https://jenkins.isc.org/job/kea-dev/job/release-pkgs-upload-internal/ and https://jenkins.isc.org/job/kea-dev/job/release-pkgs-check-internal/ for testing repos to check if they work correctly.
1. [ ] Run [release-pkgs-upload-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-pkgs-upload-internal/) and [release-pkgs-check-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-pkgs-check-internal/) to test repositories for correctness.
The following steps may involve changing files in the repository.
1. [ ] If not done already, then bump up Kea version in configure.ac (format: `1.x.y-git`, ie. do not drop -git)
1. [ ] Create a Kea issue for code changes that will be made due to the following checks
1. Check User's Guide sections:
1. [ ] Run [update-code-for-release.py](https://gitlab.isc.org/isc-private/qa-dhcp/-/blob/master/kea/build/update-code-for-release.py) <br>
Example command: `GITLAB_KEA_TOKEN='...' GITLAB_KEA_PREMIUM_TOKEN='...' ./update-code-for-release.py 1.9.7 'Apr 28, 2021' ~/isc/repos/kea/` <br>
The script:
- creates a Kea issue and MR for release changes,
- runs several updating scripts
- pushes the changes to MR
1. Check manually User's Guide sections:
1. Chapter 1. Introduction
1. [ ] On what platforms we are running tests using Jenkins? Update Supported Platforms in platforms.rst file.
1. [ ] Did we add any additional 3rd party software? Update if needed
......@@ -38,76 +42,79 @@ The following steps may involve changing files in the repository.
1. Chapter 2. Quick Start
1. [ ] Has the default installation process changed (for kea and hooks)? If yes, are those changes documented and highlighted in the release notes?
1. Chapter 3. Installation
1. [ ] Check installation hierarchy
1. [ ] Check and update Building Requirements
1. [ ] Check configure options against what ./configure -h says
1. [ ] Check ChangeLog entries in Kea main and premium: spelling, trailing whatspaces, etc.
1. [ ] Check installation hierarchy (this is also automatically checked at the end of [ut-extended job](https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/))
1. [ ] Check and update Build Requirements
1. [ ] Check configure options against what `./configure -h` says
1. [ ] Check ChangeLog entries in Kea main and premium: spelling, trailing whitespaces, etc.
1. [ ] Check AUTHORS, INSTALL, README files in Kea main and premium.
- AUTHORS: update credits
- README: check "provides" with Release Notes, User Guide (1.3 Kea Software)
1. [ ] Update information in sources about copyright dates, new version, etc, script: https://gitlab.isc.org/isc-private/qa-dhcp/blob/master/kea/build/prepare_kea_release.sh
1. [ ] Regenerate parsers using docs.isc.org, script: https://gitlab.isc.org/isc-private/qa-dhcp/blob/master/kea/build/regen-parsers.sh.
1. [ ] If changes were made, commit the change, push the branch to the main repository and request a review. Once the changes have been approved, merge the MR to master.
If changes were made, commit the change, push the branch to the main repository and request a review. Once the changes have been approved, merge the branch to master.
## Build selection, tarballs upload and sanity checks
## Build selection and upload package
That is the last moment to freeze code!
This is the last moment to freeze code! :snowflake:
1. [ ] Go to tarball-internal Jenkins job and pick last tarball built - it will be a release candidate.
1. [ ] Check tarball before requesting sanity checks from dev team
1. Download tarballs from picked jenkins build
1. Check sizes - is new package reasonable?
1. Check installation tree, compare it with previous release
1. [ ] Go to [tarball-internal](https://jenkins.aws.isc.org/job/kea-dev/job/tarball-internal/) Jenkins job and pick the last tarball built - it will be a release candidate.
1. [ ] Check tarball before requesting sanity checks from the development team.
1. Download tarballs from picked Jenkins build
1. Check sizes - is the new package reasonable?
1. Check installation tree, compare it with the previous release
1. Check installed lib versions
1. which were updated? (save results)
1. any of the lib from current release has lower number then corresponding lib from previous release? (!)
1. Uninstall Kea, check what left (there should be just configuration files)
1. Check if all of installed binaries has man page
1. Check if all of the installed binaries has man page
1. if not, is it in the tarball?
1. are man page up-to-date?
1. Check if documentation is properly formatted, has correct versions and dates.
1. it's advised to search for previous version numbers, some of them are statically added in statements that are no longer valid
1. [ ] If all seems to be ok then upload tarballs to repo.isc.org
1. Go to release-upload Jenkins job
1. [ ] Upload tarballs to repo.isc.org using Jenkins and send sanity checks request.
1. Go to [release-tarball-upload-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-tarball-upload-internal/) Jenkins job.
1. Click "Build with Parameters"
1. In field "Tarball" select picked tarball build
1. In field "Release_Candidate" pick:
1. rc1 if this is the first selected build for release, it will push selected tarballs to repo.isc.org, to folder suffixed with indicated rc#
1. next rc# if this is a respin after some fixes (note: it is not possible to pick previous rc number - it will result in error)
1. final if the last rc number was ok, this will push selected tarbal to repo.isc.org, to folder with no suffixes
1. [ ] If none of the results force you to fix and rebuild package, send sanity checks request
## Sanity Checks
1. [ ] Create Sanity Checks announcement, put there:
- a link to sanity checks steps: https://wiki.isc.org/bin/view/QA/KeaReleaseProcess, "4. Sanity Checks" chapter
- a link to an issue created in next step
- tarballs locations with SHA256 checksums
- rpm/deb packages locations and versions
1. [ ] Create a GitLab issue for sanity checks, put there the announcement
1. [ ] Send the announcement to dhcp-team@isc.org
## Releasing Tarballs
1. rc1 if this is the first selected build for release, it will push the selected tarballs to repo.isc.org, to a directory suffixed with indicated rc#
1. next rc# if this is a respin after some fixes (note: it is not possible to pick previous rc number - it will result in an error)
1. final if the last rc number was ok, this will push the selected tarball to repo.isc.org, to a directory with no suffixes
1. Submit the job that will automatically:
1. Upload the tarballs <br>
and if this is not the final version:
1. Create a GitLab issue for sanity checks, put there the announcement
1. Send Sanity Checks announcement via email to dhcp-team@isc.org and to DHCP channel on Mattermost.<br>
The announcement includes:
- a link to chapter 4 Sanity Checks of the release process: [KeaReleaseProcess - SanityChecks](https://wiki.isc.org/bin/view/QA/KeaReleaseProcess#4.%20Sanity%20Checks)
- a link to the GitLab issue
- tarballs locations with SHA256 checksums
- rpm/deb packages locations and versions
## Releasing Tarballs and Packages
1. [ ] Update Release Notes with ChangeLog entries
1. [ ] Upload final RPM & DEB packages to cloudsmith.io
1. Go to [release-pkgs-upload-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-pkgs-upload-internal/).
1. Click "Build with Parameters" link
1. Pick your selected pkg build in Packages field, and select `PrivPubRepos: "both"`, `TestProdRepos: "production"` and click Build button.
1. When it finishes run check: [releases-pkgs-check-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-pkgs-check-internal/).
1. [ ] Upload final tarballs to repo.isc.org
1. Go to release-upload Jenkins job again
1. Go to [release-tarball-upload-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-tarball-upload-internal/) Jenkins job.
1. Click "Build with Parameters"
1. In field "Tarball" select picked tarball build
1. In field "Release_Candidate" pick final
1. [ ] When the upload is completed then copy SHA checksums from the log and write an email to signers@isc.org requesting signatures
of final tarballs on repo.isc.org indicating release folders. Attach SHA checksums to the request.
1. [ ] Upload final RPM & DEB packages to cloudsmith.io
1. Go to https://jenkins.isc.org/job/kea-dev/job/pkg/
1. Pick the build for selected tarball in previous steps
1. Go to https://jenkins.isc.org/job/kea-dev/job/release-pkgs-upload-internal/
1. Click "Build with Parameters" link
1. Pick your selected pkg build in Packages field, and select "production" in Repository_Type field and click Build button.
1. When it finishes run check: https://jenkins.isc.org/job/kea-dev/job/release-pkgs-check-internal/
1. [ ] Create git tags `Kea-1.x.y` in Kea main and premium repositories
1. Update ReadTheDocs
1. [ ] Trigger rebuilding docs on https://readthedocs.org/projects/kea/builds
1. [ ] Publish currently released version
1. [ ] For stable releases change change default version to point to this stable release
1. In field "Release_Candidate" pick final <br>
This job will also:
- open an issue on [the signing repository](https://gitlab.isc.org/isc-private/signing/-/issues) requesting signing final tarballs on repo.isc.org
- create Git tags `Kea-a.b.c` in Kea main and premium repositories
- send a signing request issue link on the DHCP Mattermost channel
1. [ ] Send a request for publishing the release on the Support Mattermost channel linking the Signing issue and the release checklist issue.
1. [ ] Mark Jenkins jobs with release artifacts to be kept forever: <br>
Go to the following Jenkins jobs, click release build and then, on the build page, click `Keep this build forever` button: <br>
1. [tarball-internal job](https://jenkins.aws.isc.org/job/kea-dev/job/tarball-internal/)
1. [pkg job](https://jenkins.aws.isc.org/job/kea-dev/job/pkg/)
1. [ ] Update ReadTheDocs
1. Trigger rebuilding docs on [readthedocs.org](https://readthedocs.org/projects/kea/builds).
1. Publish currently released version. On the `Versions` tab, scroll down to `Activate a version`, search for `kea-a.b.c` and click `Activate`.
1. For stable releases, change the default version to point to this stable release.
### On the Day of Public Release
......@@ -117,16 +124,22 @@ That is the last moment to freeze code!
- [ ] ***(Support)*** Publish links to downloads on ISC website.
- [ ] ***(Support)*** Write release email to *kea-announce*.
- [ ] ***(Support)*** Write email to *kea-users* (if a major release).
- [ ] ***(Support)*** Send eligible customers updated links to the Subscription software ftp site.
- [ ] ***(Support)*** If it is a new major version, sweng will have created a new repo in Cloudsmith, which will need the customer tokens migrated from an existing repo. Then update support customers that this new private repo exists.
- [ ] ***(Support)*** Update tickets in case of waiting support customers.
- [ ] ***(Support)*** Send eligible customers updated links to the Subscription software FTP site.
- [ ] ***(Support)*** If it is a new major version, SWENG will have created a new repo in Cloudsmith, which will need the customer tokens migrated from an existing repo. Then update support customers that this new private repo exists.
- [ ] ***(Support)*** Update tickets in case of waiting for support customers.
- [ ] ***(QA)*** Inform Marketing of the release.
- [ ] ***(QA)*** Update the internal [Kea release dates wiki page](https://wiki.isc.org/bin/view/Main/KeaReleaseDates) when public announcement has been made.
- [ ] ***(Marketing)*** Upload Premium hooks tarball to SendOwl. Create a new product if a new branch, otherwise update existing product. Send notifications to existing subscribers of the new version.
- [ ] ***(Marketing)*** Announce on social media.
- [ ] ***(Marketing)*** Update [Wikipedia entry for Kea](https://en.wikipedia.org/wiki/Kea_(software)).
- [ ] ***(Marketing)*** Write blog article (if a major release).
- [ ] ***(Marketing)*** Update [Kea page on web site if any new hooks](https://www.isc.org/kea/)
- [ ] ***(Marketing)*** Update [Kea page on web site if any new hooks](https://www.isc.org/kea/).
- [ ] ***(Marketing)*** Update Kea Premium and Kea Subscription data sheets if any new hooks.
- [ ] ***(Marketing)*** Update [significant features matrix](https://kb.isc.org/docs/en/aa-01615) (if any significant new features)
- [ ] ***(Marketing)*** Update [Kea documentation page in KB](https://kb.isc.org/docs/en/kea-administrator-reference-manual)
- [ ] ***(Marketing)*** Update [significant features matrix](https://kb.isc.org/docs/en/aa-01615) (if any significant new features).
- [ ] ***(Marketing)*** Update [Kea documentation page in KB](https://kb.isc.org/docs/en/kea-administrator-reference-manual).
## Post-Release, But Before Code Unfreeze
- [ ] Bump up Kea version in `configure.ac` to next development version which could be, based on just released version `a.b.c`:
* `a.b.z-git` where `z == c + 1` or
* `a.y.0-git` where `y == b + 1` or
* `x.1.0-git` where `x == a + 1`
This diff is collapsed.
......@@ -20,7 +20,8 @@ Primary developers:
- Razvan Becheriu (cassandra, sysrepo, multi-threading)
- Vicky Risk (documentation)
- Suzanne Goldlust (documentation)
- Andrei Pavel (various)
- Andrei Pavel (shell scripts)
- Peter Davies (documentation)
Former developers who are no longer active:
- Stephen Morris (Hooks, MySQL)
......@@ -213,3 +214,6 @@ We have received the following contributions:
- Niclas Rosenvik
2020-01: Fix in the gtest detection scripts.
- Carsten Strotman
2020-11: Several Kea ARM corrections.
......@@ -42,6 +42,8 @@ expected to run on many other architectures. You may take a look at [system spec
notes](https://kb.isc.org/docs/installing-kea). For a complete list of systems we build on, you may
take a look at the [Jenkins build farm](https://jenkins.isc.org/).
### Coding guidelines
Does your patch conform to [Kea coding
guidelines](https://gitlab.isc.org/isc-projects/kea/wikis/coding-guidelines)? You can submit a
patch that does not adhere to them, but that will reduce its chances of being accepted. If the
......@@ -49,6 +51,39 @@ deviations are minor, one of the Kea engineers who does the review will likely f
However, if there are lots of issues, the reviewer may simply reject the patch and ask you to fix it
before re-submitting.
Placed in the root of the repository are files that formally describe the coding
guidelines above as close as possible. They are `.clang-format` and
`.uncrustify.cfg` used by `clang-format` and `uncrustify` respectively. If you
want to format code automatically, you will need to have at least one of these
tools installed. Since by default, these tools look for the closest style file
located in one of the parent directories or, otherwise, in a default location,
there are a a couple of helpful scripts i.e. `./tools/clang-format.sh` and
`./tools/uncrustify.sh` to assure you that the Kea-owned file is used. They
accept any number of customized parameters that would be passed to the
underlying tool followed by any number of files and/or directories. Passing
directories will have all non-generated C++ files under it formatted.
IDEs often offer support for code formatting tools. For example, in Visual
Studio Code, you may install `Clang-Format` and `crustless` through the Command
Palette (`Ctrl + Shift + P` by default), `Extensions: Install Extensions`.
Then open a source file, select code that you want formatted, open the Command
Palette, and choose `Format Selection`. You might go through an onboarding step
where you choose the formatter in the case you have both installed, but that
should be it.
When using these tools, it can be tempting to format entire files at once. In
the interest of preserving git history as much as possible, it is recommended
that you only format code that you have added or changed. This is much easier
done in an IDE, but as long as the tool supports it, it can be done using the
provided scripts e.g.:
```bash
./tools/clang-format.sh --lines=13:37 ./src/lib/dhcpsrv/alloc_engine.cc
```
Uncrustify does not seem to have a line-range-limiting option at the time of
this writing.
## Running unit-tests
One of the ground rules in Kea development is that every piece of code has to be tested. We now have
......
Copyright (C) 2009-2020 Internet Systems Consortium, Inc. ("ISC")
Copyright (C) 2009-2021 Internet Systems Consortium, Inc. ("ISC")
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
......@@ -604,3 +604,8 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice
The ext/coroutine code is externally maintained and distributed under
the Boost Software License, Version 1.0. (See its accompanying file
LICENSE_1_0.txt.)
Sample TLS clients and servers are used for tests and are included in
src/lib/asiolink/testutils. The files are distributed under Boost
Software license 1.0 and are used for testing only. They're not part
of Kea installation.
This diff is collapsed.
......@@ -146,7 +146,7 @@ cppcheck:
--template '{file}:{line}: check_fail: {message} ({severity},{id})' \
src
# this is a shortcut that builds only documentation dependecies and documentation itself
# this is a shortcut that builds only documentation dependencies and documentation itself
docs:
$(MAKE) -C doc/sphinx
......
......@@ -5,13 +5,13 @@ and a DHCP benchmarking tool, perfdhcp.
Kea is developed by Internet Systems Consortium, Inc.
The developers' website is at https://gitlab.isc.org/isc-projects/kea.
The developers' website is at https://gitlab.isc.org/isc-projects/kea/.
Limitations, known issues, and feature requests can be found
at https://gitlab.isc.org/isc-projects/kea/wikis/known-issues-list.
at https://gitlab.isc.org/isc-projects/kea/-/wikis/known-issues-list.
If you are thinking about contributing a patch, please read the
Contributor's Guide first. Participants in this project implicitly agree to
abide by the project's Code of Conduct.
Contributor's Guide first. Participants in this project implicitly agree to
abide by the project's Code of Conduct.
The Kea mailing lists are available via https://lists.isc.org/.
This diff is collapsed.
......@@ -3,6 +3,7 @@ SUBDIRS = sphinx devel
EXTRA_DIST = images/kea-logo-100x70.png
nobase_dist_doc_DATA = examples/agent/comments.json
nobase_dist_doc_DATA += examples/agent/https.json
nobase_dist_doc_DATA += examples/agent/simple.json
nobase_dist_doc_DATA += examples/ddns/comments.json
nobase_dist_doc_DATA += examples/ddns/sample1.json
......@@ -13,6 +14,7 @@ nobase_dist_doc_DATA += examples/https/shell/kea-stunnel.conf
nobase_dist_doc_DATA += examples/kea4/advanced.json
nobase_dist_doc_DATA += examples/kea4/all-keys.json
nobase_dist_doc_DATA += examples/kea4/all-keys-netconf.json
nobase_dist_doc_DATA += examples/kea4/all-options.json
nobase_dist_doc_DATA += examples/kea4/backends.json
nobase_dist_doc_DATA += examples/kea4/cassandra.json
nobase_dist_doc_DATA += examples/kea4/classify.json
......@@ -33,9 +35,12 @@ nobase_dist_doc_DATA += examples/kea4/several-subnets.json
nobase_dist_doc_DATA += examples/kea4/shared-network.json
nobase_dist_doc_DATA += examples/kea4/single-subnet.json
nobase_dist_doc_DATA += examples/kea4/with-ddns.json
nobase_dist_doc_DATA += examples/kea4/vivso.json
nobase_dist_doc_DATA += examples/kea4/vendor-specific.json
nobase_dist_doc_DATA += examples/kea6/advanced.json
nobase_dist_doc_DATA += examples/kea6/all-keys.json
nobase_dist_doc_DATA += examples/kea6/all-keys-netconf.json
nobase_dist_doc_DATA += examples/kea6/all-options.json
nobase_dist_doc_DATA += examples/kea6/backends.json
nobase_dist_doc_DATA += examples/kea6/cassandra.json
nobase_dist_doc_DATA += examples/kea6/classify.json
......
html
\ No newline at end of file
html
This diff is collapsed.
This is a folder with content for Doxygen.
This is used by developers and is not used directly in official builds.
To build doxygen documetation run:
make devel
\ No newline at end of file
To build doxygen documentation run:
make devel
// Copyright (C) 2018-2019 Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2018-2021 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
......@@ -52,7 +52,7 @@ The default packet queue implementation for both Kea DHCPv4 and DHCPv6 servers
is a simple ring buffer. Once it reaches capacity, new packets get added to
the back of queue by discarding packets from the front of queue. Rather than
always discarding the newest packets, we now always discard the oldest
packets. The capacity of the buffer, (i.e the maximum number of packets the
packets. The capacity of the buffer (i.e. the maximum number of packets the
buffer can contain) is configurable.
@section custom-implementations Custom Packet Queues
......@@ -110,7 +110,7 @@ implementation using a ring buffer based on Boost's boost::circular_buffer
isc::dhcp::PacketQueueRing6). The most critical aspects to remember when
developing your implementation are:
-# It MUST be thread safe since queuing and dequeing packets are done by
-# It MUST be thread safe since queuing and dequeuing packets are done by
separate threads. (You might considering using std::mutex and std::lock_guard).