diff options
Diffstat (limited to 'src/3rd_party/dbus-1.7.8/HACKING')
-rw-r--r-- | src/3rd_party/dbus-1.7.8/HACKING | 351 |
1 files changed, 0 insertions, 351 deletions
diff --git a/src/3rd_party/dbus-1.7.8/HACKING b/src/3rd_party/dbus-1.7.8/HACKING deleted file mode 100644 index 805fd2e00d..0000000000 --- a/src/3rd_party/dbus-1.7.8/HACKING +++ /dev/null @@ -1,351 +0,0 @@ -The guidelines in this file are the ideals; it's better to send a -not-fully-following-guidelines patch than no patch at all, though. We -can always polish it up. - -Mailing list -=== - -The D-Bus mailing list is dbus@lists.freedesktop.org; discussion -of patches, etc. should go there. - -Security -=== - -Most of D-Bus is security sensitive. Guidelines related to that: - - - avoid memcpy(), sprintf(), strlen(), snprintf, strlcat(), - strstr(), strtok(), or any of this stuff. Use DBusString. - If DBusString doesn't have the feature you need, add it - to DBusString. - - There are some exceptions, for example - if your strings are just used to index a hash table - and you don't do any parsing/modification of them, perhaps - DBusString is wasteful and wouldn't help much. But definitely - if you're doing any parsing, reallocation, etc. use DBusString. - - - do not include system headers outside of dbus-memory.c, - dbus-sysdeps.c, and other places where they are already - included. This gives us one place to audit all external - dependencies on features in libc, etc. - - - do not use libc features that are "complicated" - and may contain security holes. For example, you probably shouldn't - try to use regcomp() to compile an untrusted regular expression. - Regular expressions are just too complicated, and there are many - different libc's out there. - - - we need to design the message bus daemon (and any similar features) - to use limited privileges, run in a chroot jail, and so on. - -http://vsftpd.beasts.org/ has other good security suggestions. - -Coding Style -=== - - - The C library uses GNU coding conventions, with GLib-like - extensions (e.g. lining up function arguments). The - Qt wrapper uses KDE coding conventions. - - - Write docs for all non-static functions and structs and so on. try - "doxygen Doxyfile" prior to commit and be sure there are no - warnings printed. - - - All external interfaces (network protocols, file formats, etc.) - should have documented specifications sufficient to allow an - alternative implementation to be written. Our implementation should - be strict about specification compliance (should not for example - heuristically parse a file and accept not-well-formed - data). Avoiding heuristics is also important for security reasons; - if it looks funny, ignore it (or exit, or disconnect). - -Development -=== - -D-Bus uses Git as its version control system. The main repository is -hosted at git.freedesktop.org/dbus/dbus. To clone D-Bus, execute the -following command: - - git clone git://git.freedesktop.org/dbus/dbus -OR - git clone git.freedesktop.org:dbus/dbus - -The latter form is the one that allows pushing, but it also requires -an SSH account on the server. The former form allows anonymous -checkouts. - -D-Bus development happens in two branches in parallel: the current -stable branch, with an even minor number (like 1.0, 1.2 and 1.4), and -the next development branch, with the next odd number. - -The stable branch is named after the version number itself (dbus-1.2, -dbus-1.4), whereas the development branch is simply known as "master". - -When making a change to D-Bus, do the following: - - - check out the earliest branch of D-Bus that makes sense to have - your change in. If it's a bugfix, it's normally the current stable - branch; if it's a feature, it's normally the "master" branch. If - you have an important security fix, you may want to apply to older - branches too. - - - for large changes: - if you're developing a new, large feature, it's recommended - to create a new branch and do your development there. Publish - your branch at a suitable place and ask others to help you - develop and test it. Once your feature is considered finalised, - you may merge it into the "master" branch. - -- for small changes: - . make your change to the source code - . execute tests to guarantee that you're not introducing a - regression. For that, execute: make check - (if possible, add a new test to check the fix you're - introducing) - . commit your change using "git commit" - in the commit message, write a short sentence describing what - you did in the first line. Then write a longer description in - the next paragraph(s). - . repeat the previous steps if necessary to have multiple commits - - - extract your patches and send to the D-Bus mailing list for - review or post them to the D-Bus Bugzilla, attaching them to a bug - report. To extract the patches, execute: - git format-patch origin/master - - - once your code has been reviewed, you may push it to the Git - server: - git push origin my-branch:remote - OR - git push origin dbus-X.Y - OR - git push origin master - (consult the Git manual to know which command applies) - - - (Optional) if you've not worked on "master", merge your changes to - that branch. If you've worked on an earlier branch than the current - stable, merge your changes upwards towards the stable branch, then - from there into "master". - - . execute: git checkout master - . ensure that you have the latest "master" from the server, update - if you don't - . execute: git merge dbus-X.Y - . if you have any conflicts, resolve them, git add the conflicted - files and then git commit - . push the "master" branch to the server as well - - Executing this merge is recommended, but not necessary for all - changes. You should do this step if your bugfix is critical for the - development in "master", or if you suspect that conflicts will arise - (you're usually the best person to resolve conflicts introduced by - your own code), or if it has been too long since the last merge. - - -Making a release -=== - -To make a release of D-Bus, do the following: - - - check out a fresh copy from Git - - - verify that the libtool versioning/library soname is - changed if it needs to be, or not changed if not - - - update the file NEWS based on the git history - - - verify that the version number of dbus-specification.xml is - changed if it needs to be; if changes have been made, update the - release date in that file - - - update the AUTHORS file with "make update-authors" if necessary - - - the version number should have major.minor.micro, even - if micro is 0, i.e. "1.0.0" and "1.2.0" not "1.0"/"1.2"; the micro - version should be even for releases, and odd for intermediate snapshots - - - "make distcheck" (DO NOT just "make dist" - pass the check!) - - - if make distcheck fails, fix it. - - - once distcheck succeeds, "git commit -a". This is the version - of the tree that corresponds exactly to the released tarball. - - - tag the tree with "git tag -s -m 'Released X.Y.Z' dbus-X.Y.Z" - where X.Y.Z is the version of the release. If you can't sign - then simply created an unsigned annotated tag: - "git tag -a -m 'Released X.Y.Z' dbus-X.Y.Z". - - - bump the version number up in configure.ac (so the micro version is odd), - and commit it. Make sure you do this *after* tagging the previous - release! The idea is that git has a newer version number - than anything released. Similarly, bump the version number of - dbus-specification.xml and set the release date to "(not finalized)". - - - merge the branch you've released to the chronologically-later - branch (usually "master"). You'll probably have to fix a merge - conflict in configure.ac (the version number). - - - push your changes and the tag to the central repository with - git push origin master dbus-X.Y dbus-X.Y.Z - - - scp your tarball to freedesktop.org server and copy it to - dbus.freedesktop.org:/srv/dbus.freedesktop.org/www/releases/dbus/dbus-X.Y.Z.tar.gz. - This should be possible if you're in group "dbus" - - - Update the online documentation with `make -C doc maintainer-upload-docs`. - - - update the wiki page http://www.freedesktop.org/Software/dbus by - adding the new release under the Download heading. Then, cut the - link and changelog for the previous that was there. - - - update the wiki page - http://www.freedesktop.org/Software/DbusReleaseArchive pasting the - previous release. Note that bullet points for each of the changelog - items must be indented three more spaces to conform to the - formatting of the other releases there. - - - post to dbus@lists.freedesktop.org announcing the release. - - -Making a ".0" stable release -=== - -We create a branch for each stable release. The branch name should be -dbus-X.Y which is a branch that has releases versioned X.Y.Z; -changes on a stable branch should be limited to significant bug fixes. - -Because we won't make minor changes like keeping up with the latest -deprecations on a stable branch, stable branches should turn off the -gcc warning for deprecated declarations (e.g. see commit 4ebb275ab7). - -Be extra-careful not to merge master (or any branch based on master) into a -stable branch. - -To branch: - git branch dbus-X.Y -and upload the branch tag to the server: - git push origin dbus-X.Y - -To develop in this branch: - git checkout dbus-X.Y - -Environment variables -=== - -These are the environment variables that are used by the D-Bus client library - -DBUS_VERBOSE=1 -Turns on printing verbose messages. This only works if D-Bus has been -compiled with --enable-verbose-mode - -DBUS_MALLOC_FAIL_NTH=n -Can be set to a number, causing every nth call to dbus_alloc or -dbus_realloc to fail. This only works if D-Bus has been compiled with ---enable-tests. - -DBUS_MALLOC_FAIL_GREATER_THAN=n -Can be set to a number, causing every call to dbus_alloc or -dbus_realloc to fail if the number of bytes to be allocated is greater -than the specified number. This only works if D-Bus has been compiled with ---enable-tests. - -DBUS_TEST_MALLOC_FAILURES=n -Many of the D-Bus tests will run over and over, once for each malloc -involved in the test. Each run will fail a different malloc, plus some -number of mallocs following that malloc (because a fair number of bugs -only happen if two or more mallocs fail in a row, e.g. error recovery -that itself involves malloc). This env variable sets the number of -mallocs to fail. -Here's why you care: If set to 0, then the malloc checking is skipped, -which makes the test suite a heck of a lot faster. Just run with this -env variable unset before you commit. - -Tests -=== - -These are the test programs that are built if dbus is compiled using ---enable-tests. - -dbus/dbus-test -This is the main unit test program that tests all aspects of the D-Bus -client library. - -dbus/bus-test -This it the unit test program for the message bus. - -test/break-loader -A test that tries to break the message loader by passing it randomly -created invalid messages. - -test/name-test/* -This is a suite of programs which are run with a temporary session bus. -If your test involves multiple processes communicating, your best bet -is to add a test in here. - -"make check" runs all the deterministic test programs (i.e. not break-loader). - -"make lcov-check" is available if you configure with --enable-compiler-coverage -and gives a complete report on test suite coverage. - -Patches -=== - -Please file them at http://bugzilla.freedesktop.org under component -dbus, and also post to the mailing list for discussion. The commit -rules are: - - - for fixes that don't affect API or protocol, they can be committed - if any one qualified reviewer other than patch author - reviews and approves - - - for fixes that do affect API or protocol, two people - in the reviewer group have to review and approve the commit, and - posting to the list is definitely mandatory - - - if there's a live unresolved controversy about a change, - don't commit it while the argument is still raging. - - - at their discretion, members of the reviewer group may also commit - branches/patches under these conditions: - - - the branch does not add or change API, ABI or wire-protocol - - - the branch solves a known problem and is covered by the regression tests - - - there are no objections from the rest of the review group within - a week of the patches being attached to Bugzilla - - - the committer gets a positive review on Bugzilla from someone they - consider qualified to review the change (e.g. a colleague with D-Bus - experience; not necessarily a member of the reviewer group) - - - regardless of reviews, to commit a patch: - - make check must pass - - the test suite must be extended to cover the new code - as much as reasonably feasible (see Tests above) - - the patch has to follow the portability, security, and - style guidelines - - the patch should as much as reasonable do one thing, - not many unrelated changes - No reviewer should approve a patch without these attributes, and - failure on these points is grounds for reverting the patch. - -The reviewer group that can approve patches: - -Havoc Pennington <hp@pobox.net> -Michael Meeks <michael.meeks@novell.com> -Alexander Larsson <alexl@redhat.com> -Zack Rusin <zack@kde.org> -Joe Shaw <joe@assbarn.com> -Mikael Hallendal <micke@imendio.com> -Richard Hult <richard@imendio.com> -Owen Fraser-Green <owen@discobabe.net> -Olivier Andrieu <oliv__a@users.sourceforge.net> -Colin Walters <walters@verbum.org> -Thiago Macieira <thiago@kde.org> -John Palmieri <johnp@redhat.com> -Scott James Remnant <scott@netsplit.com> -Will Thompson <will.thompson@collabora.co.uk> -Simon McVittie <simon.mcvittie@collabora.co.uk> -David Zeuthen <davidz@redhat.com> |