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")
}