func installAssets() error { systemctlBin, err := common.LookupPath("systemctl", os.Getenv("PATH")) if err != nil { return err } systemdSysusersBin, err := common.LookupPath("systemd-sysusers", os.Getenv("PATH")) if err != nil { return err } bashBin, err := common.LookupPath("bash", os.Getenv("PATH")) if err != nil { return err } // More paths could be added in that list if some Linux distributions install it in a different path // Note that we look in /usr/lib/... first because of the merge: // http://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/ systemdShutdownBin, err := common.LookupPath("systemd-shutdown", "/usr/lib/systemd:/lib/systemd") if err != nil { return err } systemdBin, err := common.LookupPath("systemd", "/usr/lib/systemd:/lib/systemd") if err != nil { return err } systemdJournaldBin, err := common.LookupPath("systemd-journald", "/usr/lib/systemd:/lib/systemd") if err != nil { return err } systemdUnitsPath := "/lib/systemd/system" assets := []string{ proj2aci.GetAssetString("/usr/lib/systemd/systemd", systemdBin), proj2aci.GetAssetString("/usr/bin/systemctl", systemctlBin), proj2aci.GetAssetString("/usr/bin/systemd-sysusers", systemdSysusersBin), proj2aci.GetAssetString("/usr/lib/systemd/systemd-journald", systemdJournaldBin), proj2aci.GetAssetString("/usr/bin/bash", bashBin), proj2aci.GetAssetString(fmt.Sprintf("%s/systemd-journald.service", systemdUnitsPath), fmt.Sprintf("%s/systemd-journald.service", systemdUnitsPath)), proj2aci.GetAssetString(fmt.Sprintf("%s/systemd-journald.socket", systemdUnitsPath), fmt.Sprintf("%s/systemd-journald.socket", systemdUnitsPath)), proj2aci.GetAssetString(fmt.Sprintf("%s/systemd-journald-dev-log.socket", systemdUnitsPath), fmt.Sprintf("%s/systemd-journald-dev-log.socket", systemdUnitsPath)), proj2aci.GetAssetString(fmt.Sprintf("%s/systemd-journald-audit.socket", systemdUnitsPath), fmt.Sprintf("%s/systemd-journald-audit.socket", systemdUnitsPath)), // systemd-shutdown has to be installed at the same path as on the host // because it depends on systemd build flag -DSYSTEMD_SHUTDOWN_BINARY_PATH= proj2aci.GetAssetString(systemdShutdownBin, systemdShutdownBin), } return proj2aci.PrepareAssets(assets, "./stage1/rootfs/", nil) }
func (mapper *commonParameterMapper) setupCommonParameters(parameters *flag.FlagSet) { // --exec mapper.execWrapper.vector = &mapper.config.Exec parameters.Var(&mapper.execWrapper, "exec", "Parameters passed to app, can be used multiple times") // --use-binary parameters.StringVar(&mapper.config.UseBinary, "use-binary", "", "Which executable to put in ACI image") // --asset mapper.assetWrapper.vector = &mapper.config.Assets parameters.Var(&mapper.assetWrapper, "asset", "Additional assets, can be used multiple times; format: "+proj2aci.GetAssetString("<path in ACI rootfs>", "<local path>")+"; available placeholders for use: "+mapper.getPlaceholders()) // --keep-tmp-dir parameters.BoolVar(&mapper.config.KeepTmpDir, "keep-tmp-dir", false, "Do not delete temporary directory used for creating ACI") // --tmp-dir parameters.StringVar(&mapper.config.TmpDir, "tmp-dir", "", "Use this directory for build a project and an ACI image") // --reuse-tmp-dir parameters.StringVar(&mapper.config.ReuseTmpDir, "reuse-tmp-dir", "", "Use this already existing directory with built project to build an ACI image; ACI specific contents in this directory are removed before reuse") }