fail-dhcpd-build

GenPi64のイメージ作成中、

下記のエラーが出る。 なぜかdhcpcdのビルドに失敗する(再現性もある)

aarch64-unknown-linux-gnu-gcc -march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -march=native -O2 -pipe -std=c99 -DHAVE_CONFIG_H -DNDEBUG -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DINET -DARP -DARPING -DIPV4LL -DINET6 -DDHCP6 -DAUTH -DPLUGIN_DEV -I.. -I../src -I./crypt -c ../compat/strtou.c -o ../compat/strtou.o
make[1]: *** No rule to make target '/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/scripts', needed by 'all'.  Stop.
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1/src'
make: *** [Makefile:24: all] Error 2
 * ERROR: net-misc/dhcpcd-9.5.1::gentoo failed (compile phase):
 *   emake failed
 *
 * If you need support, post the output of `emerge --info '=net-misc/dhcpcd-9.5.1::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=net-misc/dhcpcd-9.5.1::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/build.log.gz'.
 * The ebuild environment file is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/environment'.
 * Working directory: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'
 * S: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'

 * Messages for package sys-apps/systemd-253.3-r1:

 * Unable to find kernel sources at /usr/src/linux
 * Unable to calculate Linux Kernel version for build, attempting to use running version
 *   CONFIG_CHECKPOINT_RESTORE:  is not set when it should be.
 * Please check to make sure these options are set correctly.
 * Failure to do so may cause unexpected problems.

 * Messages for package sys-apps/portage-3.0.49-r1:

 * Unable to find kernel sources at /usr/src/linux
 * Unable to calculate Linux Kernel version for build, attempting to use running version

 * Messages for package net-wireless/wpa_supplicant-2.10-r1:

 * Unable to find kernel sources at /usr/src/linux
 * Unable to calculate Linux Kernel version for build, attempting to use running version

 * Messages for package sys-process/atop-2.8.1:

 * Unable to find kernel sources at /usr/src/linux
 * Unable to calculate Linux Kernel version for build, attempting to use running version

 * Messages for package acct-group/cron-0-r1:

 * Adding group cron

 * Messages for package media-fonts/liberation-fonts-2.1.5:

 * The following fontconfig configuration files have been installed:
 *
 *   60-liberation.conf
 *
 * Use `eselect fontconfig` to enable/disable them.

 * Messages for package acct-group/plugdev-0-r2:

 * Adding group plugdev

 * Messages for package acct-group/crontab-0-r1:

 * Adding group crontab

 * Messages for package acct-group/gpio-0-r1:

 * Adding group gpio

 * Messages for package acct-group/nullmail-0-r1:

 * Adding group nullmail

 * Messages for package acct-group/spi-0-r1:

 * Adding group spi

 * Messages for package acct-group/i2c-0-r1:

 * Adding group i2c

 * Messages for package acct-group/ntp-0-r2:

 * Adding group ntp

 * Messages for package acct-user/cron-0-r1:

 * Adding user cron

 * Messages for package acct-user/nullmail-0-r1:

 * Adding user nullmail

 * Messages for package acct-user/ntp-0-r2:

 * Adding user ntp

 * Messages for package sys-boot/raspberrypi-firmware-1.20230106:

 * Please configure your ram setup by editing /boot/config.txt
 *
 * (Note: Above message is only printed the first time package is
 * installed. Please look at /usr/share/doc/raspberrypi-firmware-1.20230106/README.gentoo*
 * for future reference)

 * Messages for package dev-libs/ell-0.56:

 * Unable to find kernel sources at /usr/src/linux
 * Unable to calculate Linux Kernel version for build, attempting to use running version
 *   CONFIG_KEY_DH_OPERATIONS:   is not set when it should be.
 * Please check to make sure these options are set correctly.
 * Failure to do so may cause unexpected problems.

 * Messages for package sys-libs/pam-1.5.3:

 * Some software with pre-loaded PAM libraries might experience
 * warnings or failures related to missing symbols and/or versions
 * after any update. While unfortunate this is a limit of the
 * implementation of PAM and the software, and it requires you to
 * restart the software manually after the update.
 *
 * You can get a list of such software running a command like
 *   lsof / | grep -E -i 'del.*libpam\.so'
 *
 * Alternatively, simply reboot your system.
 * Could not set caps on '/sbin/unix_chkpwd' due to missing filesystem support:
 * * enable XATTR support for 'nfs' in your kernel (if configurable)
 * * mount the fs with the user_xattr option (if not the default)
 * * enable the relevant FS_SECURITY option (if configurable)

 * Messages for package sys-apps/util-linux-2.38.1-r2:

 * The mesg/wall/write tools have been disabled due to USE=-tty-helpers.

 * Messages for package dev-python/jinja-3.1.2:

 * For i18n support, please emerge dev-python/Babel.

 * Messages for package dev-python/lxml-4.9.2-r1:

 * Install additional packages for optional runtime features:
 *   dev-python/beautifulsoup4 for Support for BeautifulSoup as a parser backend
 *   dev-python/cssselect for Translates CSS selectors to XPath 1.0 expressions

 * Messages for package sys-apps/rpi-onetime-startup-1.0-r5:

 * The rpi-onetime-startup service has been added to your default runlevel.
 * You are running with the systemd USE flag set!
 * However, this package does not yet formally support systemd, so
 * you are on your own to get things working ><

 * Messages for package sys-apps/portage-3.0.49-r1:

 * Unable to find kernel sources at /usr/src/linux
 * Unable to calculate Linux Kernel version for build, attempting to use running version

 * Messages for package app-portage/gentoolkit-0.6.1-r3:

 *
 * For further information on gentoolkit, please read the gentoolkit
 * guide: https://wiki.gentoo.org/wiki/Gentoolkit
 *
 * Another alternative to equery is app-portage/portage-utils
 *
 * Additional tools that may be of interest:
 *
 *     app-admin/eclean-kernel
 *     app-portage/diffmask
 *     app-portage/flaggie
 *     app-portage/portpeek
 *     app-portage/smart-live-rebuild

 * Messages for package media-libs/fontconfig-2.14.2-r2:

 * Please make fontconfig configuration changes using `eselect
 * fontconfig`. Any changes made to /etc/fonts/fonts.conf will be
 * overwritten. If you need to reset your configuration to upstream
 * defaults, delete the directory /etc/fonts/conf.d/ and re-emerge
 * fontconfig.
 *
 * (Note: Above message is only printed the first time package is
 * installed. Please look at /usr/share/doc/fontconfig-2.14.2-r2/README.gentoo*
 * for future reference)

 * Messages for package net-dialup/ppp-2.5.0-r3:

 * Unable to find kernel sources at /usr/src/linux
 * Unable to calculate Linux Kernel version for build, attempting to use running version

 * Messages for package net-misc/dhcpcd-9.5.1:

 * ERROR: net-misc/dhcpcd-9.5.1::gentoo failed (compile phase):
 *   emake failed
 *
 * If you need support, post the output of `emerge --info '=net-misc/dhcpcd-9.5.1::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=net-misc/dhcpcd-9.5.1::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/build.log.gz'.
 * The ebuild environment file is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/environment'.
 * Working directory: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'
 * S: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'

 * Messages for package sys-apps/rpi-gpio-1.0.0-r1:

 * Adding all members of wheel to the gpio group

 * Messages for package sys-apps/rpi3-ondemand-cpufreq-1.1.1-r1:

 * Please run:
 *   rc-update add rpi3-ondemand sysinit
 * to enable on-demand CPU frequency scaling
 * You are running with the systemd USE flag set!
 * However, this package does not yet formally support systemd, so
 * you are on your own to get things working ><

 * Messages for package sys-process/iotop-0.6_p20230124:

 * Since Linux 5.14, sysctl kernel.task_delayacct should be enabled
 * This can be enabled by running: 'sysctl kernel.task_delayacct=1'
 * And can be made persistent by adding 'kernel.task_delayacct = 1' to /etc/sysctl.conf

 * Messages for package sys-block/zram-init-11.1:

 * To use zram-init, activate it in your kernel and add it to the default
 * runlevel:
 * rc-update add zram-init default
 * If you use systemd enable zram_swap, zram_tmp, and/or zram_var_tmp with
 * systemctl. You might need to modify the following file depending on the number
 * of devices that you want to create:
 * /etc/modprobe.d/zram.conf.
 * If you use the $TMPDIR as zram device with OpenRC, you should add zram-init to
 * the boot runlevel:
 * rc-update add zram-init boot
 * Still for the same case, you should add in the OpenRC configuration file for
 * the services using $TMPDIR the following line:
 * rc_need="zram-init"
 *
 * (Note: Above message is only printed the first time package is
 * installed. Please look at /usr/share/doc/zram-init-11.1/README.gentoo*
 * for future reference)

 * Messages for package sys-apps/rpi-spi-1.0.0-r2:

 * Adding all members of wheel to the spi group
 * To use the SPI interface, please ensure:
 *   dtparam=spi=on
 * is set in /boot/config.txt.

 * Messages for package sys-apps/rpi-i2c-1.0.0-r3:

 * Adding all members of wheel to the i2c group
 * The rpi-i2c service has been added to your boot runlevel.
 * To activate, and use the I2C interface, please set:
 *   dtparam=i2c_arm=on
 * in /boot/config.txt, and reboot.
 * You are running with the systemd USE flag set!
 * However, this package does not yet formally support systemd, so
 * you are on your own to get things working ><

 * Messages for package sys-apps/rpi3-init-scripts-2.0.0:

 * The first-boot root partition resizing service has been activated.
 * This service will run so long as the sentinel file /boot/dont_autoexpand_root
 * Does not exist.
 * To disable entirely, run:
 *   rc-update del autoexpand-root boot
 * You are running with the systemd USE flag set!
 * However, this package does not yet formally support systemd, so
 * you are on your own to get things working ><

 * Messages for package net-wireless/rpi3-wifi-regdom-1.1-r1:

 * The rpi3-wifi-regdom service has been added to your default runlevel.
 * Please check /etc/conf.d/rpi3-wifi-regdom, and set an
 * appropriate ISO / IEC 3166 alpha2 country code therein.
 * You are running with the systemd USE flag set!
 * However, this package does not yet formally support systemd, so
 * you are on your own to get things working ><

 * Messages for package app-portage/genup-1.0.29-r1:

 * emtee USE flag selected - patching script accordingly.
 * Ensuring eix syncs overlays and updates the metadata cache, and that
 * eix-update uses that cache, per:
 * https://wiki.gentoo.org/wiki/Overlay#eix_integration

 * Messages for package sys-process/htop-3.2.2:

 * Unable to find kernel sources at /usr/src/linux
 * Unable to calculate Linux Kernel version for build, attempting to use running version

 * Messages for package net-analyzer/mtr-0.95-r1:

 * Could not set caps on '/usr/sbin/mtr-packet' due to missing filesystem support:
 * * enable XATTR support for 'nfs' in your kernel (if configurable)
 * * mount the fs with the user_xattr option (if not the default)
 * * enable the relevant FS_SECURITY option (if configurable)

 * Messages for package net-misc/chrony-4.3-r5:

 * To enable seccomp in a stricter mode, please modify:
 * - /etc/conf.d/chronyd for OpenRC
 * - systemctl edit chronyd for systemd
 * to use -F 1 or -F -1 instead of -F 2 (see man chronyd)
 * By default, we now use -F 2 which is a baseline/minimal filter.

 * Messages for package app-misc/screen-4.9.0-r2:

 * Some dangerous key bindings have been removed or changed to more safe values.
 * We enable some xterm hacks in our default screenrc, which might break some
 * applications. Please check /etc/screenrc for information on these changes.
 * This revision changes the screen socket location to /tmp/screen

 * Messages for package app-admin/rsyslog-8.2304.0:

 * To create a default CA and certificates for your server and clients, run:
 *   emerge --config =rsyslog-8.2304.0
 * on your logging server. You can run it several times,
 * once for each logging client. The client certificates will be signed
 * using the CA certificate generated during the first run.
 * Please read
 *
 *   /usr/share/doc/rsyslog-8.2304.0/README.gentoo*
 *
 * for more details.

 * Regenerating GNU info directory index...
 * Processed 202 info files.

 * IMPORTANT: config file '/etc/profile' needs updating.
 * See the CONFIGURATION FILES and CONFIGURATION FILES UPDATE TOOLS
 * sections of the emerge man page to learn how to update config files.

 * IMPORTANT: 1 news items need reading for repository 'genpi64'.
 * IMPORTANT: 11 news items need reading for repository 'gentoo'.
 * Use eselect news read to view new items.

 * After world updates, it is important to remove obsolete packages with
 * emerge --depclean. Refer to `man emerge` for more information.
+ finish
+ ret=1
+ rm -f /mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/build/GenPi64Systemd/chroot/em-32233
+ exit 1
FATAL: JOB emerge_new_profile FAILED with exit code 1
FATAL: JOB gentoo-base FAILED with exit code 1
run complete.
k3s-stg-agent-e /mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist #

手動でchrootしてビルドできるかテスト

mountする必要があるのでrootで行う。

cd build/GenPi64Systemd/chroot
mount -o bind /dev dev
mount -t devpts devpts dev/pts/
mount -t proc none proc/
mount -t sysfs none  sys
chroot ./ /bin/bash

eix-updateを行い、eixでインストール状況を確認する。 この段階ではインストールされていない。

* net-misc/dhcpcd
     Available versions:  9.4.1 9.5.1 ~10.0.1 ~10.0.2 **9999*l {debug +embedded ipv6 privsep +udev}
     Homepage:            https://github.com/NetworkConfiguration/dhcpcd/ https://roy.marples.name/projects/dhcpcd/
     Description:         A fully featured, yet light weight RFC2131 compliant DHCP client

この時のプロファイルは下記だった。

# eselect profile show
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)
Current /etc/portage/make.profile symlink:
genpi64:default/linux/arm64/17.0/genpi64/systemd

ビルドに失敗する。 原因を調べてみると、いくつかのコマンドをchroot環境ではなくホスト側のコマンドを利用している。 例えばgitが入っていないので emerge –sync に失敗する。 このアプローチは時間がかかりそう。

# emerge  net-misc/dhcpcd
setlocale: unsupported locale setting
setlocale: unsupported locale setting

 * IMPORTANT: 1 news items need reading for repository 'genpi64'.
 * IMPORTANT: 11 news items need reading for repository 'gentoo'.
 * Use eselect news read to view new items.


These are the packages that would be merged:

Calculating dependencies  .... done!
Dependency resolution took 11.04 s.

[ebuild  N     ] net-misc/dhcpcd-9.5.1  USE="embedded ipv6 udev -debug -privsep"

>>> Verifying ebuild manifests
>>> Emerging (1 of 1) net-misc/dhcpcd-9.5.1::gentoo
>>> Failed to emerge net-misc/dhcpcd-9.5.1, Log file:
>>>  '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/build.log.gz'
>>> Jobs: 0 of 1 complete, 1 failed                 Load avg: 1.18, 1.11, 1.10
Error -3 while decompressing data: invalid block type

 * Messages for package net-misc/dhcpcd-9.5.1:

 * Fetch failed for 'net-misc/dhcpcd-9.5.1', Log file:
 *  '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/build.log.gz'

chroot.shを試す

rootになった状態でBuild.Dist直下のchroot.shを実行する。 環境変数SHELLが/bin/fishだとchroot環境でもfishを起動しようとして失敗するのでbashに変更する

SHELL="/bin/bash"
emerge net-misc/dhcpcd

下記のエラーが出る

aarch64-unknown-linux-gnu-gcc -march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -march=native -O2 -pipe -std=c99 -DHAVE_CONFIG_H -DNDEBUG -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DINET -DARP -DARPING -DIPV4LL -DINET6 -DDHCP6 -DAUTH -DPLUGIN_DEV -I.. -I../src -I./crypt -c ../compat/rb.c -o ../compat/rb.o
make[1]: *** No rule to make target '/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/scripts', needed by 'all'.  Stop.
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1/src'
make: *** [Makefile:24: all] Error 2
 * ERROR: net-misc/dhcpcd-9.5.1::gentoo failed (compile phase):
 *   emake failed
 *
 * If you need support, post the output of `emerge --info '=net-misc/dhcpcd-9.5.1::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=net-misc/dhcpcd-9.5.1::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/build.log.gz'.
 * The ebuild environment file is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/environment'.
 * Working directory: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'
 * S: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'
/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/environment: line 78: warning: setlocale: LC_CTYPE: cannot change locale (ja_JP.UTF-8): No such file or directory
/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/environment: line 81: warning: setlocale: LC_MESSAGES: cannot change locale (ja_JP.UTF-8): No such file or directory
/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/environment: line 84: warning: setlocale: LC_NUMERIC: cannot change locale (ja_JP.UTF-8): No such file or directory
/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/environment: line 87: warning: setlocale: LC_TIME: cannot change locale (ja_JP.UTF-8): No such file or directory

 * Messages for package net-misc/dhcpcd-9.5.1:

 * ERROR: net-misc/dhcpcd-9.5.1::gentoo failed (compile phase):
 *   emake failed
 *
 * If you need support, post the output of `emerge --info '=net-misc/dhcpcd-9.5.1::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=net-misc/dhcpcd-9.5.1::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/build.log.gz'.
 * The ebuild environment file is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/environment'.
 * Working directory: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'
 * S: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'

下記の環境変数でエラーメッセージが出ているので、あらかじめCとしてchroot.shを起動しなおす。

  • LC_CTYPE
  • LC_MESSAGES
  • LC_NUMERIC
  • LC_TIME
LC_ALL=C
LC_CTYPE=C
LC_MESSAGES=C
LC_NUMERIC=C
LC_TIME=C

ロケール回りのエラーは消えたが相変わらずビルドには失敗する

aarch64-unknown-linux-gnu-gcc -march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -march=native -O2 -pipe -std=c99 -DHAVE_CONFIG_H -DNDEBUG -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DINET -DARP -DARPING -DIPV4LL -DINET6 -DDHCP6 -DAUTH -DPLUGIN_DEV -I.. -I../src -I./crypt -c ../compat/rb.c -o ../compat/rb.o
make[1]: *** No rule to make target '/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/scripts', needed by 'all'.  Stop.
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1/src'
make: *** [Makefile:24: all] Error 2
 * ERROR: net-misc/dhcpcd-9.5.1::gentoo failed (compile phase):
 *   emake failed
 *
 * If you need support, post the output of `emerge --info '=net-misc/dhcpcd-9.5.1::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=net-misc/dhcpcd-9.5.1::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/build.log.gz'.
 * The ebuild environment file is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/environment'.
 * Working directory: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'
 * S: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'

 * Messages for package net-misc/dhcpcd-9.5.1:

 * ERROR: net-misc/dhcpcd-9.5.1::gentoo failed (compile phase):
 *   emake failed
 *
 * If you need support, post the output of `emerge --info '=net-misc/dhcpcd-9.5.1::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=net-misc/dhcpcd-9.5.1::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/build.log.gz'.
 * The ebuild environment file is located at '/var/tmp/portage/net-misc/dhcpcd-9.5.1/temp/environment'.
 * Working directory: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'
 * S: '/var/tmp/portage/net-misc/dhcpcd-9.5.1/work/dhcpcd-9.5.1'

エラーメッセージ中に

make[1]: *** No rule to make target '/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/scripts', needed by 'all'.  Stop.

このディレクトリがなぜdhcpdのmake targetになってしまっているのだろか?

エラーメッセージ中の

/va有r/tmp/portage/net-misc/dhcpcd-9.5.1/temp/environment

に有は環境変数が記載されており、

declare -x SCRIPTS="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/scripts"

で、このディレクトリが使われている。 gentooのビルドスクリプト中には$SCRIPTSはなかった。makefile側にあるかもしれない。 試しに環境変数SCRIPTSをunsetしてみるとビルドに成功する。

dhcpcdプロジェクトのMakefileで変数SCRIPTSが使われている。 https://github.com/NetworkConfiguration/dhcpcd/blob/df3e2a164203c976562ee11f71ec8fe6626507a1/src/Makefile#L48

恒久的な解決としては

  1. Build.Dist側のSCRIPTS変数の変数名にprefixつけてかぶらないようにするのが良いだろか。
  2. emergeする直前でSCRIPTSをunsetするのが良いだろうか?

1だがBuild.Distプロジェクトへの修正点が多い。 2の方が修正点が少なく影響が少なそう。unsetした変数を再度、戻す事は必要だろうか? 恐らく不要、子プロセスでunsetしても親プロセスの環境変数とは独立しているはず。 実験

親プロセス

#!/bin/bash

export MyVar="MyVar"
echo "Parent process: MyVar=$MyVar"
./child_script.sh
echo "Parent process: MyVar=$MyVar"

子プロセス

#!/bin/bash

echo "Child process: MyVar=$MyVar"
unset MyVar
echo "Child process after unset: MyVar=$MyVar"

unmaskする必要はある

sudo vi build/GenPi64Systemd/chroot/var/db/repos/gentoo/profiles/package.mask

2つをunmaskする必要があった。

# acct-group/spi
# acct-group/gpio

結論

2023/08/09 プルリクを作り開発者に聞いてみた。 https://github.com/GenPi64/Build.Dist/pull/206

本来の意図としてはSCRIPTだけでなく、環境変数はchroot環境だから引き継がれない、という話だった。 実際には引き継がれているのでpythonのchrootの使い方を修正する必要がありそう。 別のchrootで環境変数をクリアするプルリクを作る。

pythonのchrootのプルリクを作り直すために再度ログを取る

開発者に聞いてみた所、環境変数ってどうなってるの?という話が出たのでログを確認する

aarch64-unknown-linux-gnu-gcc -march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -march=native -O2 -pipe -std=c99 -DHAVE_CONFIG_H -DNDEBUG -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DINET -DARP -DARPING -DIPV4LL -DINET6 -DDHCP6 -DAUTH -DPLUGIN_DEV -I.. -I../src -I./crypt -c ../compat/setproctitle.c -o ../compat/setproctitle.o aarch64-unknown-linux-gnu-gcc -march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -march=native -O2 -pipe -std=c99 -DHAVE_CONFIG_H -DNDEBUG -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DINET -DARP -DARPING -DIPV4LL -DINET6 -DDHCP6 -DAUTH -DPLUGIN_DEV -I.. -I../src -I./crypt -c ../compat/strtoi.c -o ../compat/strtoi.o make[1]: No rule to make target ‘/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/scripts’, needed by ‘all’. Stop. make[1]: Waiting for unfinished jobs…. make[1]: Leaving directory ‘/var/tmp/portage/net-misc/dhcpcd-10.0.2/work/dhcpcd-10.0.2/src’ make: *** [Makefile:25: all] Error 2

  • ERROR: net-misc/dhcpcd-10.0.2::gentoo failed (compile phase):
  • emake failed
  • If you need support, post the output of emerge --info '=net-misc/dhcpcd-10.0.2::gentoo',
  • the complete build log and the output of emerge -pqv '=net-misc/dhcpcd-10.0.2::gentoo'.
  • The complete build log is located at ‘/var/tmp/portage/net-misc/dhcpcd-10.0.2/temp/build.log.gz’.
  • The ebuild environment file is located at ‘/var/tmp/portage/net-misc/dhcpcd-10.0.2/temp/environment’.
  • Working directory: ‘/var/tmp/portage/net-misc/dhcpcd-10.0.2/work/dhcpcd-10.0.2’
  • S: ‘/var/tmp/portage/net-misc/dhcpcd-10.0.2/work/dhcpcd-10.0.2’

上記ログの最後にあるようにエラーが出た際には /var/tmp/portage/配下のパッケージ名 の場所にログが残る。 Build.sh配下だと build/GenPi64Systemd/chroot/var/tmp/portage/net-misc/dhcpcd-10.0.2/temp/environment に環境変数がログとして残る。

declare -x ABI=“arm64” declare -x ABI_MIPS="" declare -x ABI_S390="" declare -x ABI_X86="" declare -x ADA_TARGET="" declare -x ALSA_CARDS="" declare -x AMDGPU_TARGETS="" declare -x APACHE2_MODULES="" declare -x APACHE2_MPMS="" declare -x ARCH=“arm64” declare -x BASEDIR="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist" declare BDEPEND=“virtual/pkgconfig” declare -x BINARY_ASSETS="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/build/GenPi64Systemd/build-binary-assets" declare -x BINPKGS_DIR="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/build/GenPi64Systemd/packages" declare -x BINPKG_FORMAT=“gpkg” declare -x BINPKG_GPG_SIGNING_BASE_COMMAND="/usr/bin/flock /run/lock/portage-binpkg-gpg.lock /usr/bin/gpg –sign –armor [PORTAGE_CONFIG]" declare -x BINPKG_GPG_SIGNING_DIGEST=“SHA512” declare -x BINPKG_GPG_VERIFY_BASE_COMMAND="/usr/bin/gpg –verify –batch –no-tty –no-auto-check-trustdb –status-fd 2 [PORTAGE_CONFIG] [SIGNATURE]" declare -x BINPKG_GPG_VERIFY_GPG_HOME="/etc/portage/gnupg" declare -x BOOTSTRAP_USE=“unicode internal-glib pkg-config split-usr xml python_targets_python3_11 python_single_target_python3_11 systemd sysv-utils udev” declare -x CALLBACKS="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/callbacks" declare -x CALLIGRA_FEATURES="" declare -x CAMERAS="" declare -x CBUILD=“aarch64-unknown-linux-gnu” declare -x CFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -march=native -O2 -pipe" declare -x CFLAGS_default declare -x CHOST=“aarch64-unknown-linux-gnu” declare -x CHOST_arm64=“aarch64-unknown-linux-gnu” declare -x CHOST_default=“aarch64-unknown-linux-gnu” declare -x CHROOT_DIR="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/build/GenPi64Systemd/chroot" declare -x COLLECTD_PLUGINS="" declare -x CONFIG_DIR="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/config" declare -x CONF_PREFIX="/" declare -x CPU_FLAGS_ARM="" declare -x CPU_FLAGS_PPC="" declare -x CPU_FLAGS_X86="" declare -x CTARGET_default=“aarch64-unknown-linux-gnu” declare -x CURL_SSL="" declare -x CXXFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -march=native -O2 -pipe" declare -x DEFAULT_ABI=“arm64” declare -x DEFINED_PHASES=" configure install postinst" declare DEPEND=“udev? ( virtual/udev ) " declare DESCRIPTION=“A fully featured, yet light weight RFC2131 compliant DHCP client” declare -x DIROPTIONS="-m0755” declare -x DISTFILES_DIR="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/build/GenPi64Systemd/distfiles" declare -x EAPI=“8” declare – ECONF_SOURCE="." declare -x ELIBC=“glibc” declare -x ENV_UNSET=“CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME” declare – EPOCHREALTIME=“1696058022.959803” declare – EPOCHSECONDS=“1696058022” declare -x EXEOPTIONS="-m0755" declare -x FCFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -march=native -O2 -pipe" declare -x FETCHCOMMAND_SSH=“bash -c "x=\${2#ssh://} ; host=\${x%%/} ; port=\${host##:} ; host=\${host%:} ; [[ \${host} = \${port} ]] && port= ; exec rsync –rsh=\"ssh \${port:+-p\${port}} \${3}\" -avP \"\${host}:/\${x#/}\" \"\$1\"" rsync "${DISTDIR}/${FILE}" "${URI}" "${PORTAGE_SSH_OPTS}"” declare -x FFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -march=native -O2 -pipe" declare -x FFTOOLS="" declare -x GCC_SPECS="" declare -x GPG_VERIFY_GROUP_DROP=“nogroup” declare -x GPG_VERIFY_USER_DROP=“nobody” declare -x GPSD_PROTOCOLS="" declare -x GRUB_PLATFORMS="" declare HOMEPAGE="https://github.com/NetworkConfiguration/dhcpcd/ https://roy.marples.name/projects/dhcpcd/" declare IDEPEND="" declare -x INHERITED=" toolchain-funcs multilib systemd" declare -x INPUT_DEVICES="" declare -x INSOPTIONS="-m0644" declare IUSE=“debug +embedded ipv6 privsep +udev " declare -x IUSE_EFFECTIVE=“alpha amd64 amd64-linux arm arm64 arm64-macos debug elibc_Darwin elibc_SunOS elibc_bionic elibc_glibc elibc_mingw elibc_musl embedded hppa ia64 ipv6 kernel_Darwin kernel_SunOS kernel_linux loong m68k mips ppc ppc-macos ppc64 ppc64-linux prefix prefix-guest prefix-stack privsep riscv s390 sparc udev x64-macos x64-solaris x86 x86-linux” declare -x IUSE_IMPLICIT=“prefix prefix-guest prefix-stack” declare -x KERNEL=“linux” declare -x KERNEL_ABI=“arm64” declare -x KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux” declare -x L10N="" declare -x LANG=“en_US.utf8” declare -x LCD_DEVICES="" declare -x LC_COLLATE=“C” declare -x LC_CTYPE=“C.UTF-8” declare -x LC_MESSAGES=“C” declare -x LDFLAGS="-Wl,-O1 -Wl,–as-needed" declare -x LDFLAGS_default declare -x LEX=“flex” declare -x LIBDIR_arm64=“lib64” declare -x LIBDIR_default=“lib” declare -x LIBOPTIONS="-m0644" declare -x LIBREOFFICE_EXTENSIONS="" declare -x LICENSE=“BSD-2 BSD ISC MIT” declare -x LLVM_TARGETS="" declare -x LUA_SINGLE_TARGET="" declare -x LUA_TARGETS="" declare -x MAKEOPTS="-j4 -l4" declare -x MANPAGER=“manpager” declare -x MONKEYD_PLUGINS="" declare -x MULTILIB_ABIS=“arm64” declare – MY_P=“dhcpcd-10.0.2” declare -x NGINX_MODULES_HTTP="" declare -x NGINX_MODULES_MAIL="" declare -x NGINX_MODULES_STREAM="" declare -x OFFICE_IMPLEMENTATION="" declare -x OPENMPI_FABRICS="" declare -x OPENMPI_OFED_FEATURES="" declare -x OPENMPI_RM="" declare -x OVERLAYS_CACHE_DIR="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/build/GenPi64Systemd/overlays-cache" declare -x PARSERS="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/parsers" declare -x PATH="/usr/lib/ccache/bin:/var/tmp/portage/.portage_reinstall.im2t4rsx/bin/ebuild-helpers/xattr:/usr/lib/portage/python3.11/ebuild-helpers/xattr:/var/tmp/portage/.portage_reinstall.im2t4rsx/bin/ebuild-helpers:/usr/lib/portage/python3.11/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/bin" declare PDEPEND="" declare -x PHP_TARGETS="" declare -x PORTAGE_COMPRESSION_COMMAND=“zstd -T4 -15” declare -x PORTAGE_COMPRESS_FLAGS="-15" declare -a PORTAGE_DOCOMPRESS=([0]="/usr/share/doc" [1]="/usr/share/info" [2]="/usr/share/man") declare -x PORTAGE_DOCOMPRESS_SIZE_LIMIT=“128” declare -a PORTAGE_DOCOMPRESS_SKIP=([0]="/usr/share/doc/dhcpcd-10.0.2/html") declare -a PORTAGE_DOSTRIP=([0]="/") declare -a PORTAGE_DOSTRIP_SKIP=() declare -x PORTAGE_NICENESS=“20” declare -x POSTGRES_TARGETS="" declare -x PROFILE_ONLY_VARIABLES=“ARCH ELIBC IUSE_IMPLICIT KERNEL USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL” declare -x PROJECT=“GenPi64Systemd” declare -x PROJECT_DIR="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/build/GenPi64Systemd" declare – PROPERTIES="" declare -x PYTHONDONTWRITEBYTECODE=“1” declare -x PYTHON_SINGLE_TARGET="" declare -x PYTHON_TARGETS="" declare -x QEMU_SOFTMMU_TARGETS="" declare -x QEMU_USER_TARGETS="" declare RDEPEND="

    udev? ( virtual/udev )
    privsep? (
            acct-group/dhcpcd
    )

" declare REPOSITORY declare REQUIRED_USE="" declare RESTRICT="" declare -x RESUMECOMMAND_SSH=“bash -c "x=\${2#ssh://} ; host=\${x%%/} ; port=\${host##:} ; host=\${host%:} ; [[ \${host} = \${port} ]] && port= ; exec rsync –rsh=\"ssh \${port:+-p\${port}} \${3}\" -avP \"\${host}:/\${x#/}\" \"\$1\"" rsync "${DISTDIR}/${FILE}" "${URI}" "${PORTAGE_SSH_OPTS}"” declare -x ROS_MESSAGES="" declare -x RUBY_TARGETS="" declare -x S="/var/tmp/portage/net-misc/dhcpcd-10.0.2/work/dhcpcd-10.0.2" declare -x SANDBOX_DEBUG=“0” declare -x SANDBOX_DENY="" declare -x SANDBOX_METHOD=“any” declare -x SANDBOX_PREDICT="/var/tmp/portage/net-misc/dhcpcd-10.0.2/homedir:/dev/crypto:/var/cache/man" declare -x SANDBOX_READ="/:/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/build/GenPi64Systemd/ccache:/var/tmp/portage" declare -x SANDBOX_VERBOSE=“1” declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/build/GenPi64Systemd/ccache:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/:/var/tmp/portage:/var/tmp/portage/net-misc/dhcpcd-10.0.2/homedir/.bash_history" declare -x SANE_BACKENDS="" declare -x SCRIPTS="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/scripts" declare -x SHELL="/bin/bash" declare -x SLOT=“0” declare -i SRANDOM=“141956057” declare SRC_URI="https://github.com/NetworkConfiguration/dhcpcd/releases/download/v10.0.2/dhcpcd-10.0.2.tar.xz" declare -x TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE=“1” declare -x USE=“arm64 elibc_glibc embedded ipv6 kernel_linux udev” declare -x USERLAND=“GNU” declare -x USE_EXPAND_IMPLICIT=“ARCH ELIBC KERNEL” declare -x USE_EXPAND_UNPREFIXED=“ARCH” declare -x USE_EXPAND_VALUES_ARCH=“alpha amd64 amd64-linux arm arm64 arm64-macos hppa ia64 loong m68k mips ppc ppc64 ppc64-linux ppc-macos riscv s390 sparc x64-macos x64-solaris x86 x86-linux” declare -x USE_EXPAND_VALUES_ELIBC=“bionic Darwin glibc mingw musl SunOS” declare -x USE_EXPAND_VALUES_KERNEL=“Darwin linux SunOS” declare -x UWSGI_PLUGINS="" declare -x VIDEO_CARDS="" declare -x VOICEMAIL_STORAGE="" declare -x XTABLES_ADDONS="" declare –_MULTILIB_ECLASS=“1” declare –_TOOLCHAIN_FUNCS_ECLASS=“1” declare -x __E_DESTTREE="/usr" declare -x__E_DOCDESTTREE="" declare -x __E_EXEDESTTREE="" declare -x__E_INSDESTTREE="" declare -x ac_cv_c_undeclared_builtin_options=“none needed” declare -x enable_year2038=“no” declare -x gl_cv_compiler_check_decl_option="-Werror=implicit-function-declaration"

どこでpychrootが呼び出されているか?

./scripts/chroot.py

https://github.com/GenPi64/Build.Dist/blob/a499f8947f8215e36f4f90073de90e4995343154/scripts/chroot.py#L42

この箇所は分岐された中で呼び出されているので呼び出されるか条件の確認

  1. 環境変数 CHROOT_CMD があるか? <- 無い https://github.com/GenPi64/Build.Dist/blob/a499f8947f8215e36f4f90073de90e4995343154/scripts/chroot.py#L17
  2. /sbin/openrc-run はあるか? <- ある https://github.com/GenPi64/Build.Dist/blob/a499f8947f8215e36f4f90073de90e4995343154/scripts/chroot.py#L41
  3. systemdか? <- no https://github.com/GenPi64/Build.Dist/blob/a499f8947f8215e36f4f90073de90e4995343154/scripts/chroot.py#L49 initdにリンクしていた。

という訳でpychrootでchrootしている。

で、「pychrootはデフォルトだと環境変数を引き継ぐのでは?」 https://github.com/GenPi64/Build.Dist/pull/206#issuecomment-1684161068 という課題に戻る。 どう変更すれば良いか? 2パターンありそう。

  1. os.environ.clear() してから実行
  2. 必要な環境変数だけ抜き出してpychrootの最後の引数に与えるか…?

2のパターン

新しい環境変数の辞書を作成

new_environ = {

"CCACHE_DIR": os.environ["CCACHE_DIR"],
"BINPKGS_DIR": os.environ["BINPKGS_DIR"],
"DISTFILES_DIR": os.environ["DISTFILES_DIR"],
"CHROOT_DIR": os.environ["CHROOT_DIR"]

}

Retain old behavior

if ‘CHROOT_CMD’ in os.environ:

chroot_cmd = os.environ.get('CHROOT_CMD')
if chroot_cmd == 'pychroot':
    os.execvpe('pychroot',
               ['pychroot',
                '-B', f'{os.environ["CCACHE_DIR"]}:/var/tmp/ccache',
                '-B', f'{os.environ["BINPKGS_DIR"]}:/var/cache/binpkgs',
                '-B', f'{os.environ["DISTFILES_DIR"]}:/var/cache/distfiles',
                os.environ['CHROOT_DIR'],
                *sys.argv[1:]], new_environ)
# ... (以下のコードは省略)

1のパターンの場合も可能だが、修正した際の影響、もしかすると子プロセスが親の環境変数を参照する前提だったりの不安があるので、2のパターンで修正し試してみる。

コンパイル中のプロセスの環境変数を見てみる

BASE_DIRなどが消えている( 他環境変数はemergeコマンドが作り出した可能性がある ) 問題になっていた環境変数SCRIPTも消えている。

k3s-stg-agent-e / # cat /var/tmp/portage/dev-python/sphinxcontrib-serializinghtml-1.1.9/temp/environment declare -x ABI=“arm64” declare -x ABI_MIPS="" declare -x ABI_S390="" declare -x ABI_X86="" declare -x ADA_TARGET="" declare -x ALSA_CARDS="" declare -x AMDGPU_TARGETS="" declare -x APACHE2_MODULES="" declare -x APACHE2_MPMS="" declare -x ARCH=“arm64” declare BDEPEND="

    test? (
    >=dev-python/sphinx-5[python_targets_pypy3(-)?,python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?]

) test? ( >=dev-python/pytest-7.3.1[python_targets_pypy3(-)?,python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] ) python_targets_pypy3? ( dev-python/pypy3:= ) python_targets_python3_10? ( dev-lang/python:3.10 ) python_targets_python3_11? ( dev-lang/python:3.11 ) python_targets_python3_12? ( dev-lang/python:3.12 )

                    >=dev-python/gpep517-13[python_targets_pypy3(-)?,python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?]

                                    >=dev-python/flit-core-3.9.0[python_targets_pypy3(-)?,python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?]
                            "

declare -x BINPKGS_DIR="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/build/GenPi64Systemd/packages" declare -x BINPKG_FORMAT=“gpkg” declare -x BINPKG_GPG_SIGNING_BASE_COMMAND="/usr/bin/flock /run/lock/portage-binpkg-gpg.lock /usr/bin/gpg –sign –armor [PORTAGE_CONFIG]" declare -x BINPKG_GPG_SIGNING_DIGEST=“SHA512” declare -x BINPKG_GPG_VERIFY_BASE_COMMAND="/usr/bin/gpg –verify –batch –no-tty –no-auto-check-trustdb –status-fd 2 [PORTAGE_CONFIG] [SIGNATURE]" declare -x BINPKG_GPG_VERIFY_GPG_HOME="/etc/portage/gnupg" declare -x BOOTSTRAP_USE=“unicode internal-glib pkg-config split-usr xml python_targets_python3_11 python_single_target_python3_11 systemd sysv-utils udev” declare -x CALLIGRA_FEATURES="" declare -x CAMERAS="" declare -x CBUILD=“aarch64-unknown-linux-gnu” declare -x CFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -march=native -O2 -pipe" declare -x CFLAGS_default declare -x CHOST=“aarch64-unknown-linux-gnu” declare -x CHOST_arm64=“aarch64-unknown-linux-gnu” declare -x CHOST_default=“aarch64-unknown-linux-gnu” declare -x CHROOT_DIR="/mnt/nfs/home/exampleuser/workspace/git/github.com/exampleuser/Build.Dist/build/GenPi64Systemd/chroot" declare -x COLLECTD_PLUGINS=""