Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Apr 2015 23:45:02 +0200
From:      Miroslav Lachman <000.fbsd@quip.cz>
To:        bdrewery@FreeBSD.org
Cc:        FreeBSD Ports <ports@freebsd.org>
Subject:   poudriere-3.1.4 options not working as expected
Message-ID:  <553FFF5E.5070600@quip.cz>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?553FFF5E.5070600>