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
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "[email protected]"

Reply via email to