func()

in pkg/archive/rpm.go [64:115]


func (r *RpmPackager) Package(client *dagger.Client, c *dagger.Container, project *Spec) *dagger.Directory {
	dir := client.Directory()
	rootDir := "/package"

	c = c.WithDirectory(rootDir, dir)
	c = r.moveStaticFiles(c, rootDir)

	pkgDir := c.Directory(rootDir)
	fpm := fpmContainer(client, r.mirrorPrefix)

	filename := fmt.Sprintf("%s-%s-%s.%s.%s.rpm", project.Pkg, project.Tag, project.Revision, rpmDistroMap[project.Distro], rpmArchMap[project.Arch])

	fpmArgs := []string{"fpm",
		"-s", "dir",
		"-t", "rpm",
		"-n", project.Pkg,
		"--version", project.Tag,
		"--iteration", project.Revision,
		"--rpm-dist", rpmDistroMap[project.Distro],
		"--architecture", strings.Replace(project.Arch, "/", "", -1),
		"--description", r.a.Description,
		"--url", r.a.Webpage,
	}

	for i := range r.a.RuntimeDeps {
		dep := r.a.RuntimeDeps[i]
		if rpmPkgBlacklist.contains(project.Distro, dep) {
			continue
		}

		fpmArgs = append(fpmArgs, "-d", dep)
	}

	for i := range r.a.Conflicts {
		conf := r.a.Conflicts[i]
		fpmArgs = append(fpmArgs, "--conflicts", conf)
	}

	var args []string
	c, args = r.withInstallScripts(c)

	fpmArgs = append(fpmArgs, args...)
	fpmArgs = append(fpmArgs, ".")

	return fpm.WithDirectory("/package", pkgDir).
		WithDirectory("/build", c.Directory("/build")).
		WithWorkdir("/package").
		WithEnvVariable("OUTPUT_FILENAME", filename).
		WithExec(fpmArgs).
		WithExec([]string{"bash", "-c", `mkdir -vp /out; mv *.rpm "/out/${OUTPUT_FILENAME}"`}).
		Directory("/out")
}