poudriere-3.1.4 options not working as expected
Miroslav Lachman
000.fbsd at quip.cz
Tue Apr 28 21:52:49 UTC 2015
I am trying to set up own pkg repository for our servers. We have
different FreeBSD versions, arch and roles of servers, so I am in the
stage of finding common set of ports, options etc.
For example. We have "projectA" with 3 webservers with simmilar set o
installed ports and used options, but one of them is also mailserver -
so it have some additional ports.
Twho servers are on 10.1-RELEASE and the third is on 8.4-RELEASE
I created to files with list of origins: projectA and projectA-server3
projectA is a list of common ports for all 3 servers
projectA-server3 is a list of additional ports for the third server -
mailserver
I configured options for common set "projectA" with command
# poudriere options -z projectA -p default -f
/usr/local/etc/poudriere.d/pkglists/projectA
This first problem is that it shows me dialogs for additional options
which I deselect in previous dialog. For example I configured
"memcached" without SASL, pecl-memcached without SASL, "libmemcached"
without SASL but it still asks me to configure Cyrus-SASL options
┌───────────────────────────── memcached-1.4.22
───────────────────────────────┐
│
┌──────────────────────────────────────────────────────────────────────────┐
│
│ │ [ ] DOCS Build and/or install
documentation │ │
│ │+[ ] DTRACE Enable dtrace
probes │ │
│ │+[ ] SASL Enable SASL
Authentication │ │
┌──────────────────────────── libevent2-2.0.22_1
──────────────────────────────┐
│
┌──────────────────────────────────────────────────────────────────────────┐
│
│ │+[ ] OPENSSL SSL/TLS support via
OpenSSL │ │
│ │+[x] THREADS Threading
support │ │
┌────────────────────────── pecl-memcached-2.2.0_3
────────────────────────────┐
│
┌──────────────────────────────────────────────────────────────────────────┐
│
│ │+[ ] IGBINARY Binary serializer
support │ │
│ │+[ ] SASL SASL authentication
support │ │
┌─────────────────────────── libmemcached-1.0.18
──────────────────────────────┐
│
┌──────────────────────────────────────────────────────────────────────────┐
│
│ │+[ ] DEBUG Build with debugging
support │ │
│ │+[ ] DTRACE Enable DTrace
support │ │
│ │+[x] MEMASLAP Load generation and benchmark
tool │ │
│ │+[ ] SASL SASL authentication
support │ │
│ │─────────────────────────────────── HASH
─────────────────────────────────│ │
│ │+[x] FNV64 Enable fnv64
hashing │ │
│ │+[ ] HSIEH Enable hsieh
hashing │ │
│ │+[x] MURMUR Enable murmur
hashing │ │
┌─────────────────────────── cyrus-sasl-2.1.26_9
──────────────────────────────┐
│
┌──────────────────────────────────────────────────────────────────────────┐
│
│ │+[ ] ALWAYSTRUE the alwaystrue password
verifier │ │
│ │+[ ] AUTHDAEMOND use of
authdaemon │ │
│ │ [ ] DOCS Build and/or install
documentation │ │
│ │+[ ] KEEP_DB_OPEN Keep handle to Berkeley DB
open │ │
│ │+[ ] OBSOLETE_CRAM_ATTR cmusaslsecretCRAM-MD5
property │ │
│ │+[ ] BDB Berkeley DB
support │ │
│ │+[ ] MYSQL MySQL database
support │ │
│ │+[ ] PGSQL PostgreSQL database
support │ │
│ │─────────────────────────────────── MECH
─────────────────────────────────│ │
│ │+[ ] CRAM CRAM-MD5
authentication │ │
│ │+[ ] DIGEST DIGEST-MD5
authentication │ │
│ │+[x] LOGIN LOGIN
authentication │ │
│ │+[ ] NTLM NTLM
authentication │ │
│ │+[ ] OTP OTP
authentication │ │
│ │+[x] PLAIN PLAIN
authentication │ │
│ │+[ ] SCRAM SCRAM
authentication │ │
│ │───────────────────────── SQLite database support
────────────────────────│ │
│ │+( ) SQLITE2 SQLite 2
database │ │
│ │+( ) SQLITE3 SQLite 3 database
support │ │
Options in files are stored right (UNSET+=SASL)
# cat
/usr/local/etc/poudriere.d/projectA-options/databases_libmemcached/options
# This file is auto-generated by 'make config'.
# Options for libmemcached-1.0.18
_OPTIONS_READ=libmemcached-1.0.18
_FILE_COMPLETE_OPTIONS_LIST=DEBUG DTRACE MEMASLAP SASL FNV64 HSIEH MURMUR
OPTIONS_FILE_UNSET+=DEBUG
OPTIONS_FILE_UNSET+=DTRACE
OPTIONS_FILE_SET+=MEMASLAP
OPTIONS_FILE_UNSET+=SASL
OPTIONS_FILE_SET+=FNV64
OPTIONS_FILE_UNSET+=HSIEH
OPTIONS_FILE_SET+=MURMUR
Package set is built without SASL (no cyrus-sasl package in
/vol0/poudriere/data/packages/10_1_amd64-default-projectA/All/)
limbmemcached was built with
"options": {
"DEBUG": "off",
"DTRACE": "off",
"MEMASLAP": "on",
"SASL": "off",
"FNV64": "on",
"HSIEH": "off",
"MURMUR": "on"
}
So why poudriere options did ask me for cyrus-sasl option if it is not
needed and not built?
The second problem is that I tried to combine two ports lists together
for projectA-server3 and set options for server3 this way:
# poudriere options -z projectA -p default -j 8_4_amd64 -f
/usr/local/etc/poudriere.d/pkglists/projectA-server3
I was expecting this command to asks me for an options only for this
list of additional ports and it did. (stored in
8_4_amd64-projectA-options) So far so good.
But I need to build all ports (from both lists) for this machine
(server3) because it is 8.4 and not 10.1, so I used command
# poudriere bulk -v -j 8_4_amd64 -z projectA -p default -f
/usr/local/etc/poudriere.d/pkglists/projectA -f
/usr/local/etc/poudriere.d/pkglists/projectA-server3
I expected it to use common options from directory
poudriere.d/projectA-options and additional options from
poudriere.d/8_4_amd64-projectA-options but all packages not having
options in poudriere.d/8_4_amd64-projectA-options (but having them in
poudriere.d/projectA-options) were built with default options.
libmemcached was built with SASL
"options": {
"DEBUG": "off",
"DTRACE": "off",
"MEMASLAP": "on",
"SASL": "on",
"FNV64": "on",
"HSIEH": "off",
"MURMUR": "on"
}
After reading the docs on
https://fossil.etoilebsd.net/poudriere/doc/trunk/doc/poudriere.8.wiki#x437573746f6d206275696c64206f7074696f6e73
I expected poudriere to combine options from both directories together.
Which it didn't and after reading the docs again and again... the word
"mounting" is what I overlooked on the first reading. So now I read it
as "only the first found options directory is mounted".
Is it possible to use some kind of union mount / unionfs to overlay all
found directories according to CUSTOMISATION order?
And in the meantime - is it possible to use multiple -f for "poudriere
options" command? As it is not written in docs, I didn't try it and
thought it is not possible and there is not need to use it if
directories are combined.
Because now I don't have a way to store options in
8_4_amd64-projectA-options directory by one "poudriere options" command.
Or am I doing something wrong?
Should I use symlinks from projectA-options to
8_4_amd64-projectA-options for each port directory to share options
between these two build sets? Or copy them from common directory
(projectA-options) to the other (8_4_amd64-projectA-options)?
What is the best way to maintain this kind of configuration?
Thank you in advance and thanks for poudriere - really nice tool for
port builds!
Miroslav Lachman
More information about the freebsd-ports
mailing list