project

package
v2.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 9, 2026 License: GPL-3.0 Imports: 28 Imported by: 0

Documentation

Overview

Package project provides multi-package project management and build orchestration.

Package project provides multi-package project management and build orchestration.

Package project provides multi-package project management and build orchestration.

Package project provides multi-package project management and build orchestration.

Package project provides multi-package project management and build orchestration.

Package project provides multi-package project management and build orchestration.

Package project provides multi-package project management and build orchestration.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrCircularDependency indicates a circular dependency was detected.
	// Static errors for linting compliance.
	ErrCircularDependency = errors.New(i18n.T("errors.project.circular_dependency_detected"))
	// ErrCircularRuntimeDependency indicates a circular runtime dependency was detected.
	ErrCircularRuntimeDependency = errors.New(
		i18n.T("errors.project.circular_runtime_dependency_detected"))
)

Functions

This section is empty.

Types

type BuildOptions

type BuildOptions struct {
	Verbose                 bool
	CleanBuild              bool
	NoBuild                 bool
	NoMakeDeps              bool
	SkipSyncDeps            bool
	SkipDeps                []string
	SkipToolchainValidation bool
	Zap                     bool
	Parallel                bool
	SBOM                    bool
	FromPkgName             string
	ToPkgName               string
	TargetArch              string
	OnlyPkgNames            string
	SkipPkgNames            string
	DebugDir                string
	SBOMFormat              string
	ExtraRepos              []string
	// AllowUnverifiedRepos bypasses the OpenPGP signature check on apt
	// `Release` / `InRelease` files. Required when the source declares no
	// `Signed-By` directive and no usable key exists in the default trust
	// paths (`/etc/apt/trusted.gpg.d`, `/usr/share/keyrings`,
	// `/etc/apt/keyrings`, `/etc/apt/trusted.gpg`). A signature that
	// exists and fails to verify is *always* fatal, regardless of this
	// flag — a forged signature is strictly worse than no signature.
	AllowUnverifiedRepos bool
	// SkipHashCheck disables sha256/sha512 integrity verification of
	// downloaded source files. Equivalent to setting every checksum to
	// SKIP in the PKGBUILD. Useful during development when iterating on
	// sources before finalising checksums.
	SkipHashCheck bool
}

BuildOptions holds all build configuration options. Use Apply() to propagate these options to the package-level globals.

type MultipleProject

type MultipleProject struct {
	BuildDir       string          `json:"buildDir"       validate:"required"`
	Description    string          `json:"description"    validate:"required"`
	Name           string          `json:"name"           validate:"required"`
	Output         string          `json:"output"         validate:"required"`
	Projects       []*Project      `json:"projects"       validate:"required,dive,required"`
	CompressionDeb string          `json:"compressionDeb" validate:""`
	CompressionRpm string          `json:"compressionRpm" validate:""`
	Signing        *signing.Config `json:"signing,omitempty"`
	Repos          []repo.Repo     `json:"repos,omitempty"`
	SkipDeps       []string        `json:"skipDeps,omitempty"`
	TargetArch     string          `json:"targetArch,omitempty"`
	DebugDir       string          `json:"debugDir,omitempty"`
	Parallel       bool            `json:"parallel,omitempty"`
	SBOM           bool            `json:"sbom,omitempty"`
	SBOMFormat     string          `json:"sbomFormat,omitempty"`
	// Opts holds build configuration options (not JSON-serialized; set by caller)
	Opts BuildOptions
	// contains filtered or unexported fields
}

MultipleProject represents a collection of projects.

It contains a slice of Project objects and provides methods to interact with multiple projects. The methods include building all the projects, finding a package in the projects, and creating packages for each project. The MultipleProject struct also contains the output directory for the packages and the ToPkgName field, which can be used to stop the build process after a specific package.

func (*MultipleProject) BuildAll

func (mpc *MultipleProject) BuildAll(ctx context.Context) error

BuildAll builds all projects in the correct order. When Parallel is false (default), projects are built sequentially in file order; packages with HasToInstall set are installed immediately after being built. When Parallel is true, a topological sort determines build order and packages are built concurrently using a worker pool. The context is used for cancellation (e.g., Ctrl-C / SIGTERM).

func (*MultipleProject) Clean

func (mpc *MultipleProject) Clean() error

Clean cleans up the MultipleProject by removing the package directories and source directories if the CleanBuild flag is set. It takes no parameters. It returns an error if there was a problem removing the directories.

func (*MultipleProject) MultiProject

func (mpc *MultipleProject) MultiProject(distro, release, path string) error

MultiProject is a function that performs multiple project operations.

It takes in the following parameters: - distro: a string representing the distribution - release: a string representing the release - path: a string representing the path

It returns an error.

type Project

type Project struct {
	Builder        *builder.Builder
	BuildRoot      string
	Distro         string
	PackageManager packer.Packer
	Path           string
	Release        string
	Root           string
	Name           string `json:"name"    validate:"required,startsnotwith=.,startsnotwith=./"`
	HasToInstall   bool   `json:"install" validate:""`
	Signing        *signing.Config
}

Project represents a single project.

It contains the necessary information to build and manage the project. The fields include the project's name, the path to the project directory, the builder object, the package manager object, and a flag indicating whether the project has to be installed.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL