summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--recruiters/quizzes/developer-quiz.txt16
-rw-r--r--recruiters/quizzes/ebuild-maintainer-quiz.txt206
2 files changed, 110 insertions, 112 deletions
diff --git a/recruiters/quizzes/developer-quiz.txt b/recruiters/quizzes/developer-quiz.txt
index 1c6f6ff..5316185 100644
--- a/recruiters/quizzes/developer-quiz.txt
+++ b/recruiters/quizzes/developer-quiz.txt
@@ -1,12 +1,12 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
+# Copyright 2023 Joonas Niilola
# This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
# https://creativecommons.org/licenses/by-sa/3.0/
Non-ebuild developer quiz
-Revision 1.14 - 07 January 2019
Answer in whatever length necessary for completeness.
-Support your answers with documentation links but avoid redundand citation.
+Support your answers with documentation links but avoid redundant citation.
Consult your mentor if you're unable to locate answers.
Do not discuss these questions and their answers in public. Do not publish or
@@ -68,18 +68,16 @@ docs: devmanual
*** Please also submit the following information:
-* Please make sure your OpenPGP public keyblock is available on the keyserver network
- hkp://pool.sks-keyservers.net and provide the fingerprint of it below
- You should sign your quizzes with your key
- https://wiki.gentoo.org/wiki/Project:Gentoo-keys/Generating_GLEP_63_based_OpenPGP_keys
- https://wiki.gentoo.org/wiki/GnuPG
+* If you have an existing OpenPGP key available in a public keyserver be sure to
+ sign your quiz with it and link the keyserver in use. If not, please attach
+ your key while sending the quiz.
* SSH public key (if you do not have one, please create one)
https://wiki.gentoo.org/wiki/Project:Infrastructure/SSH_Key_Guide
If you don't paste your key inline, make sure it's signed by your
gpg key.
-* Date of birth
+* Age
* Where do you live (Town/City, Country)
diff --git a/recruiters/quizzes/ebuild-maintainer-quiz.txt b/recruiters/quizzes/ebuild-maintainer-quiz.txt
index aa5b1ed..16af843 100644
--- a/recruiters/quizzes/ebuild-maintainer-quiz.txt
+++ b/recruiters/quizzes/ebuild-maintainer-quiz.txt
@@ -1,21 +1,24 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
# Copyright 2016-2019 Amy Liffey
-# Copytight 2016-2019 Mikle Kolyada
+# Copyright 2016-2021 Mikle Kolyada
+# Copyright 2021-2023 Joonas Niilola
# This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
# https://creativecommons.org/licenses/by-sa/3.0/
Ebuild maintainer quiz
-Revision 2.22.8 - 7 January 2018
Answer in whatever length necessary for completeness.
-Support your answers with documentation links but avoid redundand citation.
+Support your answers with documentation links and your personal contributions:
+show your commits / pull requests which have dealt with subjects related to
+question at hand, reference PMS where appropriate, and rather provide your
+thought process instead of copying direct page content from the devmanual.
Consult your mentor if you're unable to locate answers.
Do not discuss these questions and their answers in public. Do not publish or
share any private conversation with your mentor or recruiter.
-*** PART I Organizational structure questions
+*** PART I Organizational structure questions
1. When is it appropriate to post to the following mailing lists: gentoo-core,
gentoo-dev, gentoo-dev-announce, gentoo-project? Provide examples of topics
@@ -52,8 +55,8 @@ docs: devmanual, GLEPs
docs: wiki
-*** PART II Ebuild technical/policy questions
+*** PART II Ebuild technical/policy questions
1. You change a package's ebuild to install an init script. Previously,
the package had no init script at all.
@@ -69,14 +72,10 @@ docs: devmanual
docs: devmanual
-3.a. What is repoman? When should it be used? How would you check for QA
- problems with repoman?
-
-docs: devmanual, wiki
-
-3.b. A user submits a brand-new ebuild for a new package. What are
- the proper steps (including repoman commands) to take to add
- this ebuild to ::gentoo repository? What should be in the commit message?
+3. A user submits a brand new ebuild for a new package. What are the proper
+ steps, including testing the contribution and checking for QA problems, to
+ add the ebuild to the ::gentoo repository? What should the commit's summary
+ look like, and how do you retain the authorship?
docs: devmanual, wiki
@@ -108,113 +107,112 @@ docs: devmanual
docs: devmanual
-9. You are creating an ebuild for a package whose license does not match
- any of the licenses in the 'licenses' directory. What is the proper
- course of action?
-
-docs: GLEPs, devmanual
-
-10.a. You wish to have an ebuild marked "stable," taking it out of
- ~ARCH KEYWORDS. It's a library. What steps should be taken to do so?
+9.a. You wish to have an ebuild marked "stable," taking it out of
+ ~ARCH KEYWORDS. It's a library. What steps should be taken to do so?
docs: devmanual
-10.b. You wish to mark an ebuild "testing," putting it into ~ARCH
- KEYWORDS. It was previously hard-masked in package.mask.
- What should be done prior to doing so?
+9.b. You wish to mark an ebuild "testing," putting it into ~ARCH
+ KEYWORDS. It was previously hard-masked in package.mask.
+ What should be done prior to doing so?
docs: devmanual
-10.c. You wish to have an ebuild marked "stable." It is a popular
- application, but no other ebuilds depend on it.
- How would you handle it?
+9.c. You wish to have an ebuild marked "stable." It is a popular
+ application, but no other ebuilds depend on it.
+ How would you handle it?
docs: devmanual
-11. What is the difference between different dependency classes (DEPEND,
- RDEPEND and BDEPEND)? When should each of them be used? Provide examples.
+10. List all available dependency classes (DEPEND, RDEPEND etc) and explain
+ their individual purpose. Provide examples of their typical uses.
-docs: devmanual
+docs: devmanual, PMS
-12. You wish to make a change to an ebuild, but you checked the commit
+11. You wish to make a change to an ebuild, but you checked the commit
messages and metadata.xml and it appears to be maintained by someone
else. How should you proceed?
docs: devmanual
-13.a. You find a situation in which an eclass may be useful. What should
+12.a. You find a situation in which an eclass may be useful. What should
you do before implementing such an eclass?
-13.b. What is EXPORT_FUNCTIONS? How should it be used?
+12.b. What is EXPORT_FUNCTIONS? How should it be used?
Provide examples of its usage.
docs: devmanual
-14. How can you verify an ebuild has correct run time dependencies
+13. How can you verify an ebuild has correct run time dependencies
(RDEPEND) for all installed binaries? Provide an example tool calls.
docs:
-15. How do you deal with a situation in which an ebuild tries to
+14. How do you deal with a situation in which an ebuild tries to
install a file that is already installed by another package?
docs: devmanual
-16. Most configure scripts attempt to automatically determine
+15. Most configure scripts attempt to automatically determine
settings based on the host system. When should the ebuild
specifically override settings?
docs: devmanual
-17. What is the EAPI version? How does it affect ebuilds and eclasses?
+16. What is the EAPI version? How does it affect ebuilds and eclasses?
docs: devmanual, PMS
-18. What is the procedure for removing packages from the tree?
+17. What is the procedure for removing packages from the tree?
docs: devmanual
-19. How do keywording and stabilization policies for less often used arches
- like ia64 or mips differ from the more common ones like amd64?
+18. How do keywording and stabilization policies for less often used arches
+ like ppc64 or mips differ from the more common ones like amd64?
docs: devmanual
-20. You are adding a new major version to the tree that requires users to
+19. You are adding a new major version to the tree that requires users to
follow an upgrade guide. How will you communicate this to the users?
docs: GLEPs
-21. What are sub-slots and their binding operators? What problem do they
+20. What are sub-slots and their binding operators? What problem do they
solve in gentoo and when should be used? Provide examples.
docs: wiki, portage documentation
-22.a. You are about to add a new package. How would you determine the correct
+21.a. You are about to add a new package. How would you determine the correct
LICENSE? What sources should be consulted for license information,
and which take precedence?
docs: devmanual
-22.b. The package frobnicate has a 'COPYING' that exactly matches GPL-3.
- However, all the source files have the following copyright notice:
+21.b. You are creating an ebuild for a package whose license does not match
+ any of the licenses in the 'licenses' directory. What is the proper
+ course of action?
+
+docs: GLEPs, devmanual
+21.c. The package frobnicate has a 'COPYING' that exactly matches GPL-3.
+ However, all the source files have the following copyright notice:
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
What should be the value of LICENSE variable for this package?
docs: devmanual
-22.c. The package installs both frobnicate executable (licensed GPL-3+)
+21.d. The package installs both frobnicate executable (licensed GPL-3+)
and libfrobnicate shared library (licensed LGPL-2.1+). What should
be the correct value of LICENSE for this package?
docs: devmanual
-22.d. The package installs frobnicate executable whose sources indicate GPL-3+
+21.e. The package installs frobnicate executable whose sources indicate GPL-3+
license. However, you notice that the build process creates a local
static libport.a library that is used to build a part of frobnicate
but is not meant to be installed. The sources of libport.a indicate
@@ -222,19 +220,23 @@ docs: devmanual
docs: devmanual
-22.e. A MIT-licensed package includes a CDDL-licensed script. The script is
+21.f. A MIT-licensed package includes a CDDL-licensed script. The script is
not installed but it is used during build to generate a Makefile. What
should be the value of LICENSE for this package?
-docs: common sense
+docs: devmanual
-22.f. A BSD-licensed package installs a frobnicate executable. However, after
+21.g. A BSD-licensed package installs a frobnicate executable. However, after
inspecting the package sources you notice that it uses a single source
file whose license indicates GPL-2+. What would you do? What could be
the LICENSE for this package?
-*** PART ||| Code questions
+21.h. You are writing an ebuild for a package written in either Rust or Go
+ programming language, how do you approach writing correct LICENSE value
+ in your ebuild? The main project is licensed as MIT.
+
+*** PART ||| Code questions
1. You are writing an ebuild for the foomatic package. Upstream calls
the current version "1.3-7b" (but this is _not_ a beta release).
@@ -247,8 +249,7 @@ docs: common sense
docs: devmanual
-2. You have a patch for foomatic which adds TLS support using either
- OpenSSL or LibreSSL libraries.
+2. You have a patch for foomatic which adds TLS support using OpenSSL.
The dependency is optional and controlled at build time.
Assuming that foomatic uses an autotools based build system
provide most probable changes required in an EAPI=7 ebuild.
@@ -305,50 +306,50 @@ docs: devmanual
docs: devmanual
-6.e
- # If USE=fnord is enabled, make extra targets:
- use fnord && ( emake fnordification || die "it broke" )
+7. What is the 'Gentoo way' of globally setting environment variables
+ for all users? How is this accomplished in ebuilds?
docs: devmanual
+8. Which directory should manual (man) pages be in and how should they
+ be installed from an ebuild?
-7. You're writing an ebuild and init script for a server application
- that needs networking to be available when started and can also
- use a system logger if one is available. How should this be
- written in the init script?
-
-docs: devmanual
-
-8. What is the 'Gentoo way' of allowing the user to pass other options
- to the previously mentioned server application?
-
-docs: devmanual
+docs: PMS
-9. What is the 'Gentoo way' of globally setting environment variables
- for all users?
+9. On Gentoo Linux systems, what is the purpose of /usr/local/bin?
docs: devmanual
-10. Which directory should manual (man) pages be in and how should they
- be installed from an ebuild?
+10. When should you use || die "msg" with commands/functions? Would you
+ rewrite the following snippets, and if yes, how?
-docs: PMS
+10.a.
+ use fnord && ( emake fnordification && cp fnordification bar/ || die )
-11. On Gentoo Linux systems, what is the purpose of /usr/local/bin?
+10.b.
+ emake docs || die
-docs: devmanual
+10.c.
+ my_custom_function() {
+ cd "${S}"/ext1
+ ./ext1.sh
+ cd "${S}"/ext2
+ ./ext2.sh
+ }
-12. When should you use || die "msg" with commands/functions?
- Could || die always be moved inside those functions/commands?
+ src_prepare() {
+ default
+ my_custom_function || die
+ }
docs: devmanual
-13.a. You are committing a new package to the tree. What will you have in
+11.a. You are committing a new package to the tree. What will you have in
the KEYWORDS variable?
docs: devmanual
-13.b. You are bumping foomatic's ebuild from version 1.2 to version
+11.b. You are bumping foomatic's ebuild from version 1.2 to version
1.3. The new release contains bugfixes and new
functionality. The current KEYWORDS for 1.2 are
"x86 sparc ~mips amd64" -- what will KEYWORDS be for
@@ -356,7 +357,7 @@ docs: devmanual
docs: devmanual
-13.c. You are bumping foomatic's ebuild from version 1.3 to 1.4. The
+11.c. You are bumping foomatic's ebuild from version 1.3 to 1.4. The
new release extends functionality and introduces a new
dependency on libfnord version 1.2 or later. The
KEYWORDS for foomatic-1.3 are "x86 sparc ~mips amd64"
@@ -365,7 +366,7 @@ docs: devmanual
docs: devmanual
-13.d. You are bumping foomatic's ebuild from version 1.4 to 1.5. This
+11.d. You are bumping foomatic's ebuild from version 1.4 to 1.5. This
release introduces new optional support for the libgerbil
library, which you are controlling via the gerbil global
USE flag. Unfortunately libgerbil is full of code which
@@ -374,33 +375,34 @@ docs: devmanual
docs: devmanual
-13.e. You are bumping foomatic's ebuild from version 1.5 to version
+11.e. You are bumping foomatic's ebuild from version 1.5 to version
2.0. This new version is a massive rewrite which introduces
huge changes to the build system, the required libraries
and how the code works. What will you do for KEYWORDS here?
docs: devmanual
-14. Your package fails to build with older versions of GCC (e.g. GCC < 4.7).
- How do you ensure that the user uses an appropriate compiler to build the
- package? Under which circumstances should you avoid this check and how?
+12. Your package fails to build after a minor GCC update, e.g. from 9.2 to 9.3.
+ How will you handle this? List possible methods and write ebuild code
+ example(s).
docs: devmanual
-15. When should USE flags be used? What are the cases where they should be
+13. When should USE flags be used? What are the cases where they should be
avoided? Consider the following examples. Explain what is wrong in them
and how would you improve them.
docs: devmanual, common sense
-15.a. A large C++ application with long build time has:
+13.a. A large C++ application with long build time has a USE flag with no other
+ functionality in the ebuild except:
- # libcxx can be optionally used at run time via -stdlib=libc++
- IUSE="libcxx"
+ # ddcutil can be utilized via dlopen()
+ IUSE="ddcutil"
DEPEND=""
- RDEPEND="libcxx? ( dev-libs/libcxx )"
+ RDEPEND="ddcutil? ( app-misc/ddcutil )"
-15.b. A large package with long build time has:
+13.b. A large package with long build time has:
inherit bash-completion-r1
IUSE="bash-completion"
@@ -410,7 +412,7 @@ docs: devmanual, common sense
use bash-completion && dobashcomp contrib/bash-completion/foo
}
-15.c. A package unconditionally installs 'foobar' executable which links
+13.c. A package unconditionally installs 'foobar' executable which links
to libbar. The ebuild maintainer wanted to make it optional.
He used the following code:
@@ -425,7 +427,7 @@ docs: devmanual, common sense
fi
}
-15.d. A package has numerous configure switches which control a number
+13.d. A package has numerous configure switches which control a number
of optional features. All of them are enabled by default. They do
not have any external dependencies, and do not affect the package
size significantly. The ebuild author has added over 20 local USE
@@ -435,18 +437,16 @@ docs: devmanual, common sense
*** Please also submit the following information:
-* Please make sure your OpenPGP public keyblock is available on the keyserver network
- hkp://pool.sks-keyservers.net and provide the fingerprint of it below
- You should sign your quizzes with your key
- https://wiki.gentoo.org/wiki/Project:Gentoo-keys/Generating_GLEP_63_based_OpenPGP_keys
- https://wiki.gentoo.org/wiki/GnuPG
+* If you have an existing OpenPGP key available in a public keyserver be sure to
+ sign your quiz with it and link the keyserver in use. If not, please attach
+ your key while sending the quiz.
* SSH public key (if you do not have one, please create one)
https://wiki.gentoo.org/wiki/Project:Infrastructure/SSH_Key_Guide
If you don't paste your key inline, make sure it's signed by your
gpg key.
-* Date of birth
+* Age
* Where do you live (Town/City, Country)