Cleanup repo

This commit is contained in:
Till Wegmueller 2022-09-01 19:23:09 -03:00
parent bf5c8253a8
commit 2fd593ff41
80 changed files with 730 additions and 31237 deletions

1
.vscode/configurationCache.log vendored Normal file
View file

@ -0,0 +1 @@
{"buildTargets":["all","clean","publish-all","release","test"],"launchTargets":[],"customConfigurationProvider":{"workspaceBrowse":{"browsePath":[],"compilerArgs":[]},"fileIndex":[]}}

9
.vscode/dryrun.log vendored Normal file
View file

@ -0,0 +1,9 @@
make --dry-run --always-make --keep-going --print-directory
make: Entering directory '/home/toast/workspace/illumos/aurora/ips'
rm -rf target artifacts
cargo build --release
mkdir -p artifacts
cp target/release/pkg6dev artifacts/
make: Leaving directory '/home/toast/workspace/illumos/aurora/ips'

3
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,3 @@
{
"makefile.extensionOutputFolder": "./.vscode"
}

334
.vscode/targets.log vendored Normal file
View file

@ -0,0 +1,334 @@
make all --print-data-base --no-builtin-variables --no-builtin-rules --question
# GNU Make 4.3
# Built for x86_64-pc-linux-gnu
# Copyright (C) 1988-2020 Free Software Foundation, Inc.
# License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
# This is free software: you are free to change and redistribute it.
# There is NO WARRANTY, to the extent permitted by law.
# Make data base, printed on Thu Sep 1 15:11:07 2022
# Variables
# environment
GO111MODULE = on
# environment
LC_ALL = C
# environment
LC_NAME = de_CH.UTF-8
# environment
LC_NUMERIC = de_CH.UTF-8
# environment
VSCODE_CWD = /home/toast
# environment
LC_ADDRESS = de_CH.UTF-8
# default
MAKE_COMMAND := make
# environment
VSCODE_HANDLES_SIGPIPE = true
# environment
GOPATH = /home/toast/workspace/go
# automatic
@D = $(patsubst %/,%,$(dir $@))
# environment
VSCODE_HANDLES_UNCAUGHT_ERRORS = true
# default
.VARIABLES :=
# environment
PWD = /home/toast/workspace/illumos/aurora/ips
# automatic
%D = $(patsubst %/,%,$(dir $%))
# environment
LSCOLORS = Gxfxcxdxbxegedabagacad
# environment
OLDPWD = /home/toast
# automatic
^D = $(patsubst %/,%,$(dir $^))
# automatic
%F = $(notdir $%)
# environment
LANG = C
# default
.LOADED :=
# default
.INCLUDE_DIRS = /usr/local/include /usr/include /usr/include
# makefile
MAKEFLAGS = pqrR
# makefile
CURDIR := /home/toast/workspace/illumos/aurora/ips
# environment
APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL = true
# automatic
*D = $(patsubst %/,%,$(dir $*))
# environment
MFLAGS = -pqrR
# environment
SSH_AUTH_SOCK = /run/user/1000/vscode-ssh-auth-sock-316701701
# default
.SHELLFLAGS := -c
# automatic
+D = $(patsubst %/,%,$(dir $+))
# makefile (from 'Makefile', line 1)
MAKEFILE_LIST := Makefile
# automatic
@F = $(notdir $@)
# environment
ZSH = /home/toast/.oh-my-zsh
# environment
XDG_SESSION_TYPE = tty
# automatic
?D = $(patsubst %/,%,$(dir $?))
# automatic
*F = $(notdir $*)
# environment
DBUS_SESSION_BUS_ADDRESS = unix:path=/run/user/1000/bus
# automatic
<D = $(patsubst %/,%,$(dir $<))
# environment
VSCODE_NLS_CONFIG = {"locale":"en","availableLanguages":{}}
# environment
ANDROID_SDK_ROOT = /home/toast/Android/Sdk
# default
MAKE_HOST := x86_64-pc-linux-gnu
# environment
ANDROID_HOME = /home/toast/Android/Sdk
# makefile
SHELL = /bin/sh
# default
MAKECMDGOALS := all
# environment
QT_QPA_PLATFORM = xcb
# environment
SHLVL = 1
# environment
MAKELEVEL := 0
# default
MAKE = $(MAKE_COMMAND)
# environment
PATH = /home/toast/.vscode-server/bin/e4503b30fc78200f846c62cf8091b76ff5547662/bin/remote-cli:/home/toast/.krew/bin:/home/toast/bin:/home/toast/workspace/go/bin:/home/toast/.cargo/bin:/home/toast/.vim/bin:/home/toast/bin:/home/toast/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/toast/Android/Sdk/emulator:/home/toast/Android/Sdk/tools:/home/toast/Android/Sdk/tools/bin:/home/toast/Android/Sdk/platform-tools:/home/toast/.arkade/bin/:/home/toast/.emacs.d/bin
# default
MAKEFILES :=
# environment
MOTD_SHOWN = pam
# environment
LC_MONETARY = de_CH.UTF-8
# automatic
^F = $(notdir $^)
# environment
LC_TIME = de_CH.UTF-8
# environment
GOBIN = /home/toast/workspace/go/bin
# environment
SSH_CLIENT = 100.85.127.110 58934 22
# environment
LC_TELEPHONE = de_CH.UTF-8
# automatic
?F = $(notdir $?)
# environment
LS_COLORS =
# automatic
+F = $(notdir $+)
# environment
LESS = -R
# 'override' directive
GNUMAKEFLAGS :=
# environment
BROWSER = /home/toast/.vscode-server/bin/e4503b30fc78200f846c62cf8091b76ff5547662/bin/helpers/browser.sh
# environment
SSH_KEY_PATH = ~/.ssh/id_rsa
# environment
LOGNAME = toast
# makefile
.DEFAULT_GOAL := all
# environment
EDITOR = vim
# environment
USER = toast
# default
MAKE_VERSION := 4.3
# environment
LC_MEASUREMENT = de_CH.UTF-8
# environment
SSH_AGENT_PID = 4552
# environment
PAGER = less
# environment
VSCODE_AGENT_FOLDER = /home/toast/.vscode-server
# environment
_ = /home/toast/.vscode-server/bin/e4503b30fc78200f846c62cf8091b76ff5547662/node
# environment
LC_PAPER = de_CH.UTF-8
# environment
XDG_RUNTIME_DIR = /run/user/1000
# environment
VSCODE_IPC_HOOK_CLI = /run/user/1000/vscode-ipc-ee029a89-cf7d-4f9c-850d-175e32feba2a.sock
# environment
XDG_SESSION_CLASS = user
# environment
VSCODE_AMD_ENTRYPOINT = vs/workbench/api/node/extensionHostProcess
# environment
HOME = /home/toast
# environment
ELECTRON_RUN_AS_NODE = 1
# environment
XDG_SESSION_ID = 536
# default
.RECIPEPREFIX :=
# automatic
<F = $(notdir $<)
# default
SUFFIXES :=
# default
.FEATURES := target-specific order-only second-expansion else-if shortest-stem undefine oneshell nocomment grouped-target extra-prereqs archives jobserver output-sync check-symlink load
# environment
LC_IDENTIFICATION = de_CH.UTF-8
# environment
SSH_CONNECTION = 100.85.127.110 58934 100.74.144.68 22
# variable set hash-table stats:
# Load=87/1024=8%, Rehash=0, Collisions=5/121=4%
# Pattern-specific Variable Values
publish.% :
# makefile (from 'Makefile', line 19)
# CRATE := $$*
# 1 pattern-specific variable values
# Directories
# . (device 64769, inode 132376): 23 files, no impossibilities.
# 23 files, no impossibilities in 1 directories.
# Implicit Rules
publish.%:
# recipe to execute (from 'Makefile', line 21):
cd $(CRATE); cargo publish
# 1 implicit rules, 0 (0.0%) terminal.
# Files
# Not a target:
publish.userland:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
Makefile:
# Implicit rule search has been done.
# Last modified 2021-05-01 16:21:48.234604484
# File has been updated.
# Successfully updated.
clean:
# Phony target (prerequisite of .PHONY).
# Implicit rule search has not been done.
# Implicit/static pattern stem: ''
# File does not exist.
# File has been updated.
# Needs to be updated (-q is set).
# automatic
# @ := clean
# automatic
# * :=
# automatic
# < :=
# automatic
# + :=
# automatic
# % :=
# automatic
# ^ :=
# automatic
# ? :=
# automatic
# | :=
# variable set hash-table stats:
# Load=8/32=25%, Rehash=0, Collisions=1/11=9%
# recipe to execute (from 'Makefile', line 10):
rm -rf target artifacts
# Not a target:
publish.pkg6dev:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.DEFAULT:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
all: clean release
# Phony target (prerequisite of .PHONY).
# Command line target.
# Implicit rule search has not been done.
# File does not exist.
# File has been updated.
# Needs to be updated (-q is set).
# variable set hash-table stats:
# Load=0/32=0%, Rehash=0, Collisions=0/3=0%
# Not a target:
publish.libips:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
test:
# Phony target (prerequisite of .PHONY).
# Implicit rule search has not been done.
# File does not exist.
# File has not been updated.
# recipe to execute (from 'Makefile', line 7):
cargo test
publish-all: publish.libips publish.userland publish.pkg6dev
# Phony target (prerequisite of .PHONY).
# Implicit rule search has not been done.
# File does not exist.
# File has not been updated.
release:
# Phony target (prerequisite of .PHONY).
# Implicit rule search has not been done.
# File does not exist.
# File has not been updated.
# recipe to execute (from 'Makefile', line 13):
cargo build --release
mkdir -p artifacts
cp target/release/pkg6dev artifacts/
# Not a target:
.SUFFIXES:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
.PHONY: all release test clean publish-all
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# files hash-table stats:
# Load=12/1024=1%, Rehash=0, Collisions=0/38=0%
# VPATH Search Paths
# No 'vpath' search paths.
# No general ('VPATH' variable) search path.
# strcache buffers: 1 (0) / strings = 37 / storage = 350 B / avg = 9 B
# current buf: size = 8162 B / used = 350 B / count = 37 / avg = 9 B
# strcache performance: lookups = 57 / hit rate = 35%
# hash-table stats:
# Load=37/8192=0%, Rehash=0, Collisions=0/57=0%
# Finished Make data base on Thu Sep 1 15:11:07 2022

67
Cargo.lock generated
View file

@ -19,9 +19,9 @@ dependencies = [
[[package]] [[package]]
name = "anyhow" name = "anyhow"
version = "1.0.56" version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" checksum = "a26fa4d7e3f2eebadf743988fc8aec9fa9a9e82611acafd77c1462ed6262440a"
[[package]] [[package]]
name = "atty" name = "atty"
@ -127,16 +127,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]] [[package]]
name = "clap" name = "clap"
version = "3.1.6" version = "3.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8c93436c21e4698bacadf42917db28b23017027a4deccb35dbe47a7e7840123" checksum = "a3dbbb6653e7c55cc8595ad3e1f7be8f32aba4eb7ff7f0fd1163d4f3d137c0a9"
dependencies = [ dependencies = [
"atty", "atty",
"bitflags", "bitflags",
"clap_derive", "clap_derive",
"clap_lex",
"indexmap", "indexmap",
"lazy_static", "once_cell",
"os_str_bytes",
"strsim", "strsim",
"termcolor", "termcolor",
"textwrap", "textwrap",
@ -144,9 +144,9 @@ dependencies = [
[[package]] [[package]]
name = "clap_derive" name = "clap_derive"
version = "3.1.4" version = "3.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da95d038ede1a964ce99f49cbe27a7fb538d1da595e4b4f70b8c8f338d17bf16" checksum = "9ba52acd3b0a5c33aeada5cdaa3267cdc7c594a98731d4268cdc1532f4264cb4"
dependencies = [ dependencies = [
"heck", "heck",
"proc-macro-error", "proc-macro-error",
@ -155,6 +155,15 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "clap_lex"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
dependencies = [
"os_str_bytes",
]
[[package]] [[package]]
name = "core-foundation" name = "core-foundation"
version = "0.9.1" version = "0.9.1"
@ -682,9 +691,9 @@ dependencies = [
[[package]] [[package]]
name = "once_cell" name = "once_cell"
version = "1.7.2" version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
[[package]] [[package]]
name = "opaque-debug" name = "opaque-debug"
@ -718,6 +727,15 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
[[package]]
name = "openssl-src"
version = "111.22.0+1.1.1q"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f31f0d509d1c1ae9cada2f9539ff8f37933831fd5098879e482aa687d659853"
dependencies = [
"cc",
]
[[package]] [[package]]
name = "openssl-sys" name = "openssl-sys"
version = "0.9.61" version = "0.9.61"
@ -727,6 +745,7 @@ dependencies = [
"autocfg", "autocfg",
"cc", "cc",
"libc", "libc",
"openssl-src",
"pkg-config", "pkg-config",
"vcpkg", "vcpkg",
] ]
@ -736,9 +755,6 @@ name = "os_str_bytes"
version = "6.0.0" version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64"
dependencies = [
"memchr",
]
[[package]] [[package]]
name = "percent-encoding" name = "percent-encoding"
@ -1078,21 +1094,9 @@ dependencies = [
[[package]] [[package]]
name = "semver" name = "semver"
version = "0.11.0" version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" checksum = "93f6841e709003d68bb2deee8c343572bf446003ec20a583e76f7b15cebf3711"
dependencies = [
"semver-parser",
]
[[package]]
name = "semver-parser"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
dependencies = [
"pest",
]
[[package]] [[package]]
name = "serde" name = "serde"
@ -1415,14 +1419,15 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
[[package]] [[package]]
name = "url" name = "url"
version = "2.2.1" version = "2.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"
dependencies = [ dependencies = [
"form_urlencoded", "form_urlencoded",
"idna", "idna",
"matches", "matches",
"percent-encoding", "percent-encoding",
"serde",
] ]
[[package]] [[package]]
@ -1431,7 +1436,8 @@ version = "0.1.1"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"lazy_static", "lazy_static",
"maplit 0.1.6", "maplit 1.0.2",
"openssl",
"pest", "pest",
"pest_derive", "pest_derive",
"regex", "regex",
@ -1440,6 +1446,7 @@ dependencies = [
"serde", "serde",
"serde_json", "serde_json",
"thiserror", "thiserror",
"url",
] ]
[[package]] [[package]]

8
missing.p5m Normal file
View file

@ -0,0 +1,8 @@
file path=usr/gcc/11/bin/gcc-ar
file path=usr/gcc/11/bin/$(GNU_TRIPLET)-c++
file path=usr/gcc/11/bin/$(GNU_TRIPLET)-gcc-$(COMPONENT_VERSION)
file path=usr/gcc/11/bin/$(GNU_TRIPLET)-gcc-nm
file path=usr/gcc/11/bin/$(GNU_TRIPLET)-gcc-ranlib
file path=usr/gcc/11/bin/$(GNU_TRIPLET)-gfortran
file path=usr/gcc/11/lib/gcc/$(GNU_TRIPLET)/$(COMPONENT_VERSION)/include/mwaitintrin.h
file path=usr/gcc/11/share/info/dir

View file

@ -14,5 +14,5 @@ keywords = ["packaging", "illumos"]
[dependencies] [dependencies]
libips = {path = "../libips", version = "0.1.1"} libips = {path = "../libips", version = "0.1.1"}
userland = {path = "../userland", version = "0.1.1"} userland = {path = "../userland", version = "0.1.1"}
anyhow = "1.0.56" anyhow = "1.0.59"
clap = {version = "3.1.6", features = [ "derive" ] } clap = {version = "3.2.16", features = [ "derive" ] }

View file

@ -1,27 +1,34 @@
use clap::{Parser, Subcommand}; use clap::{Parser, Subcommand};
use libips::actions::{File, Manifest}; use libips::actions::{File, Manifest};
use anyhow::Result; use anyhow::{Result};
use std::collections::HashMap; use std::collections::HashMap;
use std::fs::{read_dir}; use std::fs::{read_dir, OpenOptions};
use std::path::Path; use std::io::Write;
use userland::Makefile; use std::path::{Path, PathBuf};
use userland::repology::{find_newest_version}; use userland::repology::find_newest_version;
use userland::{Makefile, Component};
#[derive(Parser, Debug)] #[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)] #[clap(author, version, about, long_about = None)]
#[clap(propagate_version = true)] #[clap(propagate_version = true)]
struct App { struct App {
#[clap(subcommand)] #[clap(subcommand)]
command: Commands command: Commands,
} }
#[derive(Subcommand, Debug)] #[derive(Subcommand, Debug)]
enum Commands { enum Commands {
DiffComponent{ DiffComponent {
component: String, component: String,
#[clap(short)]
replacements: Option<Vec<String>>,
/// Place the file actions missing in the manifests but present in sample-manifest into this file
#[clap(short = 'm')]
output_manifest: Option<PathBuf>,
}, },
ShowComponent{ ShowComponent {
component: String, component: String,
}, },
} }
@ -30,43 +37,101 @@ fn main() -> Result<()> {
let cli = App::parse(); let cli = App::parse();
match &cli.command { match &cli.command {
Commands::ShowComponent{ component } => { Commands::ShowComponent { component } => show_component_info(component),
show_component_info(component) Commands::DiffComponent {
} component,
Commands::DiffComponent{component} => { replacements,
diff_component(component) output_manifest,
} } => diff_component(component, replacements, output_manifest),
} }
} }
fn diff_component(component_path: impl AsRef<Path>) -> Result<()> { fn parse_tripplet_replacements(replacements: &Vec<String>) -> HashMap<String, String> {
let mut map = HashMap::new();
for pair in replacements
.into_iter()
.map(|str| {
str.split_once(":")
.map(|s| (s.0.to_owned(), s.1.to_owned()))
.unwrap_or((String::new(), String::new()))
})
.collect::<Vec<(String, String)>>()
{
map.insert(pair.0, pair.1);
}
map
}
fn diff_component(
component_path: impl AsRef<Path>,
replacements: &Option<Vec<String>>,
output_manifest: &Option<PathBuf>,
) -> Result<()> {
let replacements = if let Some(replacements) = replacements {
let map = parse_tripplet_replacements(replacements);
Some(map)
} else {
None
};
let files = read_dir(&component_path)?; let files = read_dir(&component_path)?;
let manifest_files: Vec<String> = files let manifest_files: Vec<String> = files
.filter_map(std::result::Result::ok) .filter_map(std::result::Result::ok)
.filter(|d| if let Some(e) = d.path().extension() { e == "p5m" } else {false}) .filter(|d| {
.map(|e| e.path().into_os_string().into_string().unwrap()).collect(); if let Some(e) = d.path().extension() {
e == "p5m"
} else {
false
}
})
.map(|e| e.path().into_os_string().into_string().unwrap())
.collect();
let sample_manifest_file = &component_path.as_ref().join("/manifests/sample-manifest.p5m"); let sample_manifest_file = &component_path
.as_ref()
.join("manifests/sample-manifest.p5m");
let manifests_res: Result<Vec<Manifest>> = manifest_files.iter().map(|f|{ let manifests_res: Result<Vec<Manifest>> = manifest_files
Manifest::parse_file(f.to_string()) .iter()
}).collect(); .map(|f| Manifest::parse_file(f.to_string()))
.collect();
let sample_manifest = Manifest::parse_file(sample_manifest_file)?; let sample_manifest = Manifest::parse_file(sample_manifest_file)?;
let manifests: Vec<Manifest> = manifests_res.unwrap(); let manifests: Vec<Manifest> = manifests_res.unwrap();
let missing_files = find_files_missing_in_manifests(&sample_manifest, manifests.clone())?; let missing_files =
find_files_missing_in_manifests(&sample_manifest, manifests.clone(), &replacements)?;
for f in missing_files { for f in missing_files.clone() {
println!("file {} is missing in the manifests", f.path); println!("file {} is missing in the manifests", f.path);
} }
let removed_files = find_removed_files(&sample_manifest, manifests.clone(), &component_path)?; let removed_files = find_removed_files(
&sample_manifest,
manifests.clone(),
&component_path,
&replacements,
)?;
for f in removed_files { for f in removed_files {
println!("file path={} has been removed from the sample-manifest", f.path); println!(
"file path={} has been removed from the sample-manifest",
f.path
);
}
if let Some(output_manifest) = output_manifest {
let mut f = OpenOptions::new()
.write(true)
.truncate(true)
.create(true)
.open(output_manifest)?;
for action in missing_files {
writeln!(&mut f, "file path={}", action.path)?;
}
} }
Ok(()) Ok(())
@ -80,9 +145,12 @@ fn show_component_info<P: AsRef<Path>>(component_path: P) -> Result<()> {
let mut name = String::new(); let mut name = String::new();
let component = Component::new_from_makefile(&makefile)?;
if let Some(var) = makefile.get("COMPONENT_NAME") { if let Some(var) = makefile.get("COMPONENT_NAME") {
println!("Name: {}", var.replace("\n", "\n\t")); println!("Name: {}", var.replace("\n", "\n\t"));
if let Some(component_name) = makefile.get_first_value_of_variable_by_name("COMPONENT_NAME") { if let Some(component_name) = makefile.get_first_value_of_variable_by_name("COMPONENT_NAME")
{
name = component_name.clone(); name = component_name.clone();
} }
} }
@ -93,7 +161,10 @@ fn show_component_info<P: AsRef<Path>>(component_path: P) -> Result<()> {
if latest_version.is_ok() { if latest_version.is_ok() {
println!("Latest Version: {}", latest_version?); println!("Latest Version: {}", latest_version?);
} else { } else {
println!("Error: Could not get latest version info: {:?}", latest_version.unwrap_err()) println!(
"Error: Could not get latest version info: {:?}",
latest_version.unwrap_err()
)
} }
} }
@ -117,14 +188,6 @@ fn show_component_info<P: AsRef<Path>>(component_path: P) -> Result<()> {
println!("Source Archive File Hash: {}", var.replace("\n", "\n\t")); println!("Source Archive File Hash: {}", var.replace("\n", "\n\t"));
} }
if let Some(var) = makefile.get("CONFIGURE_ENV") {
println!("Configure Environment: {}", var.replace("\n", "\n\t"));
}
if let Some(var) = makefile.get("CONFIGURE_OPTIONS") {
println!("./configure {}", var.replace("\n", "\n\t"));
}
if let Some(var) = makefile.get("REQUIRED_PACKAGES") { if let Some(var) = makefile.get("REQUIRED_PACKAGES") {
println!("Dependencies:\n\t{}", var.replace("\n", "\n\t")); println!("Dependencies:\n\t{}", var.replace("\n", "\n\t"));
} }
@ -133,27 +196,38 @@ fn show_component_info<P: AsRef<Path>>(component_path: P) -> Result<()> {
println!("Install Action:\n\t{}", var); println!("Install Action:\n\t{}", var);
} }
println!("Component: {:?}", component);
Ok(()) Ok(())
} }
// Show all files that have been removed in the sample-manifest // Show all files that have been removed in the sample-manifest
fn find_removed_files<P: AsRef<Path>>(sample_manifest: &Manifest, manifests: Vec<Manifest>, component_path: P) -> Result<Vec<File>> { fn find_removed_files<P: AsRef<Path>>(
sample_manifest: &Manifest,
manifests: Vec<Manifest>,
component_path: P,
replacements: &Option<HashMap<String, String>>,
) -> Result<Vec<File>> {
let f_map = make_file_map(sample_manifest.files.clone()); let f_map = make_file_map(sample_manifest.files.clone());
let all_files: Vec<File> = manifests.iter().map(|m| m.files.clone()).flatten().collect(); let all_files: Vec<File> = manifests
.iter()
.map(|m| m.files.clone())
.flatten()
.collect();
let mut removed_files: Vec<File> = Vec::new(); let mut removed_files: Vec<File> = Vec::new();
for f in all_files { for f in all_files {
match f.get_original_path() { match f.get_original_path() {
Some(path) => { Some(path) => {
if !f_map.contains_key(path.as_str()) { if !f_map.contains_key(replace_func(path.clone(), replacements).as_str()) {
if !component_path.as_ref().join(path).exists() { if !component_path.as_ref().join(path).exists() {
removed_files.push(f) removed_files.push(f)
} }
} }
}, }
None => { None => {
if !f_map.contains_key(f.path.as_str()) { if !f_map.contains_key(replace_func(f.path.clone(), replacements).as_str()) {
removed_files.push(f) removed_files.push(f)
} }
} }
@ -164,8 +238,16 @@ fn find_removed_files<P: AsRef<Path>>(sample_manifest: &Manifest, manifests: Vec
} }
// Show all files missing in the manifests that are in sample_manifest // Show all files missing in the manifests that are in sample_manifest
fn find_files_missing_in_manifests(sample_manifest: &Manifest, manifests: Vec<Manifest>) -> Result<Vec<File>> { fn find_files_missing_in_manifests(
let all_files: Vec<File> = manifests.iter().map(|m| m.files.clone()).flatten().collect(); sample_manifest: &Manifest,
manifests: Vec<Manifest>,
replacements: &Option<HashMap<String, String>>,
) -> Result<Vec<File>> {
let all_files: Vec<File> = manifests
.iter()
.map(|m| m.files.clone())
.flatten()
.collect();
let f_map = make_file_map(all_files); let f_map = make_file_map(all_files);
let mut missing_files: Vec<File> = Vec::new(); let mut missing_files: Vec<File> = Vec::new();
@ -173,12 +255,12 @@ fn find_files_missing_in_manifests(sample_manifest: &Manifest, manifests: Vec<Ma
for f in sample_manifest.files.clone() { for f in sample_manifest.files.clone() {
match f.get_original_path() { match f.get_original_path() {
Some(path) => { Some(path) => {
if !f_map.contains_key(path.as_str()) { if !f_map.contains_key(replace_func(path, replacements).as_str()) {
missing_files.push(f) missing_files.push(f)
} }
}, }
None => { None => {
if !f_map.contains_key(f.path.as_str()) { if !f_map.contains_key(replace_func(f.path.clone(), replacements).as_str()) {
missing_files.push(f) missing_files.push(f)
} }
} }
@ -188,12 +270,32 @@ fn find_files_missing_in_manifests(sample_manifest: &Manifest, manifests: Vec<Ma
Ok(missing_files) Ok(missing_files)
} }
fn replace_func(orig: String, replacements: &Option<HashMap<String, String>>) -> String {
if let Some(replacements) = replacements {
let mut replacement = orig.clone();
for (i, (from, to)) in replacements.into_iter().enumerate() {
let from: &str = &format!("$({})", from);
if i == 0 {
replacement = orig.replace(from, to);
} else {
replacement = replacement.replace(from, to);
}
}
replacement
} else {
orig
}
}
fn make_file_map(files: Vec<File>) -> HashMap<String, File> { fn make_file_map(files: Vec<File>) -> HashMap<String, File> {
files.iter().map(|f| { files
.iter()
.map(|f| {
let orig_path_opt = f.get_original_path(); let orig_path_opt = f.get_original_path();
if orig_path_opt == None { if orig_path_opt == None {
return (f.path.clone(), f.clone()); return (f.path.clone(), f.clone());
} }
(orig_path_opt.unwrap(), f.clone()) (orig_path_opt.unwrap(), f.clone())
}).collect() })
.collect()
} }

View file

@ -1,121 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2021 Till Wegmueller
#
include ../../../make-rules/shared-macros.mk
PATCH_EACH_ARCHIVE= 1
COMPONENT_NAME= golang
COMPONENT_MAJOR_VERSION= 1.16
COMPONENT_VERSION= $(COMPONENT_MAJOR_VERSION).3
COMPONENT_FMRI= developer/golang
COMPONENT_CLASSIFICATION= Development/Other Languages
COMPONENT_SUMMARY= The Go Programming Language
COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_PROJECT_URL= https://golang.org/
COMPONENT_ARCHIVE= go$(COMPONENT_VERSION).src.tar.gz
COMPONENT_ARCHIVE_URL= https://storage.googleapis.com/golang/$(COMPONENT_ARCHIVE)
COMPONENT_ARCHIVE_HASH= sha256:b298d29de9236ca47a023e382313bcc2d2eed31dfa706b60a04103ce83a71a25
COMPONENT_LICENSE= BSD-style, Patent Grant
COMPONENT_LICENSE_FILE= $(COMPONENT_NAME).license
MEDIATEDUSRSHAREMAN1DIR= $(PROTO_DIR)/usr/share/golang/$(COMPONENT_MAJOR_VERSION)/man/man1
# Go has a number of supplementary tools and packages that are located in
# separate archives or source repositories. Because Go currently forces a
# recompile of all packages whenever the compiler changes, building and
# delivering them within the same build component build process is the best
# option for now.
# Bake in where Go package will be installed.
GOROOT_FINAL= /usr/lib/golang/$(COMPONENT_MAJOR_VERSION)
# Enable easier stack unwinding for debugging.
GOEXPERIMENT=
COMPONENT_BUILD_ENV += GOROOT_FINAL="$(GOROOT_FINAL)"
COMPONENT_BUILD_ENV += GOEXPERIMENT="$(GOEXPERIMENT)"
COMPONENT_BUILD_ENV += GOOS="illumos"
COMPONENT_BUILD_ENV += GOCACHE="$(SOURCE_DIR)/gocache"
COMPONENT_BUILD_ENV += GOPATH="$(SOURCE_DIR)/gopath"
COMPONENT_BUILD_ENV += \
GOROOT_BOOTSTRAP="/usr/lib/golang/$(COMPONENT_MAJOR_VERSION)"
# For convenience during installation of supplementary packages.
COMPONENT_INSTALL_ENV += PATH="$(PROTO_DIR)$(GOROOT_FINAL)/bin:$(PATH)"
COMPONENT_INSTALL_ENV += GOROOT="$(PROTO_DIR)$(GOROOT_FINAL)"
COMPONENT_INSTALL_ENV += GOCACHE="$(SOURCE_DIR)/gocache"
COMPONENT_INSTALL_ENV += GOPATH="$(SOURCE_DIR)/gopath"
BUILD_BITS= 64
BUILD_STYLE= justmake
include $(WS_MAKE_RULES)/common.mk
# We have to fiddle with the package archives to get them into the same source
# directory so that we can use the standard build targets. We're effectively
# building multiple components using a single target.
COMPONENT_POST_UNPACK_ACTION= \
$(MV) go $(COMPONENT_SRC)
# Go doesn't have a standard Makefile-based build process, so override the
# default.
COMPONENT_BUILD_ACTION= \
cd $(@D)/src; $(ENV) $(COMPONENT_BUILD_ENV) ./make.bash
COMPONENT_TARGET_DIR= \
$(PROTOUSRLIBDIR)/$(COMPONENT_NAME)/$(COMPONENT_MAJOR_VERSION)
# We can't do any ASLR'ing as the Go 6l linker has no understanding of the
# -z aslr=... option. So just override where needed in the .p5m files.
ASLR_MODE = $(ASLR_DISABLE)
COMPONENT_TEST_ENV += PATH="$(@D)/bin:$(PATH)"
COMPONENT_TEST_ENV += GOROOT="$(@D)"
COMPONENT_TEST_DIR= $(@D)/src
COMPONENT_TEST_CMD= ./run.bash
COMPONENT_TEST_TARGETS=
# Use this Command to copy the Go Source tree into the proto area. In order to deliver the Go SDK under GOROOT
# Additionally nuke all the funky binary files used for test suites. They keep bothering the packaging tools
define COMPONENT_INSTALL_ACTION=
($(MKDIR) $(COMPONENT_TARGET_DIR)/src); \
(cd $(SOURCE_DIR) && \
/usr/gnu/bin/find . -maxdepth 1 -path "./$(COMPONENT_SRC_NAME)" \
-prune -o \( ! -iname ".*" \) -print \
-exec /usr/gnu/bin/cp -r \
--parents {} $(COMPONENT_TARGET_DIR) \;); \
(cd $(BUILD_DIR_64) && \
/usr/gnu/bin/find src -type f \
-exec /usr/gnu/bin/cp --parents {} $(COMPONENT_TARGET_DIR) \;); \
(cd $(BUILD_DIR_64) && $(CP) -r bin $(COMPONENT_TARGET_DIR)/); \
(cd $(BUILD_DIR_64) && $(CP) -r pkg $(COMPONENT_TARGET_DIR)/); \
(rm -r $(COMPONENT_TARGET_DIR)/pkg/obj); \
($(MKDIR) -p $(MEDIATEDUSRSHAREMAN1DIR)); \
/usr/gnu/bin/find $(COMPONENT_TARGET_DIR)/src -type f \
| egrep -v '\.go|\.s|\.bash|\.txt|\.c|\.tmpl|\.h|\.pl|\.md|\.S|\.py|\.dist|\.rc|\.bat|README|Makefile|\.awk|\.rules|\.mod|\.json|LICENSE|PATENTS'\
| xargs rm;
endef
REQUIRED_PACKAGES += developer/golang-115
# Auto-generated dependencies
REQUIRED_PACKAGES += system/library

File diff suppressed because it is too large Load diff

View file

@ -1,27 +0,0 @@
Copyright (c) 2009 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,25 +0,0 @@
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright 2021 Till Wegmueller
#
set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="$(COMPONENT_SUMMARY)"
set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
depend type=require fmri=developer/golang-116

View file

@ -1,12 +0,0 @@
diff -ruN golang-1.9.orig/src/runtime/runtime-gdb_test.go golang-1.9/src/runtime/runtime-gdb_test.go
--- golang-1.9.orig/src/runtime/runtime-gdb_test.go 2017-08-24 14:50:31.000000000 -0700
+++ golang-1.9/src/runtime/runtime-gdb_test.go 2017-08-27 08:46:28.054298530 -0700
@@ -60,7 +60,7 @@
t.Skip("skipping gdb python tests on solaris; see golang.org/issue/20821")
}
- cmd := exec.Command("gdb", "-nx", "-q", "--batch", "-iex", "python import sys; print('go gdb python support')")
+ cmd := exec.Command("gdb", "-nx", "-q", "--batch", "-iex", "/usr/bin/amd64/python import sys; print('go gdb python support')")
out, err := cmd.CombinedOutput()
if err != nil {

View file

@ -1,41 +0,0 @@
--- golang-1.10/src/syscall/zsyscall_solaris_amd64.go 2018-02-16 09:12:19.000000000 +0000
+++ golang-1.10/src/syscall/zsyscall_solaris_amd64.go.1 2018-05-01 03:21:18.224140250 +0000
@@ -21,6 +21,7 @@
//go:cgo_import_dynamic libc_Chroot chroot "libc.so"
//go:cgo_import_dynamic libc_Close close "libc.so"
//go:cgo_import_dynamic libc_Dup dup "libc.so"
+//go:cgo_import_dynamic libc_Dup2 dup2 "libc.so"
//go:cgo_import_dynamic libc_Fchdir fchdir "libc.so"
//go:cgo_import_dynamic libc_Fchmod fchmod "libc.so"
//go:cgo_import_dynamic libc_Fchown fchown "libc.so"
@@ -105,6 +106,7 @@
//go:linkname libc_Chroot libc_Chroot
//go:linkname libc_Close libc_Close
//go:linkname libc_Dup libc_Dup
+//go:linkname libc_Dup2 libc_Dup2
//go:linkname libc_Fchdir libc_Fchdir
//go:linkname libc_Fchmod libc_Fchmod
//go:linkname libc_Fchown libc_Fchown
@@ -192,6 +194,7 @@
libc_Chroot,
libc_Close,
libc_Dup,
+ libc_Dup2,
libc_Fchdir,
libc_Fchmod,
libc_Fchown,
@@ -410,6 +413,14 @@
return
}
+func Dup2(oldfd int, newfd int) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&libc_Dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
func Fchdir(fd int) (err error) {
_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&libc_Fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)
if e1 != 0 {

View file

@ -1,284 +0,0 @@
Generated by the following ruby script
puts(<<HEADER)
// +build amd64,solaris
package syscall
const (
HEADER
syscall_h = File.readlines('/usr/include/sys/syscall.h')
calls = {}
syscall_h.each do |line|
m = line.match(/#define\s(SYS_[^\s]*)\s+(\d+)/)
if m
calls[m[1].upcase] = m[2]
end
end
width = calls.keys.max_by { |x| x.length }.length + 1
calls.each do |call, num|
printf("\t%-#{width}s = %d\n", call, num)
end
puts ")"
--- golang-1.6.2/src/syscall/zsysnum_solaris_amd64.go.orig 2016-04-27 22:29:15.592868144 +0300
+++ golang-1.6.2/src/syscall/zsysnum_solaris_amd64.go 2016-04-27 22:29:34.483620796 +0300
@@ -1,13 +1,250 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
// +build amd64,solaris
package syscall
-// TODO(aram): remove these before Go 1.3.
const (
- SYS_EXECVE = 59
- SYS_FCNTL = 62
+ SYS_SYSCALL = 0
+ SYS_EXIT = 1
+ SYS_READ = 3
+ SYS_WRITE = 4
+ SYS_OPEN = 5
+ SYS_CLOSE = 6
+ SYS_LINKAT = 7
+ SYS_LINK = 9
+ SYS_UNLINK = 10
+ SYS_SYMLINKAT = 11
+ SYS_CHDIR = 12
+ SYS_TIME = 13
+ SYS_MKNOD = 14
+ SYS_CHMOD = 15
+ SYS_CHOWN = 16
+ SYS_BRK = 17
+ SYS_STAT = 18
+ SYS_LSEEK = 19
+ SYS_GETPID = 20
+ SYS_MOUNT = 21
+ SYS_READLINKAT = 22
+ SYS_SETUID = 23
+ SYS_GETUID = 24
+ SYS_STIME = 25
+ SYS_PCSAMPLE = 26
+ SYS_ALARM = 27
+ SYS_FSTAT = 28
+ SYS_PAUSE = 29
+ SYS_STTY = 31
+ SYS_GTTY = 32
+ SYS_ACCESS = 33
+ SYS_NICE = 34
+ SYS_STATFS = 35
+ SYS_SYNC = 36
+ SYS_KILL = 37
+ SYS_FSTATFS = 38
+ SYS_PGRPSYS = 39
+ SYS_UUCOPYSTR = 40
+ SYS_PIPE = 42
+ SYS_TIMES = 43
+ SYS_PROFIL = 44
+ SYS_FACCESSAT = 45
+ SYS_SETGID = 46
+ SYS_GETGID = 47
+ SYS_MKNODAT = 48
+ SYS_MSGSYS = 49
+ SYS_SYSI86 = 50
+ SYS_ACCT = 51
+ SYS_SHMSYS = 52
+ SYS_SEMSYS = 53
+ SYS_IOCTL = 54
+ SYS_UADMIN = 55
+ SYS_FCHOWNAT = 56
+ SYS_UTSSYS = 57
+ SYS_FDSYNC = 58
+ SYS_EXECVE = 59
+ SYS_UMASK = 60
+ SYS_CHROOT = 61
+ SYS_FCNTL = 62
+ SYS_ULIMIT = 63
+ SYS_RENAMEAT = 64
+ SYS_UNLINKAT = 65
+ SYS_FSTATAT = 66
+ SYS_FSTATAT64 = 67
+ SYS_OPENAT = 68
+ SYS_OPENAT64 = 69
+ SYS_TASKSYS = 70
+ SYS_ACCTCTL = 71
+ SYS_EXACCTSYS = 72
+ SYS_GETPAGESIZES = 73
+ SYS_RCTLSYS = 74
+ SYS_SIDSYS = 75
+ SYS_LWP_PARK = 77
+ SYS_SENDFILEV = 78
+ SYS_RMDIR = 79
+ SYS_MKDIR = 80
+ SYS_GETDENTS = 81
+ SYS_PRIVSYS = 82
+ SYS_UCREDSYS = 83
+ SYS_SYSFS = 84
+ SYS_GETMSG = 85
+ SYS_PUTMSG = 86
+ SYS_LSTAT = 88
+ SYS_SYMLINK = 89
+ SYS_READLINK = 90
+ SYS_SETGROUPS = 91
+ SYS_GETGROUPS = 92
+ SYS_FCHMOD = 93
+ SYS_FCHOWN = 94
+ SYS_SIGPROCMASK = 95
+ SYS_SIGSUSPEND = 96
+ SYS_SIGALTSTACK = 97
+ SYS_SIGACTION = 98
+ SYS_SIGPENDING = 99
+ SYS_CONTEXT = 100
+ SYS_FCHMODAT = 101
+ SYS_MKDIRAT = 102
+ SYS_STATVFS = 103
+ SYS_FSTATVFS = 104
+ SYS_GETLOADAVG = 105
+ SYS_NFSSYS = 106
+ SYS_WAITID = 107
+ SYS_SIGSENDSYS = 108
+ SYS_HRTSYS = 109
+ SYS_UTIMESYS = 110
+ SYS_SIGRESEND = 111
+ SYS_PRIOCNTLSYS = 112
+ SYS_PATHCONF = 113
+ SYS_MINCORE = 114
+ SYS_MMAP = 115
+ SYS_MPROTECT = 116
+ SYS_MUNMAP = 117
+ SYS_FPATHCONF = 118
+ SYS_VFORK = 119
+ SYS_FCHDIR = 120
+ SYS_READV = 121
+ SYS_WRITEV = 122
+ SYS_PREADV = 123
+ SYS_PWRITEV = 124
+ SYS_GETRANDOM = 126
+ SYS_MMAPOBJ = 127
+ SYS_SETRLIMIT = 128
+ SYS_GETRLIMIT = 129
+ SYS_LCHOWN = 130
+ SYS_MEMCNTL = 131
+ SYS_GETPMSG = 132
+ SYS_PUTPMSG = 133
+ SYS_RENAME = 134
+ SYS_UNAME = 135
+ SYS_SETEGID = 136
+ SYS_SYSCONFIG = 137
+ SYS_ADJTIME = 138
+ SYS_SYSTEMINFO = 139
+ SYS_SHAREFS = 140
+ SYS_SETEUID = 141
+ SYS_FORKSYS = 142
+ SYS_SIGTIMEDWAIT = 144
+ SYS_LWP_INFO = 145
+ SYS_YIELD = 146
+ SYS_LWP_SEMA_POST = 148
+ SYS_LWP_SEMA_TRYWAIT = 149
+ SYS_LWP_DETACH = 150
+ SYS_CORECTL = 151
+ SYS_MODCTL = 152
+ SYS_FCHROOT = 153
+ SYS_VHANGUP = 155
+ SYS_GETTIMEOFDAY = 156
+ SYS_GETITIMER = 157
+ SYS_SETITIMER = 158
+ SYS_LWP_CREATE = 159
+ SYS_LWP_EXIT = 160
+ SYS_LWP_SUSPEND = 161
+ SYS_LWP_CONTINUE = 162
+ SYS_LWP_KILL = 163
+ SYS_LWP_SELF = 164
+ SYS_LWP_SIGMASK = 165
+ SYS_LWP_PRIVATE = 166
+ SYS_LWP_WAIT = 167
+ SYS_LWP_MUTEX_WAKEUP = 168
+ SYS_LWP_COND_WAIT = 170
+ SYS_LWP_COND_SIGNAL = 171
+ SYS_LWP_COND_BROADCAST = 172
+ SYS_PREAD = 173
+ SYS_PWRITE = 174
+ SYS_LLSEEK = 175
+ SYS_INST_SYNC = 176
+ SYS_BRAND = 177
+ SYS_KAIO = 178
+ SYS_CPC = 179
+ SYS_LGRPSYS = 180
+ SYS_RUSAGESYS = 181
+ SYS_PORT = 182
+ SYS_POLLSYS = 183
+ SYS_LABELSYS = 184
+ SYS_ACL = 185
+ SYS_AUDITSYS = 186
+ SYS_PROCESSOR_BIND = 187
+ SYS_PROCESSOR_INFO = 188
+ SYS_P_ONLINE = 189
+ SYS_SIGQUEUE = 190
+ SYS_CLOCK_GETTIME = 191
+ SYS_CLOCK_SETTIME = 192
+ SYS_CLOCK_GETRES = 193
+ SYS_TIMER_CREATE = 194
+ SYS_TIMER_DELETE = 195
+ SYS_TIMER_SETTIME = 196
+ SYS_TIMER_GETTIME = 197
+ SYS_TIMER_GETOVERRUN = 198
+ SYS_NANOSLEEP = 199
+ SYS_FACL = 200
+ SYS_DOOR = 201
+ SYS_SETREUID = 202
+ SYS_SETREGID = 203
+ SYS_INSTALL_UTRAP = 204
+ SYS_SIGNOTIFY = 205
+ SYS_SCHEDCTL = 206
+ SYS_PSET = 207
+ SYS_SPARC_UTRAP_INSTALL = 208
+ SYS_RESOLVEPATH = 209
+ SYS_LWP_MUTEX_TIMEDLOCK = 210
+ SYS_LWP_SEMA_TIMEDWAIT = 211
+ SYS_LWP_RWLOCK_SYS = 212
+ SYS_GETDENTS64 = 213
+ SYS_MMAP64 = 214
+ SYS_STAT64 = 215
+ SYS_LSTAT64 = 216
+ SYS_FSTAT64 = 217
+ SYS_STATVFS64 = 218
+ SYS_FSTATVFS64 = 219
+ SYS_SETRLIMIT64 = 220
+ SYS_GETRLIMIT64 = 221
+ SYS_PREAD64 = 222
+ SYS_PWRITE64 = 223
+ SYS_OPEN64 = 225
+ SYS_RPCSYS = 226
+ SYS_ZONE = 227
+ SYS_AUTOFSSYS = 228
+ SYS_GETCWD = 229
+ SYS_SO_SOCKET = 230
+ SYS_SO_SOCKETPAIR = 231
+ SYS_BIND = 232
+ SYS_LISTEN = 233
+ SYS_ACCEPT = 234
+ SYS_CONNECT = 235
+ SYS_SHUTDOWN = 236
+ SYS_RECV = 237
+ SYS_RECVFROM = 238
+ SYS_RECVMSG = 239
+ SYS_SEND = 240
+ SYS_SENDMSG = 241
+ SYS_SENDTO = 242
+ SYS_GETPEERNAME = 243
+ SYS_GETSOCKNAME = 244
+ SYS_GETSOCKOPT = 245
+ SYS_SETSOCKOPT = 246
+ SYS_SOCKCONFIG = 247
+ SYS_NTP_GETTIME = 248
+ SYS_NTP_ADJTIME = 249
+ SYS_LWP_MUTEX_UNLOCK = 250
+ SYS_LWP_MUTEX_TRYLOCK = 251
+ SYS_LWP_MUTEX_REGISTER = 252
+ SYS_CLADM = 253
+ SYS_UUCOPY = 254
+ SYS_UMOUNT2 = 255
)

View file

@ -1,12 +0,0 @@
{
"dependencies": [
"SUNWcs",
"developer/golang-115",
"system/library"
],
"fmris": [
"developer/golang",
"developer/golang-116"
],
"name": "golang"
}

View file

@ -1,96 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
#
BUILD_BITS= 64_and_32
PREFERRED_BITS= 64
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME= cups
COMPONENT_VERSION= 2.3.3
COMPONENT_REVISION= 1
COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_PROJECT_URL= http://www.cups.org/
COMPONENT_ARCHIVE= $(COMPONENT_SRC)-source.tar.gz
COMPONENT_ARCHIVE_HASH= sha256:261fd948bce8647b6d5cb2a1784f0c24cc52b5c4e827b71d726020bcc502f3ee
COMPONENT_ARCHIVE_URL= https://github.com/apple/cups/releases/download/v$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
COMPONENT_BUGDB= utility/cups
include $(WS_MAKE_RULES)/common.mk
# don't use LD_Z_IGNORE: causes linker problems
LD_Z_IGNORE=
LDFLAGS += -lsocket
CONFIGURE_ENV += DSOFLAGS="$(LDFLAGS)"
CONFIGURE_ENV += LDFLAGS="$(LDFLAGS)"
COMPONENT_BUILD_ENV += LDFLAGS="$(LDFLAGS)"
CONFIGURE_OPTIONS += --prefix=/usr
CONFIGURE_OPTIONS += --mandir=/usr/share/man
CONFIGURE_OPTIONS += --localedir=$(USRSHARELOCALEDIR)
CONFIGURE_OPTIONS += --sysconfdir=$(ETCDIR)
CONFIGURE_OPTIONS += --localstatedir=/var
CONFIGURE_OPTIONS += --with-fontpath=/usr/openwin/lib
CONFIGURE_OPTIONS += --with-logdir=/var/log/cups
CONFIGURE_OPTIONS += --with-domainsocket=/var/run/cups-socket
CONFIGURE_OPTIONS += --with-smfmanifestdir=/lib/svc/manifest/application
CONFIGURE_OPTIONS += --with-printcap=/etc/printers.conf
CONFIGURE_OPTIONS += --with-cups-user=lp
CONFIGURE_OPTIONS += --with-cups-group=lp
CONFIGURE_OPTIONS += --disable-systemd
CONFIGURE_OPTIONS += --disable-static
CONFIGURE_OPTIONS += --enable-dbus
CONFIGURE_OPTIONS += --enable-threads
CONFIGURE_OPTIONS += --with-archflags="$(CC_BITS)"
#$(BUILD_DIR)/%/.installed: ENV += DSTROOT="$(PROTO_DIR)"
#COMPONENT_PRE_CONFIGURE_ACTION = \
# $(CLONEY) $(SOURCE_DIR) $(@D) ; \
# find $(@D) -name '*.in' | sed -e 's/.in$$//' | xargs $(RM) ; \
# ( cd $(SOURCE_DIR) ; autoconf -f )
# Build dependencies
REQUIRED_PACKAGES += image/library/libpng16
REQUIRED_PACKAGES += image/library/libtiff
REQUIRED_PACKAGES += service/network/dns/mdns
REQUIRED_PACKAGES += service/network/slp
# Auto-generated dependencies
REQUIRED_PACKAGES += $(GCC_RUNTIME_PKG)
REQUIRED_PACKAGES += $(GXX_RUNTIME_PKG)
REQUIRED_PACKAGES += SUNWcs
REQUIRED_PACKAGES += library/gnutls-3
REQUIRED_PACKAGES += library/libusb-1
#REQUIRED_PACKAGES += library/print/cups-libs
REQUIRED_PACKAGES += library/zlib
REQUIRED_PACKAGES += runtime/perl-522
REQUIRED_PACKAGES += service/security/kerberos-5
REQUIRED_PACKAGES += shell/ksh93
REQUIRED_PACKAGES += system/library
REQUIRED_PACKAGES += system/library/libdbus
REQUIRED_PACKAGES += system/library/math
REQUIRED_PACKAGES += system/library/security/gss
REQUIRED_PACKAGES += system/network/avahi

View file

@ -1,20 +0,0 @@
<HTML>
<HEAD>
<!--
Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
-->
<!--
META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"
-->
<!--
META NAME="GENERATOR" CONTENT="Mozilla/4.02 [en] (X11; U; SunOS 5.6 sun4u) [Netscape]"
-->
</HEAD>
<BODY>
When the Manage CUPS Authorization is in the Authorizations Included column, it
grants permission to enable, disable or restart the CUPS Printing Services.
<p>
If the Manage CUPS Authorization is grayed, then you are not entitled to Add or Remove this authorization.
<BR>&nbsp;
</BODY>
</HTML>

View file

@ -1 +0,0 @@
solaris.smf.manage.cups:::Manage CUPS service states::help=ManageCUPS.html

View file

@ -1,30 +0,0 @@
#! /usr/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
#
# For the time being, this will launch a browser pointing to the
# CUPS Web interface.
exec /usr/bin/system-config-printer
exec gnome-open http://localhost:631/admin/

View file

@ -1,29 +0,0 @@
#! /usr/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
#
# There is no applet to start at this time, exit gracefully
exec /usr/lib/system-config-printer/system-config-printer-applet
exit 0

View file

@ -1,76 +0,0 @@
#!/bin/ksh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#ident "@(#)print-service-selector 1.1 09/10/23 SMI"
. /lib/svc/share/smf_include.sh
CUPS_SVC='cups/scheduler'
CUPS_BIN='/usr/lib/cups/bin/lp'
LP_BIN='/usr/lib/lp/bin/lp'
ACTIVE_SVC_PROP='general/active'
is_cups_active()
{
ACTIVE=$( /usr/bin/svcprop -C -p "$ACTIVE_SVC_PROP" "${CUPS_SVC}:default" \
2>/dev/null )
[[ "$ACTIVE" == 'true' ]]
}
is_lp_installed()
{
[[ -f "$LP_BIN" ]]
}
is_cups_installed()
{
[[ -f "$CUPS_BIN" ]]
}
set_cups_active()
{
if ! /usr/sbin/print-service -s cups
then
echo "ERROR: Unable to set CUPS as the default print service" >&2
exit $SMF_EXIT_ERR_FATAL
fi
}
if is_lp_installed
then
# Do nothing. They either upgraded, installed LP only, or both.
# In any of these cases, we either want the default or the previously
# selected behaviour.
true
elif is_cups_installed
then
# LP is not installed -- make CUPS the default if it is not already
is_cups_active || set_cups_active
else
echo "ERROR: Neither CUPS nor LP packages installed" >&2
exit $SMF_EXIT_ERR_FATAL
fi
exit $SMF_EXIT_OK

View file

@ -1 +0,0 @@
CUPS Administration:RO:::auths=solaris.smf.manage.cups

View file

@ -1,100 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
Copyright 2010 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
CDDL HEADER START
The contents of this file are subject to the terms of the
Common Development and Distribution License (the "License").
You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
or http://www.opensolaris.org/os/licensing.
See the License for the specific language governing permissions
and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each
file and include the License file at usr/src/OPENSOLARIS.LICENSE.
If applicable, add the following below this CDDL HEADER, with the
fields enclosed by brackets "[]" replaced with your own identifying
information: Portions Copyright [yyyy] [name of copyright owner]
CDDL HEADER END
ident "@(#)service-selector.xml 1.2 10/01/04 SMI"
NOTE: This service manifest is not editable; its contents will
be overwritten by package or patch operations, including
operating system upgrade. Make customizations in a different
file.
Service to set the default print service.
-->
<service_bundle type='manifest' name='SUNWpcu:print-service-selector'>
<service
name='application/print/service-selector'
type='service'
version='1'>
<create_default_instance enabled='true' />
<single_instance />
<!--
This service sets the default print service depending on the
services available.
-->
<dependency
name='usr'
type='service'
grouping='require_all'
restart_on='none'>
<service_fmri value='svc:/system/filesystem/minimal' />
</dependency>
<!--
This dependency is required to ensure that the cups manifest has
been imported prior to selecting a default print service.
-->
<dependency
name='cups-manifest-import'
type='service'
grouping='optional_all'
restart_on='none'>
<service_fmri value='svc:/system/manifest-import' />
</dependency>
<exec_method
type='method'
name='start'
exec='/lib/svc/method/print-service-selector'
timeout_seconds='0' />
<exec_method
type='method'
name='stop'
exec=':true'
timeout_seconds='0' />
<property_group name='startd' type='framework'>
<propval name='duration' type='astring' value='transient' />
</property_group>
<stability value='Unstable' />
<template>
<common_name>
<loctext xml:lang='C'>
print service selector
</loctext>
</common_name>
</template>
</service>
</service_bundle>

View file

@ -1,28 +0,0 @@
#!/usr/bin/perl
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
#
# a simple shell script for SMB printing that can either use SAMBA's smbspool(1)
# or a native smb print client should it materialize in the future.
#
(-f '/etc/samba/smb.conf') && exec('/usr/bin/smbspool', @ARGV);
exit(1);

View file

@ -1,33 +0,0 @@
#!/usr/bin/ksh
#
# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
#
#
# Standard prolog
#
. /lib/svc/share/smf_include.sh
if [ -z "$SMF_FMRI" ] ; then
echo "SMF framework variables are not initialized."
exit $SMF_EXIT_ERR_NOSMF
fi
# directory where to look for startup scripts
STARTUP=/usr/lib/cups/startup
# for all startup scripts found in the directory
for SCRIPT in $STARTUP/* ; do
# verify the script is executable
[ -x "$SCRIPT" ] || continue
# execute the script
if ! "$SCRIPT" "$SMF_FMRI" "startup/${SCRIPT##*/}" ; then
echo "Warning: startup script $SCRIPT failed."
fi
done
# execute the CUPS daemon
exec /usr/sbin/cupsd
# fatal error, failed to execute CUPS daemon
exit $SMF_EXIT_ERR_FATAL

View file

@ -1,7 +0,0 @@
%
% Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
%
% works in conjunction with tsol_separator.ps to do a banner page
%
SeparatorPagesDict /Banner get exec

View file

@ -1,619 +0,0 @@
%%
%% Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
%%
%%
%% This PostScript file is used as input to tsol_labeled_banner,
%% which will prepend code to set the values of a number of
%% variables.
%% This PostScript file may be modified for local customizations or
%% internationalization. Comments marked "INTERNATIONALIZE:" show
%% places where changes may be made for internationalization. Comments
%% marked "CUSTOMIZE:" show places where some typical customization
%% changes may be made.
%% The following comments describe variables set by tsol_labeled_banner
%% These variables are from the print job information that can be
%% displayed with lpstat or lpq.
%%
%% /Job_Classification The classification (from the sensitivity label) to
%% be displayed at the top and bottom of the banner
%% /Job_Printer Printer Name
%% /Job_Host Host job was submitted from
%% /Job_User User who submitted the job
%% /Job_JobID Job number
%% /Job_Title Job title
%%
%% Job Page labels are added in pstops filter, so page labels should not be
%% added here.
%%
%% /Job_DoPageLabels Print page labels NO.
%%
%% These variables are generated from the system clock value.
%%
%% /Job_Date Date and time the job is being printed, in the
%% locale's default format
%% /Job_Hash A randomly generatred identifying number for
%% matching up the banner and trailer pages of the job
%%
%%
%% The following variables are the job's labels
%% as interpreted by the bcltobanner(3TSOL) library routine.
%%
%% /Job_Classification The classification (from the sensitivity label) to be
%% displayed at the top and bottom of the banner page.
%% /Job_Protect The sensitivity label to be displayed in the protect-as
%% field.
%% /Job_Caveats The caveats from the sesitivity label.
%% /Job_Channels The channels from the sesitivity label.
%%
%%
%% The following variables are the job's Sensitivity Label and
%% Information Label as interpreted by the bsltos and biltos library
%% routines.
%%
%% /Job_SL_Internal The sensitivity label in internal view format.
%% /Job_SL_External The sensitivity label in external view format.
/SeparatorPagesDict 100 dict def
userdict /JobDict known not {
userdict /JobDict 100 dict put
} if
SeparatorPagesDict
begin
%% CUSTOMIZE: To print header page label left-justified, set this to false
/center_label true def
/center_show where {
pop
} {
userdict /center_show
{
dup stringwidth exch
2 div neg exch rmoveto show
} put
} ifelse
/append where
{ pop }
{
/append
{
1 index length 1 index length add
1 index dup type /dicttype eq
{
pop dict
begin
exch { def } forall
{ def } forall
currentdict
end
}
{
/arraytype eq { array } { string } ifelse
dup 4 -1 roll 1 index copy length 4 -1 roll putinterval
}
ifelse
} def
} ifelse
/fontheight
systemdict /fontheight known
{ systemdict /fontheight get }
{
{
gsave
setfont (qf) true charpath flattenpath pathbbox
4 -1 roll pop exch pop exch sub
grestore
}
} ifelse
def
/m { moveto } def
/r { rmoveto } def
/rl { rlineto } def
/NewLine {
currentpoint exch pop
currentfont fontheight sub errorx0 exch moveto
} def
/clipSL {
/MaxWidth exch def
dup stringwidth pop MaxWidth gt {
{
dup stringwidth pop (<-) stringwidth pop add MaxWidth le {exit} if
dup 0 exch length 1 sub getinterval
} loop
(<-)
%% Concatenate strings
dup length 2 index length add 1 index pop string
dup 0 4 index putinterval
dup 4 -1 roll length 4 -1 roll putinterval
} if
} def
/BreakWithBlanks {
{restoftext ( ) search
{
/blank_nextword exch def pop
/blank_restoftext exch def
/blank_wordwidth blank_nextword stringwidth pop def
restoftext (/) search
{
/slash_nextword exch def pop
/slash_restoftext exch def
/slash_wordwidth slash_nextword stringwidth pop def
blank_wordwidth slash_wordwidth lt
{
/nextword blank_nextword def
/restoftext blank_restoftext def
/wordwidth blank_wordwidth def
/breakwidth ( ) stringwidth pop def
}
{
/nextword slash_nextword def
/restoftext slash_restoftext def
/wordwidth slash_wordwidth def
/breakwidth (/) stringwidth pop def
}ifelse
}
{
pop
/nextword blank_nextword def
/restoftext blank_restoftext def
/wordwidth blank_wordwidth def
/breakwidth ( ) stringwidth pop def
}ifelse
curwidth wordwidth add linewidth gt
{textstring startchar
lastwordbreak startchar sub
getinterval proc
/startchar lastwordbreak def
/curwidth wordwidth breakwidth add def }
{/curwidth curwidth wordwidth add
breakwidth add def
} ifelse
/lastwordbreak lastwordbreak
nextword length add 1 add def
}
{pop BreakWithSlashes exit}
ifelse
}loop
}def
/BreakWithSlashes
{
/breakchar (/) def
/breakwidth breakchar stringwidth pop def
{restoftext breakchar search
{/nextword exch def pop
/restoftext exch def
/wordwidth nextword stringwidth pop def
curwidth wordwidth add linewidth gt
{textstring startchar
lastwordbreak startchar sub
getinterval proc
/startchar lastwordbreak def
/curwidth wordwidth breakwidth add def }
{/curwidth curwidth wordwidth add
breakwidth add def
} ifelse
/lastwordbreak lastwordbreak
nextword length add 1 add def
}
{pop exit}
ifelse
}loop
}def
/BreakIntoLines
{/proc exch def
/linewidth exch 40 sub def
/textstring exch def
/curwidth 0 def
/lastwordbreak 0 def
/startchar 0 def
/restoftext textstring def
% begin scale the font if necessary
/allowedarea linewidth fbh 10 div mul def
/currentarea currentfont fontheight textstring stringwidth pop mul def
currentarea allowedarea gt
{
currentfont allowedarea currentarea div scalefont setfont
}if
% end scale the font if necessary
BreakWithBlanks
/lastchar textstring length def
textstring startchar lastchar startchar sub
getinterval proc
}def
/ShowBanner {
JobDict /Job_Proclam? get {
systemdict /showpage get cvx exec
} if
} def
/Init {
initgraphics
/#copies 1 def
initmatrix
erasepage
clippath pathbbox /fbh exch def
/fbw exch def
pop pop newpath
0 0 moveto
0 fbh translate
0 0 moveto
/margin fbh 20 div def
/imargin margin 1.1 mul def
/errorx0 imargin def
/errorx1 fbw imargin sub def
/errory1 imargin def
gsave
} def
% this stuff is lpd dependant.
/lpdglue {
userdict
begin
JobDict
begin
% If Job_Printer is defined, assume the others are too,
/Job_Printer where
{
pop
/Job_Proclam? true def
/Job_Endclam? true def
/Printer Job_Printer def
/Host Job_Host def
/User Job_User def
/Title Job_Title def
/JobID Job_JobID def
/Date Job_Date def
%% CUSTOMIZE: To use a different string at the top and
%% bottom of each page, change the following line. For
%% instance, to use the sensitivity label in external view
%% format, change the line to: /PageLabel Job_SL_External def
%% To eliminate page labels completely, change this line to
%% set the page label to an empty string: /PageLabel () def
/PageLabel Job_SL_Internal def
Job_Protect () eq
{
%% Job_Protect is empty because SLs are turned
%% off in secconf. (Turning off SLs is actually not yet
%% supported by the system.)
/Protect () def
/Protect_Text1 () def
/Protect_Text2 () def
}
{
%% INTERNATIONALIZE/CUSTOMIZE: Replace the text between
%% parentheses with the appropriate text to display
%% above and below the SL.
/Protect Job_Protect def
/Protect_Text1 (This output must be protected as:) def
/Protect_Text2 (unless manually reviewed and downgraded.) def
}
ifelse
%% CUSTOMIZE: To not print the caveats, change
%% this line to /Caveats () def
/Caveats Job_Caveats def
%% CUSTOMIZE: To not print the channels, change
%% this line to /Channels () def
/Channels Job_Channels def
%% CUSTOMIZE: To not print the hash number, change
%% this line to /Hash () def
/Hash Job_Hash def
%% CUSTOMIZE: To not print the head label, change
%% this line to /HeadLabel () def
%% You may also substitute another string. For example, to use
%% the SL in internal view format: /HeadLabel Job_SL_Internal def
/HeadLabel Job_Classification def
} {
/Job_Proclam? false def
/Job_Endclam? false def
} ifelse
end
end
} def
/border {
gsave
setlinewidth
setgray
30 -20 moveto
0 60 fbh sub rlineto
fbw 60 sub 0 rlineto
0 fbh 60 sub rlineto
60 currentlinewidth 2 div sub fbw sub 0 rlineto
stroke
grestore
} def
/TSOLJobInfo {
gsave
/fontscale fbh 50 div def
/Courier-Bold findfont fontscale scalefont setfont
/ClippedLabel
JobDict /HeadLabel get
SeparatorPagesDict /fbw get 90 sub
SeparatorPagesDict /clipSL get exec
def
/head_len {
ClippedLabel stringwidth pop 5 add
HeadLabel () eq { pop 0 } if
} def
15 setlinewidth
fbw 2 div head_len 2 div sub -20 moveto
head_len 0 rlineto stroke
1 setgray
fbw 10 div -25 m gsave ClippedLabel
currentpoint exch pop fbw 2 div exch moveto
center_show NewLine grestore
0 setgray
/fontscale fbh 70 div def
/Helvetica findfont fontscale scalefont setfont
0 fbh 8 div neg r Protect_Text1
currentpoint exch pop
center_label {
fbw 2 div exch moveto center_show
}
{
fbw 10 div exch moveto show
}
ifelse
/fontscale fbh 60 div def
/Helvetica-Bold findfont fontscale scalefont setfont
0 fbh 150 div neg r
Protect
fbw errorx0 3 mul sub % width minus margins
center_label {
{NewLine currentpoint exch pop fbw 2 div exch moveto center_show}
BreakIntoLines
}
{
{NewLine currentpoint exch pop fbw 10 div exch moveto show}
BreakIntoLines
}
ifelse
/fontscale fbh 70 div def
/Helvetica findfont fontscale scalefont setfont
0 fbh 50 div neg r Protect_Text2
currentpoint exch pop
center_label {
fbw 2 div exch moveto center_show
}
{
fbw 10 div exch moveto show
}
ifelse
/fontscale fbh 60 div def
/Helvetica-Bold findfont fontscale scalefont setfont
0 fbh 200 div neg r
0 fbh 10 div neg r
/fontscale fbh 40 div def
/Helvetica-Bold findfont fontscale scalefont setfont
0 fbh 30 div neg r gsave
%% INTERNATIONALIZE: Replace the text between
%% parentheses with the appropriate text.
(User: ) User (@) Host append append append
currentpoint exch pop fbw 2 div exch moveto center_show
NewLine grestore
0 fbh 30 div neg r gsave
%% INTERNATIONALIZE: Replace the text between
%% parentheses with the appropriate text.
(Job: ) JobID append
currentpoint exch pop fbw 2 div exch moveto center_show
NewLine grestore
0 fbh 30 div neg r gsave
Title
currentpoint exch pop fbw 2 div exch moveto center_show
NewLine grestore
/fontscale fbh 70 div def
/Helvetica findfont fontscale scalefont setfont
0 fbh 30 div neg r gsave
%% INTERNATIONALIZE: Replace the text between
%% parentheses with the appropriate text.
(Printed at: ) Date append
currentpoint exch pop fbw 2 div exch moveto center_show
NewLine grestore
0 fbh 30 div neg r gsave
%% INTERNATIONALIZE: Replace the text between
%% parentheses with the appropriate text.
(Printer queue: ) Printer append
currentpoint exch pop fbw 2 div exch moveto center_show
NewLine grestore
/Helvetica-Bold findfont fontscale scalefont setfont
0 fbh 20 div neg r
Caveats
fbw errorx0 3 mul sub % width minus margins
{NewLine currentpoint exch pop fbw 2 div exch moveto center_show}
BreakIntoLines
0 fbh 30 div neg r
Channels
fbw errorx0 3 mul sub % width minus margins
{NewLine currentpoint exch pop fbw 2 div exch moveto center_show}
BreakIntoLines
/fontscale fbh 50 div def
/Courier-Bold findfont fontscale scalefont setfont
15 setlinewidth
fbw 2 div head_len 2 div sub 40 fbh sub moveto
head_len 0 rlineto stroke
1 setgray
fbw 10 div 35 fbh sub m gsave ClippedLabel
currentpoint exch pop fbw 2 div exch moveto center_show
NewLine grestore
grestore
} def
/JobHashInfo {
gsave
0 setgray
/fontscale fbh 50 div def
/Helvetica-Bold findfont fontscale scalefont setfont
%% Upper left corner
Hash
fbw 12 div 50 neg m gsave show grestore
%% Lower left corner
Hash
fbw 12 div fbh 60 sub neg m gsave show grestore
%% Lower right corner
Hash dup stringwidth pop
fbw 11 mul 12 div exch sub fbh 60 sub neg m gsave show grestore
%% Upper right corner
Hash dup stringwidth pop
fbw 11 mul 12 div exch sub 50 neg m gsave show grestore
/fontscale fbh 40 div def
/Helvetica-Bold findfont fontscale scalefont setfont
fbw 10 div 120 fbh sub m gsave
currentpoint exch pop fbw 2 div exch moveto center_show
grestore
} def
/jobproclam {
JobDict
begin
Job_Proclam?
%% INTERNATIONALIZE: Replace the text between
%% parentheses with the appropriate text.
{ TSOLJobInfo (JOB START) JobHashInfo}
{ 0 -100 rmoveto }
ifelse
end
} def
/jobendclam {
JobDict
begin
Job_Endclam?
%% INTERNATIONALIZE: Replace the text between
%% parentheses with the appropriate text.
{ TSOLJobInfo (JOB END) JobHashInfo}
{ 0 -100 rmoveto }
ifelse
end
} def
/JobProclam {
jobproclam
} def
/JobEndclam {
jobendclam
} def
% A fancy box around page
/BannerBorder {
.7 16 border
} def
/TrailerBorder {
0 4 border
} def
%
% -------------------------------------------------------------------------
%
% The structure of separator pages is defined below. This is invoked by
% using a line like:
%
% SeparatorPagesDict /Banner get exec
%
/Banner {
SeparatorPagesDict
begin
Init
lpdglue
BannerBorder
JobProclam
end
} def
/Trailer {
SeparatorPagesDict
begin
Init
lpdglue
TrailerBorder
JobEndclam
end
} def
/SkipPageLabels false def
end
SeparatorPagesDict begin
clippath pathbbox /fbh exch def
/fbw exch def
pop pop
lpdglue
end
JobDict /Job_DoPageLabels get (YES) eq
JobDict /PageLabel get () ne and {
userdict begin
/showpage {
systemdict /showpage get cvx exec
} bind def
end
}if
%% End of tsol_separator.ps

View file

@ -1,6 +0,0 @@
%
% Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
%
% used in conjunction with tsol_separator.ps to create a trailer page
%
SeparatorPagesDict /Trailer get exec

View file

@ -1,42 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/library/print/cups-libs@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="Common Unix Print System (CUPS) runtime libraries"
set name=com.oracle.info.description value="the Common Unix Print System (CUPS) runtime libraries"
set name=info.classification value="org.opensolaris.category.2008:System/Printing"
set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
set name=org.opensolaris.arc-caseid value=PSARC/2008/130
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license cups-license license="CUPS, GPLv2, LGPLv2.1, Aladdin, Unicode"
file path=usr/lib/libcups.so.2
file path=usr/lib/libcupsimage.so.2
link path=usr/lib/libcups.so target=libcups.so.2
link path=usr/lib/libcupsimage.so target=libcupsimage.so.2
file path=usr/lib/amd64/libcups.so.2
file path=usr/lib/amd64/libcupsimage.so.2
link path=usr/lib/amd64/libcups.so target=libcups.so.2
link path=usr/lib/amd64/libcupsimage.so target=libcupsimage.so.2

File diff suppressed because it is too large Load diff

View file

@ -1,928 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
#
# This is the template for package manifest (.p5m) file
# It contains all of the comments needed to re-construct
# the manual actions needed to convert "gmake install"
# prototype to final package shape. It collects all of the
# info originally held in install-sfw and prototype_* files.
#
# Significant portion of this file was created by hand-editing.
# So please do not reformat/sort the lines of this file strip the
# comments by using of the automate reformating tools.
<transform file path=usr.*/man/.+ -> default mangler.man.stability volatile>
<transform file path=usr/lib/cups/.+ ->default mode 0555>
set name=pkg.fmri value=pkg:/print/cups@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="Common Unix Print System (CUPS)"
set name=com.oracle.info.description value="the Common Unix Print System (CUPS)"
set name=info.classification value="org.opensolaris.category.2008:System/Printing"
set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
set name=org.opensolaris.arc-caseid value=PSARC/2008/130
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license cups-license license="CUPS, GPLv2, LGPLv2.1, Aladdin, Unicode"
# When USB/non-postscript printer is detected in desktop no test-page can be printed
# when ghostscrip is not installed.
depend fmri=print/filter/ghostscript type=require
# Default test page is in cups-filters
depend fmri=print/cups-filters type=require
#
dir group=lp path=etc/cups
dir group=lp path=etc/cups/interfaces
dir group=lp path=etc/cups/ppd
dir group=lp path=etc/cups/profiles
dir group=lp path=etc/cups/ssl mode=0700
#
dir group=lp path=var/cache/cups mode=0775
dir group=lp path=var/cache/cups/rss mode=0775
dir group=lp path=var/log/cups
#
dir group=lp path=var/spool/cups mode=0710
dir group=lp path=var/spool/cups/tmp mode=01770
dir group=lp owner=lp path=var/spool/lp mode=0775
# edited file-objects
file group=lp mode=0640 path=etc/cups/cupsd.conf preserve=true
file group=lp mode=0640 path=etc/cups/cups-files.conf preserve=true
file path=lib/svc/manifest/application/cups.xml mode=0444 \
restart_fmri=svc:/system/manifest-import:default
file Solaris/service-selector.xml path=lib/svc/manifest/application/print/service-selector.xml mode=0444 \
restart_fmri=svc:/system/manifest-import:default
file Solaris/print-service-selector path=lib/svc/method/print-service-selector
# SMF service start method script
file Solaris/svc-cupsd path=lib/svc/method/svc-cupsd
# SMF help
file Solaris/ManageCUPS.html mode=0444 \
path=usr/lib/help/auths/locale/C/ManageCUPS.html
file usr/bin/cancel path=usr/lib/cups/bin/cancel mode=0555
file usr/bin/lp path=usr/lib/cups/bin/lp mode=0555
file usr/bin/lpr path=usr/lib/cups/bin/lpr mode=0555
file usr/bin/lpstat path=usr/lib/cups/bin/lpstat mode=0555
file usr/bin/lpq path=usr/lib/cups/bin/lpq mode=0555
file usr/bin/lprm path=usr/lib/cups/bin/lprm mode=0555
file usr/sbin/cupsaccept path=usr/lib/cups/bin/cupsaccept mode=0555
file usr/sbin/lpc path=usr/lib/cups/bin/lpc mode=0555
file usr/sbin/lpmove path=usr/lib/cups/bin/lpmove mode=0555
file usr/sbin/lpadmin path=usr/lib/cups/bin/lpadmin mode=0555
file usr/sbin/lpinfo path=usr/sbin/lpinfo
link path=usr/lib/cups/bin/accept target=cupsaccept
link path=usr/lib/cups/bin/cupsdisable target=cupsaccept
link path=usr/lib/cups/bin/disable target=cupsaccept
link path=usr/lib/cups/bin/cupsenable target=cupsaccept
link path=usr/lib/cups/bin/enable target=cupsaccept
link path=usr/lib/cups/bin/cupsreject target=cupsaccept
link path=usr/lib/cups/bin/reject target=cupsaccept
# install the desktop menu related bits
file Solaris/desktop-print-management mode=0555 \
path=usr/lib/cups/bin/desktop-print-management
file Solaris/desktop-print-management-applet mode=0555 \
path=usr/lib/cups/bin/desktop-print-management-applet
file Solaris/smb mode=0555 \
path=usr/lib/cups/backend/smb
# install the service to set up CUPS as the default print service
file Solaris/auth_attr path=etc/security/auth_attr.d/cups
file Solaris/prof_attr path=etc/security/prof_attr.d/cups
file Solaris/tsol_banner.ps path=usr/lib/cups/filter/tsol_banner.ps
file Solaris/tsol_separator.ps path=usr/lib/cups/filter/tsol_separator.ps
file Solaris/tsol_trailer.ps path=usr/lib/cups/filter/tsol_trailer.ps
# Resolving file conflicts with illumos lp
# As witht the commands in /usr/bin cups commands are designed to replace lp
# But as lp is still delivered by illumos-gate we need to rename all the commands
# and their man pages and prefix them with cups so that both softwares can be installed simultaneously
# There is two ways where we can go from here.
# 1. Remove lp if it is not needed anymore and properly suceeded by cups
# 2. Modify manifest in illumos-gate to provide mediators so users can properly choose
file usr/share/man/man1/lp.1 path=usr/share/man/man1/cupslp.1
file usr/share/man/man1/lpoptions.1 path=usr/share/man/man1/cupslpoptions.1
file usr/share/man/man1/lpq.1 path=usr/share/man/man1/cupslpq.1
file usr/share/man/man1/lpr.1 path=usr/share/man/man1/cupslpr.1
file usr/share/man/man1/lprm.1 path=usr/share/man/man1/cupslprm.1
file usr/share/man/man1/lpstat.1 path=usr/share/man/man1/cupslpstat.1
file usr/share/man/man1/cancel.1 path=usr/share/man/man1/cupscancel.1
# file-objects from sample-manifest
file path=etc/cups/cups-files.conf.default
file path=etc/cups/cupsd.conf.default
file path=etc/cups/snmp.conf
file path=etc/cups/snmp.conf.default
file path=etc/dbus-1/system.d/cups.conf
file path=etc/pam.d/cups
file path=usr/sbin/cupsctl
file path=usr/sbin/cupsd
file path=usr/bin/cups-config
file path=usr/bin/cupstestppd
file path=usr/bin/ippeveprinter
file path=usr/bin/ippfind
file path=usr/bin/ipptool
file path=usr/bin/ppdc
file path=usr/bin/ppdhtml
file path=usr/bin/ppdi
file path=usr/bin/ppdmerge
file path=usr/bin/ppdpo
file path=usr/include/cups/adminutil.h
file path=usr/include/cups/array.h
file path=usr/include/cups/backend.h
file path=usr/include/cups/cups.h
file path=usr/include/cups/dir.h
file path=usr/include/cups/file.h
file path=usr/include/cups/http.h
file path=usr/include/cups/ipp.h
file path=usr/include/cups/language.h
file path=usr/include/cups/ppd.h
file path=usr/include/cups/pwg.h
file path=usr/include/cups/raster.h
file path=usr/include/cups/sidechannel.h
file path=usr/include/cups/transcode.h
file path=usr/include/cups/versioning.h
file path=usr/lib/cups/backend/dnssd
link \
path=usr/lib/cups/backend/http \
target=ipp
link path=usr/lib/cups/backend/https target=ipp
link path=usr/lib/cups/backend/ipps target=ipp
file path=usr/lib/cups/backend/ipp
file path=usr/lib/cups/backend/lpd
file path=usr/lib/cups/backend/snmp
file path=usr/lib/cups/backend/socket
file path=usr/lib/cups/backend/usb
file path=usr/lib/cups/cgi-bin/admin.cgi
file path=usr/lib/cups/cgi-bin/classes.cgi
file path=usr/lib/cups/cgi-bin/help.cgi
file path=usr/lib/cups/cgi-bin/jobs.cgi
file path=usr/lib/cups/cgi-bin/printers.cgi
file path=usr/lib/cups/command/ippevepcl
file path=usr/lib/cups/command/ippeveps
file path=usr/lib/cups/daemon/cups-deviced
file path=usr/lib/cups/daemon/cups-driverd
file path=usr/lib/cups/daemon/cups-exec
file path=usr/lib/cups/daemon/cups-lpd
file path=usr/lib/cups/filter/commandtops
file path=usr/lib/cups/filter/gziptoany
file path=usr/lib/cups/filter/pstops
file path=usr/lib/cups/filter/rastertoepson
file path=usr/lib/cups/filter/rastertohp
file path=usr/lib/cups/filter/rastertolabel
file path=usr/lib/cups/filter/rastertopwg
file path=usr/lib/cups/monitor/bcp
file path=usr/lib/cups/monitor/tbcp
file path=usr/lib/cups/notifier/dbus
file path=usr/lib/cups/notifier/mailto
file path=usr/lib/cups/notifier/rss
file path=usr/share/applications/cups.desktop
file path=usr/share/cups/drv/sample.drv
file path=usr/share/cups/examples/color.drv
file path=usr/share/cups/examples/constraint.drv
file path=usr/share/cups/examples/custom.drv
file path=usr/share/cups/examples/grouping.drv
file path=usr/share/cups/examples/laserjet-basic.drv
file path=usr/share/cups/examples/laserjet-pjl.drv
file path=usr/share/cups/examples/minimum.drv
file path=usr/share/cups/examples/postscript.drv
file path=usr/share/cups/examples/r300-basic.drv
file path=usr/share/cups/examples/r300-colorman.drv
file path=usr/share/cups/examples/r300-remote.drv
file path=usr/share/cups/ipptool/cancel-current-job.test
file path=usr/share/cups/ipptool/color.jpg
file path=usr/share/cups/ipptool/create-job-format.test
file path=usr/share/cups/ipptool/create-job-sheets.test
file path=usr/share/cups/ipptool/create-job-timeout.test
file path=usr/share/cups/ipptool/create-job.test
file path=usr/share/cups/ipptool/create-printer-subscription.test
file path=usr/share/cups/ipptool/cups-create-local-printer.test
file path=usr/share/cups/ipptool/document-a4.pdf
file path=usr/share/cups/ipptool/document-a4.ps
file path=usr/share/cups/ipptool/document-letter.pdf
file path=usr/share/cups/ipptool/document-letter.ps
file path=usr/share/cups/ipptool/fax-job.test
file path=usr/share/cups/ipptool/get-completed-jobs.test
file path=usr/share/cups/ipptool/get-devices.test
file path=usr/share/cups/ipptool/get-job-attributes.test
file path=usr/share/cups/ipptool/get-job-attributes2.test
file path=usr/share/cups/ipptool/get-job-template-attributes.test
file path=usr/share/cups/ipptool/get-jobs.test
file path=usr/share/cups/ipptool/get-notifications.test
file path=usr/share/cups/ipptool/get-ppd-printer.test
file path=usr/share/cups/ipptool/get-ppd.test
file path=usr/share/cups/ipptool/get-ppds-drv-only.test
file path=usr/share/cups/ipptool/get-ppds-language.test
file path=usr/share/cups/ipptool/get-ppds-make-and-model.test
file path=usr/share/cups/ipptool/get-ppds-make.test
file path=usr/share/cups/ipptool/get-ppds-product.test
file path=usr/share/cups/ipptool/get-ppds-psversion.test
file path=usr/share/cups/ipptool/get-ppds.test
file path=usr/share/cups/ipptool/get-printer-attributes-suite.test
file path=usr/share/cups/ipptool/get-printer-attributes.test
file path=usr/share/cups/ipptool/get-printer-description-attributes.test
file path=usr/share/cups/ipptool/get-printers-printer-id.test
file path=usr/share/cups/ipptool/get-printers.test
file path=usr/share/cups/ipptool/get-subscriptions.test
file path=usr/share/cups/ipptool/gray.jpg
file path=usr/share/cups/ipptool/identify-printer-display.test
file path=usr/share/cups/ipptool/identify-printer-multiple.test
file path=usr/share/cups/ipptool/identify-printer.test
file path=usr/share/cups/ipptool/ipp-1.1.test
file path=usr/share/cups/ipptool/ipp-2.0.test
file path=usr/share/cups/ipptool/ipp-2.1.test
file path=usr/share/cups/ipptool/ipp-2.2.test
file path=usr/share/cups/ipptool/ipp-backend.test
file path=usr/share/cups/ipptool/ipp-everywhere.test
file path=usr/share/cups/ipptool/onepage-a4.pdf
file path=usr/share/cups/ipptool/onepage-a4.ps
file path=usr/share/cups/ipptool/onepage-letter.pdf
file path=usr/share/cups/ipptool/onepage-letter.ps
file path=usr/share/cups/ipptool/print-job-and-wait.test
file path=usr/share/cups/ipptool/print-job-deflate.test
file path=usr/share/cups/ipptool/print-job-gzip.test
file path=usr/share/cups/ipptool/print-job-hold.test
file path=usr/share/cups/ipptool/print-job-letter.test
file path=usr/share/cups/ipptool/print-job-manual.test
file path=usr/share/cups/ipptool/print-job-media-col.test
file path=usr/share/cups/ipptool/print-job-password.test
file path=usr/share/cups/ipptool/print-job.test
file path=usr/share/cups/ipptool/print-uri.test
file path=usr/share/cups/ipptool/set-attrs-hold.test
file path=usr/share/cups/ipptool/testfile.jpg
file path=usr/share/cups/ipptool/testfile.pcl
file path=usr/share/cups/ipptool/testfile.pdf
file path=usr/share/cups/ipptool/testfile.ps
file path=usr/share/cups/ipptool/testfile.txt
file path=usr/share/cups/ipptool/validate-job.test
file path=usr/share/cups/mime/mime.convs
file path=usr/share/cups/mime/mime.types
file path=usr/share/cups/ppdc/epson.h
file path=usr/share/cups/ppdc/font.defs
file path=usr/share/cups/ppdc/hp.h
file path=usr/share/cups/ppdc/label.h
file path=usr/share/cups/ppdc/media.defs
file path=usr/share/cups/ppdc/raster.defs
file path=usr/share/cups/templates/add-class.tmpl
file path=usr/share/cups/templates/add-printer.tmpl
file path=usr/share/cups/templates/admin.tmpl
file path=usr/share/cups/templates/choose-device.tmpl
file path=usr/share/cups/templates/choose-make.tmpl
file path=usr/share/cups/templates/choose-model.tmpl
file path=usr/share/cups/templates/choose-serial.tmpl
file path=usr/share/cups/templates/choose-uri.tmpl
file path=usr/share/cups/templates/class-added.tmpl
file path=usr/share/cups/templates/class-confirm.tmpl
file path=usr/share/cups/templates/class-deleted.tmpl
file path=usr/share/cups/templates/class-jobs-header.tmpl
file path=usr/share/cups/templates/class-modified.tmpl
file path=usr/share/cups/templates/class.tmpl
file path=usr/share/cups/templates/classes-header.tmpl
file path=usr/share/cups/templates/classes.tmpl
file path=usr/share/cups/templates/command.tmpl
file path=usr/share/cups/templates/de/add-class.tmpl
file path=usr/share/cups/templates/de/add-printer.tmpl
file path=usr/share/cups/templates/de/admin.tmpl
file path=usr/share/cups/templates/de/choose-device.tmpl
file path=usr/share/cups/templates/de/choose-make.tmpl
file path=usr/share/cups/templates/de/choose-model.tmpl
file path=usr/share/cups/templates/de/choose-serial.tmpl
file path=usr/share/cups/templates/de/choose-uri.tmpl
file path=usr/share/cups/templates/de/class-added.tmpl
file path=usr/share/cups/templates/de/class-confirm.tmpl
file path=usr/share/cups/templates/de/class-deleted.tmpl
file path=usr/share/cups/templates/de/class-jobs-header.tmpl
file path=usr/share/cups/templates/de/class-modified.tmpl
file path=usr/share/cups/templates/de/class.tmpl
file path=usr/share/cups/templates/de/classes-header.tmpl
file path=usr/share/cups/templates/de/classes.tmpl
file path=usr/share/cups/templates/de/command.tmpl
file path=usr/share/cups/templates/de/edit-config.tmpl
file path=usr/share/cups/templates/de/error-op.tmpl
file path=usr/share/cups/templates/de/error.tmpl
file path=usr/share/cups/templates/de/header.tmpl
file path=usr/share/cups/templates/de/help-header.tmpl
file path=usr/share/cups/templates/de/help-printable.tmpl
file path=usr/share/cups/templates/de/help-trailer.tmpl
file path=usr/share/cups/templates/de/job-cancel.tmpl
file path=usr/share/cups/templates/de/job-hold.tmpl
file path=usr/share/cups/templates/de/job-move.tmpl
file path=usr/share/cups/templates/de/job-moved.tmpl
file path=usr/share/cups/templates/de/job-release.tmpl
file path=usr/share/cups/templates/de/job-restart.tmpl
file path=usr/share/cups/templates/de/jobs-header.tmpl
file path=usr/share/cups/templates/de/jobs.tmpl
file path=usr/share/cups/templates/de/list-available-printers.tmpl
file path=usr/share/cups/templates/de/modify-class.tmpl
file path=usr/share/cups/templates/de/modify-printer.tmpl
file path=usr/share/cups/templates/de/norestart.tmpl
file path=usr/share/cups/templates/de/option-boolean.tmpl
file path=usr/share/cups/templates/de/option-conflict.tmpl
file path=usr/share/cups/templates/de/option-header.tmpl
file path=usr/share/cups/templates/de/option-pickmany.tmpl
file path=usr/share/cups/templates/de/option-pickone.tmpl
file path=usr/share/cups/templates/de/option-trailer.tmpl
file path=usr/share/cups/templates/de/pager.tmpl
file path=usr/share/cups/templates/de/printer-accept.tmpl
file path=usr/share/cups/templates/de/printer-added.tmpl
file path=usr/share/cups/templates/de/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/de/printer-configured.tmpl
file path=usr/share/cups/templates/de/printer-confirm.tmpl
file path=usr/share/cups/templates/de/printer-default.tmpl
file path=usr/share/cups/templates/de/printer-deleted.tmpl
file path=usr/share/cups/templates/de/printer-jobs-header.tmpl
file path=usr/share/cups/templates/de/printer-modified.tmpl
file path=usr/share/cups/templates/de/printer-reject.tmpl
file path=usr/share/cups/templates/de/printer-start.tmpl
file path=usr/share/cups/templates/de/printer-stop.tmpl
file path=usr/share/cups/templates/de/printer.tmpl
file path=usr/share/cups/templates/de/printers-header.tmpl
file path=usr/share/cups/templates/de/printers.tmpl
file path=usr/share/cups/templates/de/restart.tmpl
file path=usr/share/cups/templates/de/search.tmpl
file path=usr/share/cups/templates/de/set-printer-options-header.tmpl
file path=usr/share/cups/templates/de/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/de/test-page.tmpl
file path=usr/share/cups/templates/de/trailer.tmpl
file path=usr/share/cups/templates/de/users.tmpl
file path=usr/share/cups/templates/edit-config.tmpl
file path=usr/share/cups/templates/error-op.tmpl
file path=usr/share/cups/templates/error.tmpl
file path=usr/share/cups/templates/es/add-class.tmpl
file path=usr/share/cups/templates/es/add-printer.tmpl
file path=usr/share/cups/templates/es/admin.tmpl
file path=usr/share/cups/templates/es/choose-device.tmpl
file path=usr/share/cups/templates/es/choose-make.tmpl
file path=usr/share/cups/templates/es/choose-model.tmpl
file path=usr/share/cups/templates/es/choose-serial.tmpl
file path=usr/share/cups/templates/es/choose-uri.tmpl
file path=usr/share/cups/templates/es/class-added.tmpl
file path=usr/share/cups/templates/es/class-confirm.tmpl
file path=usr/share/cups/templates/es/class-deleted.tmpl
file path=usr/share/cups/templates/es/class-jobs-header.tmpl
file path=usr/share/cups/templates/es/class-modified.tmpl
file path=usr/share/cups/templates/es/class.tmpl
file path=usr/share/cups/templates/es/classes-header.tmpl
file path=usr/share/cups/templates/es/classes.tmpl
file path=usr/share/cups/templates/es/command.tmpl
file path=usr/share/cups/templates/es/edit-config.tmpl
file path=usr/share/cups/templates/es/error-op.tmpl
file path=usr/share/cups/templates/es/error.tmpl
file path=usr/share/cups/templates/es/header.tmpl
file path=usr/share/cups/templates/es/help-header.tmpl
file path=usr/share/cups/templates/es/help-printable.tmpl
file path=usr/share/cups/templates/es/help-trailer.tmpl
file path=usr/share/cups/templates/es/job-cancel.tmpl
file path=usr/share/cups/templates/es/job-hold.tmpl
file path=usr/share/cups/templates/es/job-move.tmpl
file path=usr/share/cups/templates/es/job-moved.tmpl
file path=usr/share/cups/templates/es/job-release.tmpl
file path=usr/share/cups/templates/es/job-restart.tmpl
file path=usr/share/cups/templates/es/jobs-header.tmpl
file path=usr/share/cups/templates/es/jobs.tmpl
file path=usr/share/cups/templates/es/list-available-printers.tmpl
file path=usr/share/cups/templates/es/modify-class.tmpl
file path=usr/share/cups/templates/es/modify-printer.tmpl
file path=usr/share/cups/templates/es/norestart.tmpl
file path=usr/share/cups/templates/es/option-boolean.tmpl
file path=usr/share/cups/templates/es/option-conflict.tmpl
file path=usr/share/cups/templates/es/option-header.tmpl
file path=usr/share/cups/templates/es/option-pickmany.tmpl
file path=usr/share/cups/templates/es/option-pickone.tmpl
file path=usr/share/cups/templates/es/option-trailer.tmpl
file path=usr/share/cups/templates/es/pager.tmpl
file path=usr/share/cups/templates/es/printer-accept.tmpl
file path=usr/share/cups/templates/es/printer-added.tmpl
file path=usr/share/cups/templates/es/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/es/printer-configured.tmpl
file path=usr/share/cups/templates/es/printer-confirm.tmpl
file path=usr/share/cups/templates/es/printer-default.tmpl
file path=usr/share/cups/templates/es/printer-deleted.tmpl
file path=usr/share/cups/templates/es/printer-jobs-header.tmpl
file path=usr/share/cups/templates/es/printer-modified.tmpl
file path=usr/share/cups/templates/es/printer-reject.tmpl
file path=usr/share/cups/templates/es/printer-start.tmpl
file path=usr/share/cups/templates/es/printer-stop.tmpl
file path=usr/share/cups/templates/es/printer.tmpl
file path=usr/share/cups/templates/es/printers-header.tmpl
file path=usr/share/cups/templates/es/printers.tmpl
file path=usr/share/cups/templates/es/restart.tmpl
file path=usr/share/cups/templates/es/search.tmpl
file path=usr/share/cups/templates/es/set-printer-options-header.tmpl
file path=usr/share/cups/templates/es/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/es/test-page.tmpl
file path=usr/share/cups/templates/es/trailer.tmpl
file path=usr/share/cups/templates/es/users.tmpl
file path=usr/share/cups/templates/fr/add-class.tmpl
file path=usr/share/cups/templates/fr/add-printer.tmpl
file path=usr/share/cups/templates/fr/admin.tmpl
file path=usr/share/cups/templates/fr/choose-device.tmpl
file path=usr/share/cups/templates/fr/choose-make.tmpl
file path=usr/share/cups/templates/fr/choose-model.tmpl
file path=usr/share/cups/templates/fr/choose-serial.tmpl
file path=usr/share/cups/templates/fr/choose-uri.tmpl
file path=usr/share/cups/templates/fr/class-added.tmpl
file path=usr/share/cups/templates/fr/class-confirm.tmpl
file path=usr/share/cups/templates/fr/class-deleted.tmpl
file path=usr/share/cups/templates/fr/class-jobs-header.tmpl
file path=usr/share/cups/templates/fr/class-modified.tmpl
file path=usr/share/cups/templates/fr/class.tmpl
file path=usr/share/cups/templates/fr/classes-header.tmpl
file path=usr/share/cups/templates/fr/classes.tmpl
file path=usr/share/cups/templates/fr/command.tmpl
file path=usr/share/cups/templates/fr/edit-config.tmpl
file path=usr/share/cups/templates/fr/error-op.tmpl
file path=usr/share/cups/templates/fr/error.tmpl
file path=usr/share/cups/templates/fr/header.tmpl
file path=usr/share/cups/templates/fr/help-header.tmpl
file path=usr/share/cups/templates/fr/help-printable.tmpl
file path=usr/share/cups/templates/fr/help-trailer.tmpl
file path=usr/share/cups/templates/fr/job-cancel.tmpl
file path=usr/share/cups/templates/fr/job-hold.tmpl
file path=usr/share/cups/templates/fr/job-move.tmpl
file path=usr/share/cups/templates/fr/job-moved.tmpl
file path=usr/share/cups/templates/fr/job-release.tmpl
file path=usr/share/cups/templates/fr/job-restart.tmpl
file path=usr/share/cups/templates/fr/jobs-header.tmpl
file path=usr/share/cups/templates/fr/jobs.tmpl
file path=usr/share/cups/templates/fr/list-available-printers.tmpl
file path=usr/share/cups/templates/fr/modify-class.tmpl
file path=usr/share/cups/templates/fr/modify-printer.tmpl
file path=usr/share/cups/templates/fr/norestart.tmpl
file path=usr/share/cups/templates/fr/option-boolean.tmpl
file path=usr/share/cups/templates/fr/option-conflict.tmpl
file path=usr/share/cups/templates/fr/option-header.tmpl
file path=usr/share/cups/templates/fr/option-pickmany.tmpl
file path=usr/share/cups/templates/fr/option-pickone.tmpl
file path=usr/share/cups/templates/fr/option-trailer.tmpl
file path=usr/share/cups/templates/fr/pager.tmpl
file path=usr/share/cups/templates/fr/printer-accept.tmpl
file path=usr/share/cups/templates/fr/printer-added.tmpl
file path=usr/share/cups/templates/fr/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/fr/printer-configured.tmpl
file path=usr/share/cups/templates/fr/printer-confirm.tmpl
file path=usr/share/cups/templates/fr/printer-default.tmpl
file path=usr/share/cups/templates/fr/printer-deleted.tmpl
file path=usr/share/cups/templates/fr/printer-jobs-header.tmpl
file path=usr/share/cups/templates/fr/printer-modified.tmpl
file path=usr/share/cups/templates/fr/printer-reject.tmpl
file path=usr/share/cups/templates/fr/printer-start.tmpl
file path=usr/share/cups/templates/fr/printer-stop.tmpl
file path=usr/share/cups/templates/fr/printer.tmpl
file path=usr/share/cups/templates/fr/printers-header.tmpl
file path=usr/share/cups/templates/fr/printers.tmpl
file path=usr/share/cups/templates/fr/restart.tmpl
file path=usr/share/cups/templates/fr/search.tmpl
file path=usr/share/cups/templates/fr/set-printer-options-header.tmpl
file path=usr/share/cups/templates/fr/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/fr/test-page.tmpl
file path=usr/share/cups/templates/fr/trailer.tmpl
file path=usr/share/cups/templates/fr/users.tmpl
file path=usr/share/cups/templates/header.tmpl
file path=usr/share/cups/templates/help-header.tmpl
file path=usr/share/cups/templates/help-printable.tmpl
file path=usr/share/cups/templates/help-trailer.tmpl
file path=usr/share/cups/templates/ja/add-class.tmpl
file path=usr/share/cups/templates/ja/add-printer.tmpl
file path=usr/share/cups/templates/ja/admin.tmpl
file path=usr/share/cups/templates/ja/choose-device.tmpl
file path=usr/share/cups/templates/ja/choose-make.tmpl
file path=usr/share/cups/templates/ja/choose-model.tmpl
file path=usr/share/cups/templates/ja/choose-serial.tmpl
file path=usr/share/cups/templates/ja/choose-uri.tmpl
file path=usr/share/cups/templates/ja/class-added.tmpl
file path=usr/share/cups/templates/ja/class-confirm.tmpl
file path=usr/share/cups/templates/ja/class-deleted.tmpl
file path=usr/share/cups/templates/ja/class-jobs-header.tmpl
file path=usr/share/cups/templates/ja/class-modified.tmpl
file path=usr/share/cups/templates/ja/class.tmpl
file path=usr/share/cups/templates/ja/classes-header.tmpl
file path=usr/share/cups/templates/ja/classes.tmpl
file path=usr/share/cups/templates/ja/command.tmpl
file path=usr/share/cups/templates/ja/edit-config.tmpl
file path=usr/share/cups/templates/ja/error-op.tmpl
file path=usr/share/cups/templates/ja/error.tmpl
file path=usr/share/cups/templates/ja/header.tmpl
file path=usr/share/cups/templates/ja/help-header.tmpl
file path=usr/share/cups/templates/ja/help-printable.tmpl
file path=usr/share/cups/templates/ja/help-trailer.tmpl
file path=usr/share/cups/templates/ja/job-cancel.tmpl
file path=usr/share/cups/templates/ja/job-hold.tmpl
file path=usr/share/cups/templates/ja/job-move.tmpl
file path=usr/share/cups/templates/ja/job-moved.tmpl
file path=usr/share/cups/templates/ja/job-release.tmpl
file path=usr/share/cups/templates/ja/job-restart.tmpl
file path=usr/share/cups/templates/ja/jobs-header.tmpl
file path=usr/share/cups/templates/ja/jobs.tmpl
file path=usr/share/cups/templates/ja/list-available-printers.tmpl
file path=usr/share/cups/templates/ja/modify-class.tmpl
file path=usr/share/cups/templates/ja/modify-printer.tmpl
file path=usr/share/cups/templates/ja/norestart.tmpl
file path=usr/share/cups/templates/ja/option-boolean.tmpl
file path=usr/share/cups/templates/ja/option-conflict.tmpl
file path=usr/share/cups/templates/ja/option-header.tmpl
file path=usr/share/cups/templates/ja/option-pickmany.tmpl
file path=usr/share/cups/templates/ja/option-pickone.tmpl
file path=usr/share/cups/templates/ja/option-trailer.tmpl
file path=usr/share/cups/templates/ja/pager.tmpl
file path=usr/share/cups/templates/ja/printer-accept.tmpl
file path=usr/share/cups/templates/ja/printer-added.tmpl
file path=usr/share/cups/templates/ja/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/ja/printer-configured.tmpl
file path=usr/share/cups/templates/ja/printer-confirm.tmpl
file path=usr/share/cups/templates/ja/printer-default.tmpl
file path=usr/share/cups/templates/ja/printer-deleted.tmpl
file path=usr/share/cups/templates/ja/printer-jobs-header.tmpl
file path=usr/share/cups/templates/ja/printer-modified.tmpl
file path=usr/share/cups/templates/ja/printer-reject.tmpl
file path=usr/share/cups/templates/ja/printer-start.tmpl
file path=usr/share/cups/templates/ja/printer-stop.tmpl
file path=usr/share/cups/templates/ja/printer.tmpl
file path=usr/share/cups/templates/ja/printers-header.tmpl
file path=usr/share/cups/templates/ja/printers.tmpl
file path=usr/share/cups/templates/ja/restart.tmpl
file path=usr/share/cups/templates/ja/search.tmpl
file path=usr/share/cups/templates/ja/set-printer-options-header.tmpl
file path=usr/share/cups/templates/ja/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/ja/test-page.tmpl
file path=usr/share/cups/templates/ja/trailer.tmpl
file path=usr/share/cups/templates/ja/users.tmpl
file path=usr/share/cups/templates/job-cancel.tmpl
file path=usr/share/cups/templates/job-hold.tmpl
file path=usr/share/cups/templates/job-move.tmpl
file path=usr/share/cups/templates/job-moved.tmpl
file path=usr/share/cups/templates/job-release.tmpl
file path=usr/share/cups/templates/job-restart.tmpl
file path=usr/share/cups/templates/jobs-header.tmpl
file path=usr/share/cups/templates/jobs.tmpl
file path=usr/share/cups/templates/list-available-printers.tmpl
file path=usr/share/cups/templates/modify-class.tmpl
file path=usr/share/cups/templates/modify-printer.tmpl
file path=usr/share/cups/templates/norestart.tmpl
file path=usr/share/cups/templates/option-boolean.tmpl
file path=usr/share/cups/templates/option-conflict.tmpl
file path=usr/share/cups/templates/option-header.tmpl
file path=usr/share/cups/templates/option-pickmany.tmpl
file path=usr/share/cups/templates/option-pickone.tmpl
file path=usr/share/cups/templates/option-trailer.tmpl
file path=usr/share/cups/templates/pager.tmpl
file path=usr/share/cups/templates/printer-accept.tmpl
file path=usr/share/cups/templates/printer-added.tmpl
file path=usr/share/cups/templates/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/printer-configured.tmpl
file path=usr/share/cups/templates/printer-confirm.tmpl
file path=usr/share/cups/templates/printer-default.tmpl
file path=usr/share/cups/templates/printer-deleted.tmpl
file path=usr/share/cups/templates/printer-jobs-header.tmpl
file path=usr/share/cups/templates/printer-modified.tmpl
file path=usr/share/cups/templates/printer-reject.tmpl
file path=usr/share/cups/templates/printer-start.tmpl
file path=usr/share/cups/templates/printer-stop.tmpl
file path=usr/share/cups/templates/printer.tmpl
file path=usr/share/cups/templates/printers-header.tmpl
file path=usr/share/cups/templates/printers.tmpl
file path=usr/share/cups/templates/pt_BR/add-class.tmpl
file path=usr/share/cups/templates/pt_BR/add-printer.tmpl
file path=usr/share/cups/templates/pt_BR/admin.tmpl
file path=usr/share/cups/templates/pt_BR/choose-device.tmpl
file path=usr/share/cups/templates/pt_BR/choose-make.tmpl
file path=usr/share/cups/templates/pt_BR/choose-model.tmpl
file path=usr/share/cups/templates/pt_BR/choose-serial.tmpl
file path=usr/share/cups/templates/pt_BR/choose-uri.tmpl
file path=usr/share/cups/templates/pt_BR/class-added.tmpl
file path=usr/share/cups/templates/pt_BR/class-confirm.tmpl
file path=usr/share/cups/templates/pt_BR/class-deleted.tmpl
file path=usr/share/cups/templates/pt_BR/class-jobs-header.tmpl
file path=usr/share/cups/templates/pt_BR/class-modified.tmpl
file path=usr/share/cups/templates/pt_BR/class.tmpl
file path=usr/share/cups/templates/pt_BR/classes-header.tmpl
file path=usr/share/cups/templates/pt_BR/classes.tmpl
file path=usr/share/cups/templates/pt_BR/command.tmpl
file path=usr/share/cups/templates/pt_BR/edit-config.tmpl
file path=usr/share/cups/templates/pt_BR/error-op.tmpl
file path=usr/share/cups/templates/pt_BR/error.tmpl
file path=usr/share/cups/templates/pt_BR/header.tmpl
file path=usr/share/cups/templates/pt_BR/help-header.tmpl
file path=usr/share/cups/templates/pt_BR/help-printable.tmpl
file path=usr/share/cups/templates/pt_BR/help-trailer.tmpl
file path=usr/share/cups/templates/pt_BR/job-cancel.tmpl
file path=usr/share/cups/templates/pt_BR/job-hold.tmpl
file path=usr/share/cups/templates/pt_BR/job-move.tmpl
file path=usr/share/cups/templates/pt_BR/job-moved.tmpl
file path=usr/share/cups/templates/pt_BR/job-release.tmpl
file path=usr/share/cups/templates/pt_BR/job-restart.tmpl
file path=usr/share/cups/templates/pt_BR/jobs-header.tmpl
file path=usr/share/cups/templates/pt_BR/jobs.tmpl
file path=usr/share/cups/templates/pt_BR/list-available-printers.tmpl
file path=usr/share/cups/templates/pt_BR/modify-class.tmpl
file path=usr/share/cups/templates/pt_BR/modify-printer.tmpl
file path=usr/share/cups/templates/pt_BR/norestart.tmpl
file path=usr/share/cups/templates/pt_BR/option-boolean.tmpl
file path=usr/share/cups/templates/pt_BR/option-conflict.tmpl
file path=usr/share/cups/templates/pt_BR/option-header.tmpl
file path=usr/share/cups/templates/pt_BR/option-pickmany.tmpl
file path=usr/share/cups/templates/pt_BR/option-pickone.tmpl
file path=usr/share/cups/templates/pt_BR/option-trailer.tmpl
file path=usr/share/cups/templates/pt_BR/pager.tmpl
file path=usr/share/cups/templates/pt_BR/printer-accept.tmpl
file path=usr/share/cups/templates/pt_BR/printer-added.tmpl
file path=usr/share/cups/templates/pt_BR/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/pt_BR/printer-configured.tmpl
file path=usr/share/cups/templates/pt_BR/printer-confirm.tmpl
file path=usr/share/cups/templates/pt_BR/printer-default.tmpl
file path=usr/share/cups/templates/pt_BR/printer-deleted.tmpl
file path=usr/share/cups/templates/pt_BR/printer-jobs-header.tmpl
file path=usr/share/cups/templates/pt_BR/printer-modified.tmpl
file path=usr/share/cups/templates/pt_BR/printer-reject.tmpl
file path=usr/share/cups/templates/pt_BR/printer-start.tmpl
file path=usr/share/cups/templates/pt_BR/printer-stop.tmpl
file path=usr/share/cups/templates/pt_BR/printer.tmpl
file path=usr/share/cups/templates/pt_BR/printers-header.tmpl
file path=usr/share/cups/templates/pt_BR/printers.tmpl
file path=usr/share/cups/templates/pt_BR/restart.tmpl
file path=usr/share/cups/templates/pt_BR/search.tmpl
file path=usr/share/cups/templates/pt_BR/set-printer-options-header.tmpl
file path=usr/share/cups/templates/pt_BR/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/pt_BR/test-page.tmpl
file path=usr/share/cups/templates/pt_BR/trailer.tmpl
file path=usr/share/cups/templates/pt_BR/users.tmpl
file path=usr/share/cups/templates/restart.tmpl
file path=usr/share/cups/templates/ru/add-class.tmpl
file path=usr/share/cups/templates/ru/add-printer.tmpl
file path=usr/share/cups/templates/ru/admin.tmpl
file path=usr/share/cups/templates/ru/choose-device.tmpl
file path=usr/share/cups/templates/ru/choose-make.tmpl
file path=usr/share/cups/templates/ru/choose-model.tmpl
file path=usr/share/cups/templates/ru/choose-serial.tmpl
file path=usr/share/cups/templates/ru/choose-uri.tmpl
file path=usr/share/cups/templates/ru/class-added.tmpl
file path=usr/share/cups/templates/ru/class-confirm.tmpl
file path=usr/share/cups/templates/ru/class-deleted.tmpl
file path=usr/share/cups/templates/ru/class-jobs-header.tmpl
file path=usr/share/cups/templates/ru/class-modified.tmpl
file path=usr/share/cups/templates/ru/class.tmpl
file path=usr/share/cups/templates/ru/classes-header.tmpl
file path=usr/share/cups/templates/ru/classes.tmpl
file path=usr/share/cups/templates/ru/command.tmpl
file path=usr/share/cups/templates/ru/edit-config.tmpl
file path=usr/share/cups/templates/ru/error-op.tmpl
file path=usr/share/cups/templates/ru/error.tmpl
file path=usr/share/cups/templates/ru/header.tmpl
file path=usr/share/cups/templates/ru/help-header.tmpl
file path=usr/share/cups/templates/ru/help-printable.tmpl
file path=usr/share/cups/templates/ru/help-trailer.tmpl
file path=usr/share/cups/templates/ru/job-cancel.tmpl
file path=usr/share/cups/templates/ru/job-hold.tmpl
file path=usr/share/cups/templates/ru/job-move.tmpl
file path=usr/share/cups/templates/ru/job-moved.tmpl
file path=usr/share/cups/templates/ru/job-release.tmpl
file path=usr/share/cups/templates/ru/job-restart.tmpl
file path=usr/share/cups/templates/ru/jobs-header.tmpl
file path=usr/share/cups/templates/ru/jobs.tmpl
file path=usr/share/cups/templates/ru/list-available-printers.tmpl
file path=usr/share/cups/templates/ru/modify-class.tmpl
file path=usr/share/cups/templates/ru/modify-printer.tmpl
file path=usr/share/cups/templates/ru/norestart.tmpl
file path=usr/share/cups/templates/ru/option-boolean.tmpl
file path=usr/share/cups/templates/ru/option-conflict.tmpl
file path=usr/share/cups/templates/ru/option-header.tmpl
file path=usr/share/cups/templates/ru/option-pickmany.tmpl
file path=usr/share/cups/templates/ru/option-pickone.tmpl
file path=usr/share/cups/templates/ru/option-trailer.tmpl
file path=usr/share/cups/templates/ru/pager.tmpl
file path=usr/share/cups/templates/ru/printer-accept.tmpl
file path=usr/share/cups/templates/ru/printer-added.tmpl
file path=usr/share/cups/templates/ru/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/ru/printer-configured.tmpl
file path=usr/share/cups/templates/ru/printer-confirm.tmpl
file path=usr/share/cups/templates/ru/printer-default.tmpl
file path=usr/share/cups/templates/ru/printer-deleted.tmpl
file path=usr/share/cups/templates/ru/printer-jobs-header.tmpl
file path=usr/share/cups/templates/ru/printer-modified.tmpl
file path=usr/share/cups/templates/ru/printer-reject.tmpl
file path=usr/share/cups/templates/ru/printer-start.tmpl
file path=usr/share/cups/templates/ru/printer-stop.tmpl
file path=usr/share/cups/templates/ru/printer.tmpl
file path=usr/share/cups/templates/ru/printers-header.tmpl
file path=usr/share/cups/templates/ru/printers.tmpl
file path=usr/share/cups/templates/ru/restart.tmpl
file path=usr/share/cups/templates/ru/search.tmpl
file path=usr/share/cups/templates/ru/set-printer-options-header.tmpl
file path=usr/share/cups/templates/ru/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/ru/test-page.tmpl
file path=usr/share/cups/templates/ru/trailer.tmpl
file path=usr/share/cups/templates/ru/users.tmpl
file path=usr/share/cups/templates/search.tmpl
file path=usr/share/cups/templates/set-printer-options-header.tmpl
file path=usr/share/cups/templates/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/test-page.tmpl
file path=usr/share/cups/templates/trailer.tmpl
file path=usr/share/cups/templates/users.tmpl
file path=usr/share/cups/usb/org.cups.usb-quirks
file path=usr/share/doc/cups/apple-touch-icon.png
file path=usr/share/doc/cups/cups-printable.css
file path=usr/share/doc/cups/cups.css
file path=usr/share/doc/cups/de/index.html
file path=usr/share/doc/cups/es/index.html
file path=usr/share/doc/cups/help/accounting.html
file path=usr/share/doc/cups/help/admin.html
file path=usr/share/doc/cups/help/api-admin.html
file path=usr/share/doc/cups/help/api-filter.html
file path=usr/share/doc/cups/help/api-ppd.html
file path=usr/share/doc/cups/help/api-raster.html
file path=usr/share/doc/cups/help/cgi.html
file path=usr/share/doc/cups/help/cupspm.html
file path=usr/share/doc/cups/help/encryption.html
file path=usr/share/doc/cups/help/firewalls.html
file path=usr/share/doc/cups/help/glossary.html
file path=usr/share/doc/cups/help/kerberos.html
file path=usr/share/doc/cups/help/license.html
file path=usr/share/doc/cups/help/man-backend.html
file path=usr/share/doc/cups/help/man-cancel.html
file path=usr/share/doc/cups/help/man-classes.conf.html
file path=usr/share/doc/cups/help/man-client.conf.html
file path=usr/share/doc/cups/help/man-cups-config.html
file path=usr/share/doc/cups/help/man-cups-files.conf.html
file path=usr/share/doc/cups/help/man-cups-lpd.html
file path=usr/share/doc/cups/help/man-cups-snmp.html
file path=usr/share/doc/cups/help/man-cups.html
file path=usr/share/doc/cups/help/man-cupsaccept.html
file path=usr/share/doc/cups/help/man-cupsd-helper.html
file path=usr/share/doc/cups/help/man-cupsd-logs.html
file path=usr/share/doc/cups/help/man-cupsd.conf.html
file path=usr/share/doc/cups/help/man-cupsd.html
file path=usr/share/doc/cups/help/man-cupsenable.html
file path=usr/share/doc/cups/help/man-cupstestppd.html
file path=usr/share/doc/cups/help/man-filter.html
file path=usr/share/doc/cups/help/man-ippevepcl.html
file path=usr/share/doc/cups/help/man-ippeveprinter.html
file path=usr/share/doc/cups/help/man-ippfind.html
file path=usr/share/doc/cups/help/man-ipptool.html
file path=usr/share/doc/cups/help/man-ipptoolfile.html
file path=usr/share/doc/cups/help/man-lp.html
file path=usr/share/doc/cups/help/man-lpadmin.html
file path=usr/share/doc/cups/help/man-lpc.html
file path=usr/share/doc/cups/help/man-lpinfo.html
file path=usr/share/doc/cups/help/man-lpmove.html
file path=usr/share/doc/cups/help/man-lpoptions.html
file path=usr/share/doc/cups/help/man-lpq.html
file path=usr/share/doc/cups/help/man-lpr.html
file path=usr/share/doc/cups/help/man-lprm.html
file path=usr/share/doc/cups/help/man-lpstat.html
file path=usr/share/doc/cups/help/man-mime.convs.html
file path=usr/share/doc/cups/help/man-mime.types.html
file path=usr/share/doc/cups/help/man-notifier.html
file path=usr/share/doc/cups/help/man-ppdc.html
file path=usr/share/doc/cups/help/man-ppdhtml.html
file path=usr/share/doc/cups/help/man-ppdi.html
file path=usr/share/doc/cups/help/man-ppdmerge.html
file path=usr/share/doc/cups/help/man-ppdpo.html
file path=usr/share/doc/cups/help/man-printers.conf.html
file path=usr/share/doc/cups/help/man-subscriptions.conf.html
file path=usr/share/doc/cups/help/network.html
file path=usr/share/doc/cups/help/options.html
file path=usr/share/doc/cups/help/overview.html
file path=usr/share/doc/cups/help/policies.html
file path=usr/share/doc/cups/help/postscript-driver.html
file path=usr/share/doc/cups/help/ppd-compiler.html
file path=usr/share/doc/cups/help/raster-driver.html
file path=usr/share/doc/cups/help/ref-ppdcfile.html
file path=usr/share/doc/cups/help/security.html
file path=usr/share/doc/cups/help/sharing.html
file path=usr/share/doc/cups/help/spec-banner.html
file path=usr/share/doc/cups/help/spec-command.html
file path=usr/share/doc/cups/help/spec-design.html
file path=usr/share/doc/cups/help/spec-ipp.html
file path=usr/share/doc/cups/help/spec-ppd.html
file path=usr/share/doc/cups/help/spec-raster.html
file path=usr/share/doc/cups/help/spec-stp.html
file path=usr/share/doc/cups/help/translation.html
file path=usr/share/doc/cups/images/color-wheel.png
file path=usr/share/doc/cups/images/cups-block-diagram.png
file path=usr/share/doc/cups/images/cups-command-chain.png
file path=usr/share/doc/cups/images/cups-icon.png
file path=usr/share/doc/cups/images/cups-postscript-chain.png
file path=usr/share/doc/cups/images/cups-raster-chain.png
file path=usr/share/doc/cups/images/cups.png
file path=usr/share/doc/cups/images/generic.png
file path=usr/share/doc/cups/images/left.gif
file path=usr/share/doc/cups/images/raster-organization.png
file path=usr/share/doc/cups/images/raster.png
file path=usr/share/doc/cups/images/right.gif
file path=usr/share/doc/cups/images/sample-image.png
file path=usr/share/doc/cups/images/sel.gif
file path=usr/share/doc/cups/images/smiley.jpg
file path=usr/share/doc/cups/images/unsel.gif
file path=usr/share/doc/cups/images/wait.gif
file path=usr/share/doc/cups/index.html
file path=usr/share/doc/cups/ja/index.html
file path=usr/share/doc/cups/pt_BR/index.html
file path=usr/share/doc/cups/robots.txt
file path=usr/share/doc/cups/ru/index.html
file path=usr/share/icons/hicolor/128x128/apps/cups.png
file path=usr/share/icons/hicolor/16x16/apps/cups.png
file path=usr/share/icons/hicolor/32x32/apps/cups.png
file path=usr/share/icons/hicolor/64x64/apps/cups.png
file path=usr/share/locale/ca/cups_ca.po
file path=usr/share/locale/cs/cups_cs.po
file path=usr/share/locale/de/cups_de.po
file path=usr/share/locale/en/cups_en.po
file path=usr/share/locale/es/cups_es.po
file path=usr/share/locale/fr/cups_fr.po
file path=usr/share/locale/it/cups_it.po
file path=usr/share/locale/ja/cups_ja.po
file path=usr/share/locale/pt_BR/cups_pt_BR.po
file path=usr/share/locale/ru/cups_ru.po
file path=usr/share/locale/zh_CN/cups_zh_CN.po
file path=usr/share/man/man1/cups-config.1
file path=usr/share/man/man1/cups.1
file path=usr/share/man/man1/cupstestppd.1
file path=usr/share/man/man1/ippeveprinter.1
file path=usr/share/man/man1/ippfind.1
file path=usr/share/man/man1/ipptool.1
file path=usr/share/man/man1/ppdc.1
file path=usr/share/man/man1/ppdhtml.1
file path=usr/share/man/man1/ppdi.1
file path=usr/share/man/man1/ppdmerge.1
file path=usr/share/man/man1/ppdpo.1
file path=usr/share/man/man5/classes.conf.5
file path=usr/share/man/man5/client.conf.5
file path=usr/share/man/man5/cups-files.conf.5
file path=usr/share/man/man5/cups-snmp.conf.5
file path=usr/share/man/man5/cupsd-logs.5
file path=usr/share/man/man5/cupsd.conf.5
file path=usr/share/man/man5/ipptoolfile.5
file path=usr/share/man/man5/mailto.conf.5
file path=usr/share/man/man5/mime.convs.5
file path=usr/share/man/man5/mime.types.5
file path=usr/share/man/man5/ppdcfile.5
file path=usr/share/man/man5/printers.conf.5
file path=usr/share/man/man5/subscriptions.conf.5
file path=usr/share/man/man7/backend.7
file path=usr/share/man/man7/filter.7
file path=usr/share/man/man7/ippevepcl.7
link \
path=usr/share/man/man7/ippeveps.7 \
target=ippevepcl.7
file path=usr/share/man/man7/notifier.7
link \
path=usr/share/man/man8/cups-deviced.8 \
target=cupsd-helper.8
link \
path=usr/share/man/man8/cups-driverd.8 \
target=cupsd-helper.8
link \
path=usr/share/man/man8/cups-exec.8 \
target=cupsd-helper.8
file path=usr/share/man/man8/cups-lpd.8
file path=usr/share/man/man8/cups-snmp.8
file path=usr/share/man/man8/cupsaccept.8
file path=usr/share/man/man8/cupsctl.8
file path=usr/share/man/man8/cupsd-helper.8
file path=usr/share/man/man8/cupsd.8
link \
path=usr/share/man/man8/cupsdisable.8 \
target=cupsenable.8
file path=usr/share/man/man8/cupsenable.8
file path=usr/share/man/man8/cupsfilter.8
link \
path=usr/share/man/man8/cupsreject.8 \
target=cupsaccept.8
file path=usr/share/man/man8/lpadmin.8
file path=usr/share/man/man8/lpc.8
file path=usr/share/man/man8/lpinfo.8
file path=usr/share/man/man8/lpmove.8

View file

@ -1,861 +0,0 @@
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright 2020 <contributor>
#
set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="$(COMPONENT_SUMMARY)"
set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
file path=etc/cups/cups-files.conf
file path=etc/cups/cups-files.conf.N
file path=etc/cups/cups-files.conf.default
file path=etc/cups/cupsd.conf
file path=etc/cups/cupsd.conf.N
file path=etc/cups/cupsd.conf.default
file path=etc/cups/snmp.conf
file path=etc/cups/snmp.conf.N
file path=etc/cups/snmp.conf.default
file path=etc/dbus-1/system.d/cups.conf
file path=etc/pam.d/cups
file path=etc/pam.d/cups.N
file path=lib/svc/manifest/application/cups.xml
file path=usr/bin/$(MACH32)/cancel
file path=usr/bin/$(MACH32)/cups-config
file path=usr/bin/$(MACH32)/cupstestppd
file path=usr/bin/$(MACH32)/ippeveprinter
file path=usr/bin/$(MACH32)/ippfind
file path=usr/bin/$(MACH32)/ipptool
file path=usr/bin/$(MACH32)/lp
file path=usr/bin/$(MACH32)/lpoptions
file path=usr/bin/$(MACH32)/lpq
file path=usr/bin/$(MACH32)/lpr
file path=usr/bin/$(MACH32)/lprm
file path=usr/bin/$(MACH32)/lpstat
file path=usr/bin/$(MACH32)/ppdc
file path=usr/bin/$(MACH32)/ppdhtml
file path=usr/bin/$(MACH32)/ppdi
file path=usr/bin/$(MACH32)/ppdmerge
file path=usr/bin/$(MACH32)/ppdpo
file path=usr/bin/cancel
file path=usr/bin/cups-config
file path=usr/bin/cupstestppd
file path=usr/bin/ippeveprinter
file path=usr/bin/ippfind
file path=usr/bin/ipptool
file path=usr/bin/lp
file path=usr/bin/lpoptions
file path=usr/bin/lpq
file path=usr/bin/lpr
file path=usr/bin/lprm
file path=usr/bin/lpstat
file path=usr/bin/ppdc
file path=usr/bin/ppdhtml
file path=usr/bin/ppdi
file path=usr/bin/ppdmerge
file path=usr/bin/ppdpo
file path=usr/include/cups/adminutil.h
file path=usr/include/cups/array.h
file path=usr/include/cups/backend.h
file path=usr/include/cups/cups.h
file path=usr/include/cups/dir.h
file path=usr/include/cups/file.h
file path=usr/include/cups/http.h
file path=usr/include/cups/ipp.h
file path=usr/include/cups/language.h
file path=usr/include/cups/ppd.h
file path=usr/include/cups/pwg.h
file path=usr/include/cups/raster.h
file path=usr/include/cups/sidechannel.h
file path=usr/include/cups/transcode.h
file path=usr/include/cups/versioning.h
link path=usr/lib/$(MACH64)/libcups.so target=libcups.so.2
file path=usr/lib/$(MACH64)/libcups.so.2
link path=usr/lib/$(MACH64)/libcupsimage.so target=libcupsimage.so.2
file path=usr/lib/$(MACH64)/libcupsimage.so.2
file path=usr/lib/cups/backend/dnssd
link path=usr/lib/cups/backend/http target=ipp
link path=usr/lib/cups/backend/https target=ipp
file path=usr/lib/cups/backend/ipp
link path=usr/lib/cups/backend/ipps target=ipp
file path=usr/lib/cups/backend/lpd
file path=usr/lib/cups/backend/snmp
file path=usr/lib/cups/backend/socket
file path=usr/lib/cups/backend/usb
file path=usr/lib/cups/cgi-bin/admin.cgi
file path=usr/lib/cups/cgi-bin/classes.cgi
file path=usr/lib/cups/cgi-bin/help.cgi
file path=usr/lib/cups/cgi-bin/jobs.cgi
file path=usr/lib/cups/cgi-bin/printers.cgi
file path=usr/lib/cups/command/ippevepcl
file path=usr/lib/cups/command/ippeveps
file path=usr/lib/cups/daemon/cups-deviced
file path=usr/lib/cups/daemon/cups-driverd
file path=usr/lib/cups/daemon/cups-exec
file path=usr/lib/cups/daemon/cups-lpd
file path=usr/lib/cups/filter/commandtops
file path=usr/lib/cups/filter/gziptoany
file path=usr/lib/cups/filter/pstops
file path=usr/lib/cups/filter/rastertoepson
file path=usr/lib/cups/filter/rastertohp
file path=usr/lib/cups/filter/rastertolabel
file path=usr/lib/cups/filter/rastertopwg
file path=usr/lib/cups/monitor/bcp
file path=usr/lib/cups/monitor/tbcp
file path=usr/lib/cups/notifier/dbus
file path=usr/lib/cups/notifier/mailto
file path=usr/lib/cups/notifier/rss
link path=usr/lib/libcups.so target=libcups.so.2
file path=usr/lib/libcups.so.2
link path=usr/lib/libcupsimage.so target=libcupsimage.so.2
file path=usr/lib/libcupsimage.so.2
file path=usr/sbin/$(MACH32)/cupsaccept
file path=usr/sbin/$(MACH32)/cupsctl
file path=usr/sbin/$(MACH32)/cupsd
link path=usr/sbin/$(MACH32)/cupsdisable target=cupsaccept
link path=usr/sbin/$(MACH32)/cupsenable target=cupsaccept
file path=usr/sbin/$(MACH32)/cupsfilter
link path=usr/sbin/$(MACH32)/cupsreject target=cupsaccept
file path=usr/sbin/$(MACH32)/lpadmin
file path=usr/sbin/$(MACH32)/lpc
file path=usr/sbin/$(MACH32)/lpinfo
file path=usr/sbin/$(MACH32)/lpmove
file path=usr/sbin/cupsaccept
file path=usr/sbin/cupsctl
file path=usr/sbin/cupsd
link path=usr/sbin/cupsdisable target=cupsaccept
link path=usr/sbin/cupsenable target=cupsaccept
file path=usr/sbin/cupsfilter
link path=usr/sbin/cupsreject target=cupsaccept
file path=usr/sbin/lpadmin
file path=usr/sbin/lpc
file path=usr/sbin/lpinfo
file path=usr/sbin/lpmove
file path=usr/share/applications/cups.desktop
file path=usr/share/cups/drv/sample.drv
file path=usr/share/cups/examples/color.drv
file path=usr/share/cups/examples/constraint.drv
file path=usr/share/cups/examples/custom.drv
file path=usr/share/cups/examples/grouping.drv
file path=usr/share/cups/examples/laserjet-basic.drv
file path=usr/share/cups/examples/laserjet-pjl.drv
file path=usr/share/cups/examples/minimum.drv
file path=usr/share/cups/examples/postscript.drv
file path=usr/share/cups/examples/r300-basic.drv
file path=usr/share/cups/examples/r300-colorman.drv
file path=usr/share/cups/examples/r300-remote.drv
file path=usr/share/cups/ipptool/cancel-current-job.test
file path=usr/share/cups/ipptool/color.jpg
file path=usr/share/cups/ipptool/create-job-format.test
file path=usr/share/cups/ipptool/create-job-sheets.test
file path=usr/share/cups/ipptool/create-job-timeout.test
file path=usr/share/cups/ipptool/create-job.test
file path=usr/share/cups/ipptool/create-printer-subscription.test
file path=usr/share/cups/ipptool/cups-create-local-printer.test
file path=usr/share/cups/ipptool/document-a4.pdf
file path=usr/share/cups/ipptool/document-a4.ps
file path=usr/share/cups/ipptool/document-letter.pdf
file path=usr/share/cups/ipptool/document-letter.ps
file path=usr/share/cups/ipptool/fax-job.test
file path=usr/share/cups/ipptool/get-completed-jobs.test
file path=usr/share/cups/ipptool/get-devices.test
file path=usr/share/cups/ipptool/get-job-attributes.test
file path=usr/share/cups/ipptool/get-job-attributes2.test
file path=usr/share/cups/ipptool/get-job-template-attributes.test
file path=usr/share/cups/ipptool/get-jobs.test
file path=usr/share/cups/ipptool/get-notifications.test
file path=usr/share/cups/ipptool/get-ppd-printer.test
file path=usr/share/cups/ipptool/get-ppd.test
file path=usr/share/cups/ipptool/get-ppds-drv-only.test
file path=usr/share/cups/ipptool/get-ppds-language.test
file path=usr/share/cups/ipptool/get-ppds-make-and-model.test
file path=usr/share/cups/ipptool/get-ppds-make.test
file path=usr/share/cups/ipptool/get-ppds-product.test
file path=usr/share/cups/ipptool/get-ppds-psversion.test
file path=usr/share/cups/ipptool/get-ppds.test
file path=usr/share/cups/ipptool/get-printer-attributes-suite.test
file path=usr/share/cups/ipptool/get-printer-attributes.test
file path=usr/share/cups/ipptool/get-printer-description-attributes.test
file path=usr/share/cups/ipptool/get-printers-printer-id.test
file path=usr/share/cups/ipptool/get-printers.test
file path=usr/share/cups/ipptool/get-subscriptions.test
file path=usr/share/cups/ipptool/gray.jpg
file path=usr/share/cups/ipptool/identify-printer-display.test
file path=usr/share/cups/ipptool/identify-printer-multiple.test
file path=usr/share/cups/ipptool/identify-printer.test
file path=usr/share/cups/ipptool/ipp-1.1.test
file path=usr/share/cups/ipptool/ipp-2.0.test
file path=usr/share/cups/ipptool/ipp-2.1.test
file path=usr/share/cups/ipptool/ipp-2.2.test
file path=usr/share/cups/ipptool/ipp-backend.test
file path=usr/share/cups/ipptool/ipp-everywhere.test
file path=usr/share/cups/ipptool/onepage-a4.pdf
file path=usr/share/cups/ipptool/onepage-a4.ps
file path=usr/share/cups/ipptool/onepage-letter.pdf
file path=usr/share/cups/ipptool/onepage-letter.ps
file path=usr/share/cups/ipptool/print-job-and-wait.test
file path=usr/share/cups/ipptool/print-job-deflate.test
file path=usr/share/cups/ipptool/print-job-gzip.test
file path=usr/share/cups/ipptool/print-job-hold.test
file path=usr/share/cups/ipptool/print-job-letter.test
file path=usr/share/cups/ipptool/print-job-manual.test
file path=usr/share/cups/ipptool/print-job-media-col.test
file path=usr/share/cups/ipptool/print-job-password.test
file path=usr/share/cups/ipptool/print-job.test
file path=usr/share/cups/ipptool/print-uri.test
file path=usr/share/cups/ipptool/set-attrs-hold.test
file path=usr/share/cups/ipptool/testfile.jpg
file path=usr/share/cups/ipptool/testfile.pcl
file path=usr/share/cups/ipptool/testfile.pdf
file path=usr/share/cups/ipptool/testfile.ps
file path=usr/share/cups/ipptool/testfile.txt
file path=usr/share/cups/ipptool/validate-job.test
file path=usr/share/cups/mime/mime.convs
file path=usr/share/cups/mime/mime.convs.O
file path=usr/share/cups/mime/mime.types
file path=usr/share/cups/mime/mime.types.O
file path=usr/share/cups/ppdc/epson.h
file path=usr/share/cups/ppdc/font.defs
file path=usr/share/cups/ppdc/hp.h
file path=usr/share/cups/ppdc/label.h
file path=usr/share/cups/ppdc/media.defs
file path=usr/share/cups/ppdc/raster.defs
file path=usr/share/cups/templates/add-class.tmpl
file path=usr/share/cups/templates/add-printer.tmpl
file path=usr/share/cups/templates/admin.tmpl
file path=usr/share/cups/templates/choose-device.tmpl
file path=usr/share/cups/templates/choose-make.tmpl
file path=usr/share/cups/templates/choose-model.tmpl
file path=usr/share/cups/templates/choose-serial.tmpl
file path=usr/share/cups/templates/choose-uri.tmpl
file path=usr/share/cups/templates/class-added.tmpl
file path=usr/share/cups/templates/class-confirm.tmpl
file path=usr/share/cups/templates/class-deleted.tmpl
file path=usr/share/cups/templates/class-jobs-header.tmpl
file path=usr/share/cups/templates/class-modified.tmpl
file path=usr/share/cups/templates/class.tmpl
file path=usr/share/cups/templates/classes-header.tmpl
file path=usr/share/cups/templates/classes.tmpl
file path=usr/share/cups/templates/command.tmpl
file path=usr/share/cups/templates/de/add-class.tmpl
file path=usr/share/cups/templates/de/add-printer.tmpl
file path=usr/share/cups/templates/de/admin.tmpl
file path=usr/share/cups/templates/de/choose-device.tmpl
file path=usr/share/cups/templates/de/choose-make.tmpl
file path=usr/share/cups/templates/de/choose-model.tmpl
file path=usr/share/cups/templates/de/choose-serial.tmpl
file path=usr/share/cups/templates/de/choose-uri.tmpl
file path=usr/share/cups/templates/de/class-added.tmpl
file path=usr/share/cups/templates/de/class-confirm.tmpl
file path=usr/share/cups/templates/de/class-deleted.tmpl
file path=usr/share/cups/templates/de/class-jobs-header.tmpl
file path=usr/share/cups/templates/de/class-modified.tmpl
file path=usr/share/cups/templates/de/class.tmpl
file path=usr/share/cups/templates/de/classes-header.tmpl
file path=usr/share/cups/templates/de/classes.tmpl
file path=usr/share/cups/templates/de/command.tmpl
file path=usr/share/cups/templates/de/edit-config.tmpl
file path=usr/share/cups/templates/de/error-op.tmpl
file path=usr/share/cups/templates/de/error.tmpl
file path=usr/share/cups/templates/de/header.tmpl
file path=usr/share/cups/templates/de/help-header.tmpl
file path=usr/share/cups/templates/de/help-printable.tmpl
file path=usr/share/cups/templates/de/help-trailer.tmpl
file path=usr/share/cups/templates/de/job-cancel.tmpl
file path=usr/share/cups/templates/de/job-hold.tmpl
file path=usr/share/cups/templates/de/job-move.tmpl
file path=usr/share/cups/templates/de/job-moved.tmpl
file path=usr/share/cups/templates/de/job-release.tmpl
file path=usr/share/cups/templates/de/job-restart.tmpl
file path=usr/share/cups/templates/de/jobs-header.tmpl
file path=usr/share/cups/templates/de/jobs.tmpl
file path=usr/share/cups/templates/de/list-available-printers.tmpl
file path=usr/share/cups/templates/de/modify-class.tmpl
file path=usr/share/cups/templates/de/modify-printer.tmpl
file path=usr/share/cups/templates/de/norestart.tmpl
file path=usr/share/cups/templates/de/option-boolean.tmpl
file path=usr/share/cups/templates/de/option-conflict.tmpl
file path=usr/share/cups/templates/de/option-header.tmpl
file path=usr/share/cups/templates/de/option-pickmany.tmpl
file path=usr/share/cups/templates/de/option-pickone.tmpl
file path=usr/share/cups/templates/de/option-trailer.tmpl
file path=usr/share/cups/templates/de/pager.tmpl
file path=usr/share/cups/templates/de/printer-accept.tmpl
file path=usr/share/cups/templates/de/printer-added.tmpl
file path=usr/share/cups/templates/de/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/de/printer-configured.tmpl
file path=usr/share/cups/templates/de/printer-confirm.tmpl
file path=usr/share/cups/templates/de/printer-default.tmpl
file path=usr/share/cups/templates/de/printer-deleted.tmpl
file path=usr/share/cups/templates/de/printer-jobs-header.tmpl
file path=usr/share/cups/templates/de/printer-modified.tmpl
file path=usr/share/cups/templates/de/printer-reject.tmpl
file path=usr/share/cups/templates/de/printer-start.tmpl
file path=usr/share/cups/templates/de/printer-stop.tmpl
file path=usr/share/cups/templates/de/printer.tmpl
file path=usr/share/cups/templates/de/printers-header.tmpl
file path=usr/share/cups/templates/de/printers.tmpl
file path=usr/share/cups/templates/de/restart.tmpl
file path=usr/share/cups/templates/de/search.tmpl
file path=usr/share/cups/templates/de/set-printer-options-header.tmpl
file path=usr/share/cups/templates/de/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/de/test-page.tmpl
file path=usr/share/cups/templates/de/trailer.tmpl
file path=usr/share/cups/templates/de/users.tmpl
file path=usr/share/cups/templates/edit-config.tmpl
file path=usr/share/cups/templates/error-op.tmpl
file path=usr/share/cups/templates/error.tmpl
file path=usr/share/cups/templates/es/add-class.tmpl
file path=usr/share/cups/templates/es/add-printer.tmpl
file path=usr/share/cups/templates/es/admin.tmpl
file path=usr/share/cups/templates/es/choose-device.tmpl
file path=usr/share/cups/templates/es/choose-make.tmpl
file path=usr/share/cups/templates/es/choose-model.tmpl
file path=usr/share/cups/templates/es/choose-serial.tmpl
file path=usr/share/cups/templates/es/choose-uri.tmpl
file path=usr/share/cups/templates/es/class-added.tmpl
file path=usr/share/cups/templates/es/class-confirm.tmpl
file path=usr/share/cups/templates/es/class-deleted.tmpl
file path=usr/share/cups/templates/es/class-jobs-header.tmpl
file path=usr/share/cups/templates/es/class-modified.tmpl
file path=usr/share/cups/templates/es/class.tmpl
file path=usr/share/cups/templates/es/classes-header.tmpl
file path=usr/share/cups/templates/es/classes.tmpl
file path=usr/share/cups/templates/es/command.tmpl
file path=usr/share/cups/templates/es/edit-config.tmpl
file path=usr/share/cups/templates/es/error-op.tmpl
file path=usr/share/cups/templates/es/error.tmpl
file path=usr/share/cups/templates/es/header.tmpl
file path=usr/share/cups/templates/es/help-header.tmpl
file path=usr/share/cups/templates/es/help-printable.tmpl
file path=usr/share/cups/templates/es/help-trailer.tmpl
file path=usr/share/cups/templates/es/job-cancel.tmpl
file path=usr/share/cups/templates/es/job-hold.tmpl
file path=usr/share/cups/templates/es/job-move.tmpl
file path=usr/share/cups/templates/es/job-moved.tmpl
file path=usr/share/cups/templates/es/job-release.tmpl
file path=usr/share/cups/templates/es/job-restart.tmpl
file path=usr/share/cups/templates/es/jobs-header.tmpl
file path=usr/share/cups/templates/es/jobs.tmpl
file path=usr/share/cups/templates/es/list-available-printers.tmpl
file path=usr/share/cups/templates/es/modify-class.tmpl
file path=usr/share/cups/templates/es/modify-printer.tmpl
file path=usr/share/cups/templates/es/norestart.tmpl
file path=usr/share/cups/templates/es/option-boolean.tmpl
file path=usr/share/cups/templates/es/option-conflict.tmpl
file path=usr/share/cups/templates/es/option-header.tmpl
file path=usr/share/cups/templates/es/option-pickmany.tmpl
file path=usr/share/cups/templates/es/option-pickone.tmpl
file path=usr/share/cups/templates/es/option-trailer.tmpl
file path=usr/share/cups/templates/es/pager.tmpl
file path=usr/share/cups/templates/es/printer-accept.tmpl
file path=usr/share/cups/templates/es/printer-added.tmpl
file path=usr/share/cups/templates/es/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/es/printer-configured.tmpl
file path=usr/share/cups/templates/es/printer-confirm.tmpl
file path=usr/share/cups/templates/es/printer-default.tmpl
file path=usr/share/cups/templates/es/printer-deleted.tmpl
file path=usr/share/cups/templates/es/printer-jobs-header.tmpl
file path=usr/share/cups/templates/es/printer-modified.tmpl
file path=usr/share/cups/templates/es/printer-reject.tmpl
file path=usr/share/cups/templates/es/printer-start.tmpl
file path=usr/share/cups/templates/es/printer-stop.tmpl
file path=usr/share/cups/templates/es/printer.tmpl
file path=usr/share/cups/templates/es/printers-header.tmpl
file path=usr/share/cups/templates/es/printers.tmpl
file path=usr/share/cups/templates/es/restart.tmpl
file path=usr/share/cups/templates/es/search.tmpl
file path=usr/share/cups/templates/es/set-printer-options-header.tmpl
file path=usr/share/cups/templates/es/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/es/test-page.tmpl
file path=usr/share/cups/templates/es/trailer.tmpl
file path=usr/share/cups/templates/es/users.tmpl
file path=usr/share/cups/templates/fr/add-class.tmpl
file path=usr/share/cups/templates/fr/add-printer.tmpl
file path=usr/share/cups/templates/fr/admin.tmpl
file path=usr/share/cups/templates/fr/choose-device.tmpl
file path=usr/share/cups/templates/fr/choose-make.tmpl
file path=usr/share/cups/templates/fr/choose-model.tmpl
file path=usr/share/cups/templates/fr/choose-serial.tmpl
file path=usr/share/cups/templates/fr/choose-uri.tmpl
file path=usr/share/cups/templates/fr/class-added.tmpl
file path=usr/share/cups/templates/fr/class-confirm.tmpl
file path=usr/share/cups/templates/fr/class-deleted.tmpl
file path=usr/share/cups/templates/fr/class-jobs-header.tmpl
file path=usr/share/cups/templates/fr/class-modified.tmpl
file path=usr/share/cups/templates/fr/class.tmpl
file path=usr/share/cups/templates/fr/classes-header.tmpl
file path=usr/share/cups/templates/fr/classes.tmpl
file path=usr/share/cups/templates/fr/command.tmpl
file path=usr/share/cups/templates/fr/edit-config.tmpl
file path=usr/share/cups/templates/fr/error-op.tmpl
file path=usr/share/cups/templates/fr/error.tmpl
file path=usr/share/cups/templates/fr/header.tmpl
file path=usr/share/cups/templates/fr/help-header.tmpl
file path=usr/share/cups/templates/fr/help-printable.tmpl
file path=usr/share/cups/templates/fr/help-trailer.tmpl
file path=usr/share/cups/templates/fr/job-cancel.tmpl
file path=usr/share/cups/templates/fr/job-hold.tmpl
file path=usr/share/cups/templates/fr/job-move.tmpl
file path=usr/share/cups/templates/fr/job-moved.tmpl
file path=usr/share/cups/templates/fr/job-release.tmpl
file path=usr/share/cups/templates/fr/job-restart.tmpl
file path=usr/share/cups/templates/fr/jobs-header.tmpl
file path=usr/share/cups/templates/fr/jobs.tmpl
file path=usr/share/cups/templates/fr/list-available-printers.tmpl
file path=usr/share/cups/templates/fr/modify-class.tmpl
file path=usr/share/cups/templates/fr/modify-printer.tmpl
file path=usr/share/cups/templates/fr/norestart.tmpl
file path=usr/share/cups/templates/fr/option-boolean.tmpl
file path=usr/share/cups/templates/fr/option-conflict.tmpl
file path=usr/share/cups/templates/fr/option-header.tmpl
file path=usr/share/cups/templates/fr/option-pickmany.tmpl
file path=usr/share/cups/templates/fr/option-pickone.tmpl
file path=usr/share/cups/templates/fr/option-trailer.tmpl
file path=usr/share/cups/templates/fr/pager.tmpl
file path=usr/share/cups/templates/fr/printer-accept.tmpl
file path=usr/share/cups/templates/fr/printer-added.tmpl
file path=usr/share/cups/templates/fr/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/fr/printer-configured.tmpl
file path=usr/share/cups/templates/fr/printer-confirm.tmpl
file path=usr/share/cups/templates/fr/printer-default.tmpl
file path=usr/share/cups/templates/fr/printer-deleted.tmpl
file path=usr/share/cups/templates/fr/printer-jobs-header.tmpl
file path=usr/share/cups/templates/fr/printer-modified.tmpl
file path=usr/share/cups/templates/fr/printer-reject.tmpl
file path=usr/share/cups/templates/fr/printer-start.tmpl
file path=usr/share/cups/templates/fr/printer-stop.tmpl
file path=usr/share/cups/templates/fr/printer.tmpl
file path=usr/share/cups/templates/fr/printers-header.tmpl
file path=usr/share/cups/templates/fr/printers.tmpl
file path=usr/share/cups/templates/fr/restart.tmpl
file path=usr/share/cups/templates/fr/search.tmpl
file path=usr/share/cups/templates/fr/set-printer-options-header.tmpl
file path=usr/share/cups/templates/fr/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/fr/test-page.tmpl
file path=usr/share/cups/templates/fr/trailer.tmpl
file path=usr/share/cups/templates/fr/users.tmpl
file path=usr/share/cups/templates/header.tmpl
file path=usr/share/cups/templates/help-header.tmpl
file path=usr/share/cups/templates/help-printable.tmpl
file path=usr/share/cups/templates/help-trailer.tmpl
file path=usr/share/cups/templates/ja/add-class.tmpl
file path=usr/share/cups/templates/ja/add-printer.tmpl
file path=usr/share/cups/templates/ja/admin.tmpl
file path=usr/share/cups/templates/ja/choose-device.tmpl
file path=usr/share/cups/templates/ja/choose-make.tmpl
file path=usr/share/cups/templates/ja/choose-model.tmpl
file path=usr/share/cups/templates/ja/choose-serial.tmpl
file path=usr/share/cups/templates/ja/choose-uri.tmpl
file path=usr/share/cups/templates/ja/class-added.tmpl
file path=usr/share/cups/templates/ja/class-confirm.tmpl
file path=usr/share/cups/templates/ja/class-deleted.tmpl
file path=usr/share/cups/templates/ja/class-jobs-header.tmpl
file path=usr/share/cups/templates/ja/class-modified.tmpl
file path=usr/share/cups/templates/ja/class.tmpl
file path=usr/share/cups/templates/ja/classes-header.tmpl
file path=usr/share/cups/templates/ja/classes.tmpl
file path=usr/share/cups/templates/ja/command.tmpl
file path=usr/share/cups/templates/ja/edit-config.tmpl
file path=usr/share/cups/templates/ja/error-op.tmpl
file path=usr/share/cups/templates/ja/error.tmpl
file path=usr/share/cups/templates/ja/header.tmpl
file path=usr/share/cups/templates/ja/help-header.tmpl
file path=usr/share/cups/templates/ja/help-printable.tmpl
file path=usr/share/cups/templates/ja/help-trailer.tmpl
file path=usr/share/cups/templates/ja/job-cancel.tmpl
file path=usr/share/cups/templates/ja/job-hold.tmpl
file path=usr/share/cups/templates/ja/job-move.tmpl
file path=usr/share/cups/templates/ja/job-moved.tmpl
file path=usr/share/cups/templates/ja/job-release.tmpl
file path=usr/share/cups/templates/ja/job-restart.tmpl
file path=usr/share/cups/templates/ja/jobs-header.tmpl
file path=usr/share/cups/templates/ja/jobs.tmpl
file path=usr/share/cups/templates/ja/list-available-printers.tmpl
file path=usr/share/cups/templates/ja/modify-class.tmpl
file path=usr/share/cups/templates/ja/modify-printer.tmpl
file path=usr/share/cups/templates/ja/norestart.tmpl
file path=usr/share/cups/templates/ja/option-boolean.tmpl
file path=usr/share/cups/templates/ja/option-conflict.tmpl
file path=usr/share/cups/templates/ja/option-header.tmpl
file path=usr/share/cups/templates/ja/option-pickmany.tmpl
file path=usr/share/cups/templates/ja/option-pickone.tmpl
file path=usr/share/cups/templates/ja/option-trailer.tmpl
file path=usr/share/cups/templates/ja/pager.tmpl
file path=usr/share/cups/templates/ja/printer-accept.tmpl
file path=usr/share/cups/templates/ja/printer-added.tmpl
file path=usr/share/cups/templates/ja/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/ja/printer-configured.tmpl
file path=usr/share/cups/templates/ja/printer-confirm.tmpl
file path=usr/share/cups/templates/ja/printer-default.tmpl
file path=usr/share/cups/templates/ja/printer-deleted.tmpl
file path=usr/share/cups/templates/ja/printer-jobs-header.tmpl
file path=usr/share/cups/templates/ja/printer-modified.tmpl
file path=usr/share/cups/templates/ja/printer-reject.tmpl
file path=usr/share/cups/templates/ja/printer-start.tmpl
file path=usr/share/cups/templates/ja/printer-stop.tmpl
file path=usr/share/cups/templates/ja/printer.tmpl
file path=usr/share/cups/templates/ja/printers-header.tmpl
file path=usr/share/cups/templates/ja/printers.tmpl
file path=usr/share/cups/templates/ja/restart.tmpl
file path=usr/share/cups/templates/ja/search.tmpl
file path=usr/share/cups/templates/ja/set-printer-options-header.tmpl
file path=usr/share/cups/templates/ja/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/ja/test-page.tmpl
file path=usr/share/cups/templates/ja/trailer.tmpl
file path=usr/share/cups/templates/ja/users.tmpl
file path=usr/share/cups/templates/job-cancel.tmpl
file path=usr/share/cups/templates/job-hold.tmpl
file path=usr/share/cups/templates/job-move.tmpl
file path=usr/share/cups/templates/job-moved.tmpl
file path=usr/share/cups/templates/job-release.tmpl
file path=usr/share/cups/templates/job-restart.tmpl
file path=usr/share/cups/templates/jobs-header.tmpl
file path=usr/share/cups/templates/jobs.tmpl
file path=usr/share/cups/templates/list-available-printers.tmpl
file path=usr/share/cups/templates/modify-class.tmpl
file path=usr/share/cups/templates/modify-printer.tmpl
file path=usr/share/cups/templates/norestart.tmpl
file path=usr/share/cups/templates/option-boolean.tmpl
file path=usr/share/cups/templates/option-conflict.tmpl
file path=usr/share/cups/templates/option-header.tmpl
file path=usr/share/cups/templates/option-pickmany.tmpl
file path=usr/share/cups/templates/option-pickone.tmpl
file path=usr/share/cups/templates/option-trailer.tmpl
file path=usr/share/cups/templates/pager.tmpl
file path=usr/share/cups/templates/printer-accept.tmpl
file path=usr/share/cups/templates/printer-added.tmpl
file path=usr/share/cups/templates/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/printer-configured.tmpl
file path=usr/share/cups/templates/printer-confirm.tmpl
file path=usr/share/cups/templates/printer-default.tmpl
file path=usr/share/cups/templates/printer-deleted.tmpl
file path=usr/share/cups/templates/printer-jobs-header.tmpl
file path=usr/share/cups/templates/printer-modified.tmpl
file path=usr/share/cups/templates/printer-reject.tmpl
file path=usr/share/cups/templates/printer-start.tmpl
file path=usr/share/cups/templates/printer-stop.tmpl
file path=usr/share/cups/templates/printer.tmpl
file path=usr/share/cups/templates/printers-header.tmpl
file path=usr/share/cups/templates/printers.tmpl
file path=usr/share/cups/templates/pt_BR/add-class.tmpl
file path=usr/share/cups/templates/pt_BR/add-printer.tmpl
file path=usr/share/cups/templates/pt_BR/admin.tmpl
file path=usr/share/cups/templates/pt_BR/choose-device.tmpl
file path=usr/share/cups/templates/pt_BR/choose-make.tmpl
file path=usr/share/cups/templates/pt_BR/choose-model.tmpl
file path=usr/share/cups/templates/pt_BR/choose-serial.tmpl
file path=usr/share/cups/templates/pt_BR/choose-uri.tmpl
file path=usr/share/cups/templates/pt_BR/class-added.tmpl
file path=usr/share/cups/templates/pt_BR/class-confirm.tmpl
file path=usr/share/cups/templates/pt_BR/class-deleted.tmpl
file path=usr/share/cups/templates/pt_BR/class-jobs-header.tmpl
file path=usr/share/cups/templates/pt_BR/class-modified.tmpl
file path=usr/share/cups/templates/pt_BR/class.tmpl
file path=usr/share/cups/templates/pt_BR/classes-header.tmpl
file path=usr/share/cups/templates/pt_BR/classes.tmpl
file path=usr/share/cups/templates/pt_BR/command.tmpl
file path=usr/share/cups/templates/pt_BR/edit-config.tmpl
file path=usr/share/cups/templates/pt_BR/error-op.tmpl
file path=usr/share/cups/templates/pt_BR/error.tmpl
file path=usr/share/cups/templates/pt_BR/header.tmpl
file path=usr/share/cups/templates/pt_BR/help-header.tmpl
file path=usr/share/cups/templates/pt_BR/help-printable.tmpl
file path=usr/share/cups/templates/pt_BR/help-trailer.tmpl
file path=usr/share/cups/templates/pt_BR/job-cancel.tmpl
file path=usr/share/cups/templates/pt_BR/job-hold.tmpl
file path=usr/share/cups/templates/pt_BR/job-move.tmpl
file path=usr/share/cups/templates/pt_BR/job-moved.tmpl
file path=usr/share/cups/templates/pt_BR/job-release.tmpl
file path=usr/share/cups/templates/pt_BR/job-restart.tmpl
file path=usr/share/cups/templates/pt_BR/jobs-header.tmpl
file path=usr/share/cups/templates/pt_BR/jobs.tmpl
file path=usr/share/cups/templates/pt_BR/list-available-printers.tmpl
file path=usr/share/cups/templates/pt_BR/modify-class.tmpl
file path=usr/share/cups/templates/pt_BR/modify-printer.tmpl
file path=usr/share/cups/templates/pt_BR/norestart.tmpl
file path=usr/share/cups/templates/pt_BR/option-boolean.tmpl
file path=usr/share/cups/templates/pt_BR/option-conflict.tmpl
file path=usr/share/cups/templates/pt_BR/option-header.tmpl
file path=usr/share/cups/templates/pt_BR/option-pickmany.tmpl
file path=usr/share/cups/templates/pt_BR/option-pickone.tmpl
file path=usr/share/cups/templates/pt_BR/option-trailer.tmpl
file path=usr/share/cups/templates/pt_BR/pager.tmpl
file path=usr/share/cups/templates/pt_BR/printer-accept.tmpl
file path=usr/share/cups/templates/pt_BR/printer-added.tmpl
file path=usr/share/cups/templates/pt_BR/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/pt_BR/printer-configured.tmpl
file path=usr/share/cups/templates/pt_BR/printer-confirm.tmpl
file path=usr/share/cups/templates/pt_BR/printer-default.tmpl
file path=usr/share/cups/templates/pt_BR/printer-deleted.tmpl
file path=usr/share/cups/templates/pt_BR/printer-jobs-header.tmpl
file path=usr/share/cups/templates/pt_BR/printer-modified.tmpl
file path=usr/share/cups/templates/pt_BR/printer-reject.tmpl
file path=usr/share/cups/templates/pt_BR/printer-start.tmpl
file path=usr/share/cups/templates/pt_BR/printer-stop.tmpl
file path=usr/share/cups/templates/pt_BR/printer.tmpl
file path=usr/share/cups/templates/pt_BR/printers-header.tmpl
file path=usr/share/cups/templates/pt_BR/printers.tmpl
file path=usr/share/cups/templates/pt_BR/restart.tmpl
file path=usr/share/cups/templates/pt_BR/search.tmpl
file path=usr/share/cups/templates/pt_BR/set-printer-options-header.tmpl
file path=usr/share/cups/templates/pt_BR/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/pt_BR/test-page.tmpl
file path=usr/share/cups/templates/pt_BR/trailer.tmpl
file path=usr/share/cups/templates/pt_BR/users.tmpl
file path=usr/share/cups/templates/restart.tmpl
file path=usr/share/cups/templates/ru/add-class.tmpl
file path=usr/share/cups/templates/ru/add-printer.tmpl
file path=usr/share/cups/templates/ru/admin.tmpl
file path=usr/share/cups/templates/ru/choose-device.tmpl
file path=usr/share/cups/templates/ru/choose-make.tmpl
file path=usr/share/cups/templates/ru/choose-model.tmpl
file path=usr/share/cups/templates/ru/choose-serial.tmpl
file path=usr/share/cups/templates/ru/choose-uri.tmpl
file path=usr/share/cups/templates/ru/class-added.tmpl
file path=usr/share/cups/templates/ru/class-confirm.tmpl
file path=usr/share/cups/templates/ru/class-deleted.tmpl
file path=usr/share/cups/templates/ru/class-jobs-header.tmpl
file path=usr/share/cups/templates/ru/class-modified.tmpl
file path=usr/share/cups/templates/ru/class.tmpl
file path=usr/share/cups/templates/ru/classes-header.tmpl
file path=usr/share/cups/templates/ru/classes.tmpl
file path=usr/share/cups/templates/ru/command.tmpl
file path=usr/share/cups/templates/ru/edit-config.tmpl
file path=usr/share/cups/templates/ru/error-op.tmpl
file path=usr/share/cups/templates/ru/error.tmpl
file path=usr/share/cups/templates/ru/header.tmpl
file path=usr/share/cups/templates/ru/help-header.tmpl
file path=usr/share/cups/templates/ru/help-printable.tmpl
file path=usr/share/cups/templates/ru/help-trailer.tmpl
file path=usr/share/cups/templates/ru/job-cancel.tmpl
file path=usr/share/cups/templates/ru/job-hold.tmpl
file path=usr/share/cups/templates/ru/job-move.tmpl
file path=usr/share/cups/templates/ru/job-moved.tmpl
file path=usr/share/cups/templates/ru/job-release.tmpl
file path=usr/share/cups/templates/ru/job-restart.tmpl
file path=usr/share/cups/templates/ru/jobs-header.tmpl
file path=usr/share/cups/templates/ru/jobs.tmpl
file path=usr/share/cups/templates/ru/list-available-printers.tmpl
file path=usr/share/cups/templates/ru/modify-class.tmpl
file path=usr/share/cups/templates/ru/modify-printer.tmpl
file path=usr/share/cups/templates/ru/norestart.tmpl
file path=usr/share/cups/templates/ru/option-boolean.tmpl
file path=usr/share/cups/templates/ru/option-conflict.tmpl
file path=usr/share/cups/templates/ru/option-header.tmpl
file path=usr/share/cups/templates/ru/option-pickmany.tmpl
file path=usr/share/cups/templates/ru/option-pickone.tmpl
file path=usr/share/cups/templates/ru/option-trailer.tmpl
file path=usr/share/cups/templates/ru/pager.tmpl
file path=usr/share/cups/templates/ru/printer-accept.tmpl
file path=usr/share/cups/templates/ru/printer-added.tmpl
file path=usr/share/cups/templates/ru/printer-cancel-jobs.tmpl
file path=usr/share/cups/templates/ru/printer-configured.tmpl
file path=usr/share/cups/templates/ru/printer-confirm.tmpl
file path=usr/share/cups/templates/ru/printer-default.tmpl
file path=usr/share/cups/templates/ru/printer-deleted.tmpl
file path=usr/share/cups/templates/ru/printer-jobs-header.tmpl
file path=usr/share/cups/templates/ru/printer-modified.tmpl
file path=usr/share/cups/templates/ru/printer-reject.tmpl
file path=usr/share/cups/templates/ru/printer-start.tmpl
file path=usr/share/cups/templates/ru/printer-stop.tmpl
file path=usr/share/cups/templates/ru/printer.tmpl
file path=usr/share/cups/templates/ru/printers-header.tmpl
file path=usr/share/cups/templates/ru/printers.tmpl
file path=usr/share/cups/templates/ru/restart.tmpl
file path=usr/share/cups/templates/ru/search.tmpl
file path=usr/share/cups/templates/ru/set-printer-options-header.tmpl
file path=usr/share/cups/templates/ru/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/ru/test-page.tmpl
file path=usr/share/cups/templates/ru/trailer.tmpl
file path=usr/share/cups/templates/ru/users.tmpl
file path=usr/share/cups/templates/search.tmpl
file path=usr/share/cups/templates/set-printer-options-header.tmpl
file path=usr/share/cups/templates/set-printer-options-trailer.tmpl
file path=usr/share/cups/templates/test-page.tmpl
file path=usr/share/cups/templates/trailer.tmpl
file path=usr/share/cups/templates/users.tmpl
file path=usr/share/cups/usb/org.cups.usb-quirks
file path=usr/share/doc/cups/apple-touch-icon.png
file path=usr/share/doc/cups/cups-printable.css
file path=usr/share/doc/cups/cups.css
file path=usr/share/doc/cups/de/index.html
file path=usr/share/doc/cups/es/index.html
file path=usr/share/doc/cups/help/accounting.html
file path=usr/share/doc/cups/help/admin.html
file path=usr/share/doc/cups/help/api-admin.html
file path=usr/share/doc/cups/help/api-filter.html
file path=usr/share/doc/cups/help/api-ppd.html
file path=usr/share/doc/cups/help/api-raster.html
file path=usr/share/doc/cups/help/cgi.html
file path=usr/share/doc/cups/help/cupspm.html
file path=usr/share/doc/cups/help/encryption.html
file path=usr/share/doc/cups/help/firewalls.html
file path=usr/share/doc/cups/help/glossary.html
file path=usr/share/doc/cups/help/kerberos.html
file path=usr/share/doc/cups/help/license.html
file path=usr/share/doc/cups/help/man-backend.html
file path=usr/share/doc/cups/help/man-cancel.html
file path=usr/share/doc/cups/help/man-classes.conf.html
file path=usr/share/doc/cups/help/man-client.conf.html
file path=usr/share/doc/cups/help/man-cups-config.html
file path=usr/share/doc/cups/help/man-cups-files.conf.html
file path=usr/share/doc/cups/help/man-cups-lpd.html
file path=usr/share/doc/cups/help/man-cups-snmp.html
file path=usr/share/doc/cups/help/man-cups.html
file path=usr/share/doc/cups/help/man-cupsaccept.html
file path=usr/share/doc/cups/help/man-cupsd-helper.html
file path=usr/share/doc/cups/help/man-cupsd-logs.html
file path=usr/share/doc/cups/help/man-cupsd.conf.html
file path=usr/share/doc/cups/help/man-cupsd.html
file path=usr/share/doc/cups/help/man-cupsenable.html
file path=usr/share/doc/cups/help/man-cupstestppd.html
file path=usr/share/doc/cups/help/man-filter.html
file path=usr/share/doc/cups/help/man-ippevepcl.html
file path=usr/share/doc/cups/help/man-ippeveprinter.html
file path=usr/share/doc/cups/help/man-ippfind.html
file path=usr/share/doc/cups/help/man-ipptool.html
file path=usr/share/doc/cups/help/man-ipptoolfile.html
file path=usr/share/doc/cups/help/man-lp.html
file path=usr/share/doc/cups/help/man-lpadmin.html
file path=usr/share/doc/cups/help/man-lpc.html
file path=usr/share/doc/cups/help/man-lpinfo.html
file path=usr/share/doc/cups/help/man-lpmove.html
file path=usr/share/doc/cups/help/man-lpoptions.html
file path=usr/share/doc/cups/help/man-lpq.html
file path=usr/share/doc/cups/help/man-lpr.html
file path=usr/share/doc/cups/help/man-lprm.html
file path=usr/share/doc/cups/help/man-lpstat.html
file path=usr/share/doc/cups/help/man-mime.convs.html
file path=usr/share/doc/cups/help/man-mime.types.html
file path=usr/share/doc/cups/help/man-notifier.html
file path=usr/share/doc/cups/help/man-ppdc.html
file path=usr/share/doc/cups/help/man-ppdhtml.html
file path=usr/share/doc/cups/help/man-ppdi.html
file path=usr/share/doc/cups/help/man-ppdmerge.html
file path=usr/share/doc/cups/help/man-ppdpo.html
file path=usr/share/doc/cups/help/man-printers.conf.html
file path=usr/share/doc/cups/help/man-subscriptions.conf.html
file path=usr/share/doc/cups/help/network.html
file path=usr/share/doc/cups/help/options.html
file path=usr/share/doc/cups/help/overview.html
file path=usr/share/doc/cups/help/policies.html
file path=usr/share/doc/cups/help/postscript-driver.html
file path=usr/share/doc/cups/help/ppd-compiler.html
file path=usr/share/doc/cups/help/raster-driver.html
file path=usr/share/doc/cups/help/ref-ppdcfile.html
file path=usr/share/doc/cups/help/security.html
file path=usr/share/doc/cups/help/sharing.html
file path=usr/share/doc/cups/help/spec-banner.html
file path=usr/share/doc/cups/help/spec-command.html
file path=usr/share/doc/cups/help/spec-design.html
file path=usr/share/doc/cups/help/spec-ipp.html
file path=usr/share/doc/cups/help/spec-ppd.html
file path=usr/share/doc/cups/help/spec-raster.html
file path=usr/share/doc/cups/help/spec-stp.html
file path=usr/share/doc/cups/help/translation.html
file path=usr/share/doc/cups/images/color-wheel.png
file path=usr/share/doc/cups/images/cups-block-diagram.png
file path=usr/share/doc/cups/images/cups-command-chain.png
file path=usr/share/doc/cups/images/cups-icon.png
file path=usr/share/doc/cups/images/cups-postscript-chain.png
file path=usr/share/doc/cups/images/cups-raster-chain.png
file path=usr/share/doc/cups/images/cups.png
file path=usr/share/doc/cups/images/generic.png
file path=usr/share/doc/cups/images/left.gif
file path=usr/share/doc/cups/images/raster-organization.png
file path=usr/share/doc/cups/images/raster.png
file path=usr/share/doc/cups/images/right.gif
file path=usr/share/doc/cups/images/sample-image.png
file path=usr/share/doc/cups/images/sel.gif
file path=usr/share/doc/cups/images/smiley.jpg
file path=usr/share/doc/cups/images/unsel.gif
file path=usr/share/doc/cups/images/wait.gif
file path=usr/share/doc/cups/index.html
file path=usr/share/doc/cups/ja/index.html
file path=usr/share/doc/cups/pt_BR/index.html
file path=usr/share/doc/cups/robots.txt
file path=usr/share/doc/cups/ru/index.html
file path=usr/share/icons/hicolor/128x128/apps/cups.png
file path=usr/share/icons/hicolor/16x16/apps/cups.png
file path=usr/share/icons/hicolor/32x32/apps/cups.png
file path=usr/share/icons/hicolor/64x64/apps/cups.png
file path=usr/share/locale/ca/cups_ca.po
file path=usr/share/locale/cs/cups_cs.po
file path=usr/share/locale/de/cups_de.po
file path=usr/share/locale/en/cups_en.po
file path=usr/share/locale/es/cups_es.po
file path=usr/share/locale/fr/cups_fr.po
file path=usr/share/locale/it/cups_it.po
file path=usr/share/locale/ja/cups_ja.po
file path=usr/share/locale/pt_BR/cups_pt_BR.po
file path=usr/share/locale/ru/cups_ru.po
file path=usr/share/locale/zh_CN/cups_zh_CN.po
file path=usr/share/man/man1/cancel.1
file path=usr/share/man/man1/cups-config.1
file path=usr/share/man/man1/cups.1
file path=usr/share/man/man1/cupstestppd.1
file path=usr/share/man/man1/ippeveprinter.1
file path=usr/share/man/man1/ippfind.1
file path=usr/share/man/man1/ipptool.1
file path=usr/share/man/man1/lp.1
file path=usr/share/man/man1/lpoptions.1
file path=usr/share/man/man1/lpq.1
file path=usr/share/man/man1/lpr.1
file path=usr/share/man/man1/lprm.1
file path=usr/share/man/man1/lpstat.1
file path=usr/share/man/man1/ppdc.1
file path=usr/share/man/man1/ppdhtml.1
file path=usr/share/man/man1/ppdi.1
file path=usr/share/man/man1/ppdmerge.1
file path=usr/share/man/man1/ppdpo.1
file path=usr/share/man/man5/classes.conf.5
file path=usr/share/man/man5/client.conf.5
file path=usr/share/man/man5/cups-files.conf.5
file path=usr/share/man/man5/cups-snmp.conf.5
file path=usr/share/man/man5/cupsd-logs.5
file path=usr/share/man/man5/cupsd.conf.5
file path=usr/share/man/man5/ipptoolfile.5
file path=usr/share/man/man5/mailto.conf.5
file path=usr/share/man/man5/mime.convs.5
file path=usr/share/man/man5/mime.types.5
file path=usr/share/man/man5/ppdcfile.5
file path=usr/share/man/man5/printers.conf.5
file path=usr/share/man/man5/subscriptions.conf.5
file path=usr/share/man/man7/backend.7
file path=usr/share/man/man7/filter.7
file path=usr/share/man/man7/ippevepcl.7
link path=usr/share/man/man7/ippeveps.7 target=ippevepcl.7
file path=usr/share/man/man7/notifier.7
link path=usr/share/man/man8/cups-deviced.8 target=cupsd-helper.8
link path=usr/share/man/man8/cups-driverd.8 target=cupsd-helper.8
link path=usr/share/man/man8/cups-exec.8 target=cupsd-helper.8
file path=usr/share/man/man8/cups-lpd.8
file path=usr/share/man/man8/cups-snmp.8
file path=usr/share/man/man8/cupsaccept.8
file path=usr/share/man/man8/cupsctl.8
file path=usr/share/man/man8/cupsd-helper.8
file path=usr/share/man/man8/cupsd.8
link path=usr/share/man/man8/cupsdisable.8 target=cupsenable.8
file path=usr/share/man/man8/cupsenable.8
file path=usr/share/man/man8/cupsfilter.8
link path=usr/share/man/man8/cupsreject.8 target=cupsaccept.8
file path=usr/share/man/man8/lpadmin.8
file path=usr/share/man/man8/lpc.8
file path=usr/share/man/man8/lpinfo.8
file path=usr/share/man/man8/lpmove.8

View file

@ -1,105 +0,0 @@
smf(5) support in cups upstream was introduced in times of
Open Solaris enthusiasm. Currently the community do not like
to support anything non-Apple.
It might worth to ask to remove the smf(5) support from
cups upstream entirely then keep it on by own.
diff -wpruN '--exclude=*.orig' a~/scheduler/cups.xml.in a/scheduler/cups.xml.in
--- a~/scheduler/cups.xml.in 1970-01-01 00:00:00
+++ a/scheduler/cups.xml.in 1970-01-01 00:00:00
@@ -41,7 +41,6 @@
<service_fmri value='svc:/network/loopback' />
</dependency>
-
<dependency
name='network'
grouping='optional_all'
@@ -50,21 +49,13 @@
<service_fmri value='svc:/milestone/network' />
</dependency>
- <dependency
- name='lpsched'
- grouping='exclude_all'
- restart_on='none'
- type='service'>
- <service_fmri value='svc:/application/print/server' />
- </dependency>
-
<exec_method
type='method'
name='stop'
exec=':kill'
timeout_seconds='60' />
- <instance name='default' enabled='false' >
+ <instance name='default' enabled='true' >
<dependency
name='config_data'
@@ -79,16 +70,20 @@
name='start'
exec='@sbindir@/cupsd'
timeout_seconds='60' >
- <method_context>
+ <method_context security_flags="aslr">
<method_credential user='root' group='@CUPS_GROUP@' />
</method_context>
</exec_method>
<property_group name='general' type='framework'>
+ <propval name='active' type='boolean'
+ value='true' />
<propval name='action_authorization' type='astring'
value='solaris.smf.manage.cups' />
<propval name='value_authorization' type='astring'
- value='solaris.smf.value.cups' />
+ value='solaris.smf.manage.cups' />
+ <!-- sub-process core dumps shouldn't restart session -->
+ <propval name='ignore_error' type='astring' value='core,signal' />
</property_group>
<template>
@@ -142,21 +137,13 @@
<service_fmri value='svc:/milestone/network' />
</dependency>
- <dependency
- name='in-lpd'
- grouping='exclude_all'
- restart_on='none'
- type='service'>
- <service_fmri value='svc:/application/print/rfc1179' />
- </dependency>
-
<exec_method
type='method'
name='stop'
exec=':kill'
timeout_seconds='60' />
- <instance name='default' enabled='false' >
+ <instance name='default' enabled='true' >
<dependency
name='cupsd'
grouping='require_all'
@@ -170,7 +157,7 @@
name='inetd_start'
exec='@CUPS_SERVERBIN@/daemon/cups-lpd -o document-format=application/octet-stream'
timeout_seconds='0'>
- <method_context>
+ <method_context security_flags="aslr">
<method_credential user='@CUPS_USER@' group='@CUPS_GROUP@' />
</method_context>
</exec_method>
@@ -188,7 +175,7 @@
<propval name='action_authorization' type='astring'
value='solaris.smf.manage.cups' />
<propval name='value_authorization' type='astring'
- value='solaris.smf.value.cups' />
+ value='solaris.smf.manage.cups' />
</property_group>
<template>

View file

@ -1,13 +0,0 @@
diff -wpruN '--exclude=*.orig' a~/config-scripts/cups-compiler.m4 a/config-scripts/cups-compiler.m4
--- a~/config-scripts/cups-compiler.m4 1970-01-01 00:00:00
+++ a/config-scripts/cups-compiler.m4 1970-01-01 00:00:00
@@ -145,7 +145,7 @@ if test -n "$GCC"; then
*)
CFLAGS="$CFLAGS -fPIE -pie"
- AC_TRY_COMPILE(,,[
+ AC_TRY_LINK(,,[
PIEFLAGS="-fPIE -pie"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))

View file

@ -1,27 +0,0 @@
{
"dependencies": [
"SUNWcs",
"image/library/libpng16",
"image/library/libtiff",
"library/gnutls-3",
"library/libusb-1",
"library/zlib",
"runtime/perl-522",
"service/network/dns/mdns",
"service/network/slp",
"service/security/kerberos-5",
"shell/ksh93",
"system/library",
"system/library/g++-7-runtime",
"system/library/gcc-7-runtime",
"system/library/libdbus",
"system/library/math",
"system/library/security/gss",
"system/network/avahi"
],
"fmris": [
"library/print/cups-libs",
"print/cups"
],
"name": "cups"
}

View file

@ -1,88 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
#
ANT=/usr/bin/ant
COMPONENT_BUILD_ENV += JAVA_HOME="$(JAVA_HOME)"
# build the configured source
$(BUILD_DIR)/%/.built: $(SOURCE_DIR)/.prep
$(RM) -r $(@D) ; $(MKDIR) $(@D)
$(CLONEY) $(SOURCE_DIR) $(@D)
$(COMPONENT_PRE_BUILD_ACTION)
(cd $(@D) ; $(ENV) $(COMPONENT_BUILD_ENV) \
$(ANT) $(COMPONENT_BUILD_ARGS) $(COMPONENT_BUILD_TARGETS))
$(COMPONENT_POST_BUILD_ACTION)
ifeq ($(strip $(PARFAIT_BUILD)),yes)
-$(PARFAIT) $(@D)
endif
$(TOUCH) $@
COMPONENT_INSTALL_ENV += JAVA_HOME="$(JAVA_HOME)"
# install the built source into a prototype area
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_INSTALL_ACTION)
(cd $(@D) ; $(ENV) $(COMPONENT_INSTALL_ENV) \
$(ANT) $(COMPONENT_INSTALL_ARGS) $(COMPONENT_INSTALL_TARGETS))
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
COMPONENT_TEST_ENV_CMD = $(ENV)
COMPONENT_TEST_ENV += JAVA_HOME="$(JAVA_HOME)"
COMPONENT_TEST_CMD = $(ANT)
# test the built source
$(BUILD_DIR)/%/.tested-and-compared: $(BUILD_DIR)/%/.built
$(RM) -rf $(COMPONENT_TEST_BUILD_DIR)
$(MKDIR) $(COMPONENT_TEST_BUILD_DIR)
$(COMPONENT_PRE_TEST_ACTION)
-(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS)) \
&> $(COMPONENT_TEST_OUTPUT)
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CREATE_TRANSFORMS)
$(COMPONENT_TEST_PERFORM_TRANSFORM)
$(COMPONENT_TEST_COMPARE)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
$(BUILD_DIR)/%/.tested: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_TEST_ACTION)
(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS))
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
ifeq ($(strip $(PARFAIT_BUILD)),yes)
parfait: build
else
parfait:
$(MAKE) PARFAIT_BUILD=yes parfait
endif
clean::
$(RM) -r $(SOURCE_DIR) $(BUILD_DIR)

View file

@ -1,126 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
#
#
# Rules and Macros for building opens source software that uses AT&T's package
# tool.
#
# To use these rules, include ../make-rules/attpackagemake.mk in your Makefile
# and define "build", "install" targets appropriate to building your component.
# Ex:
#
# build: $(BUILD_32) \
# $(BUILD_64)
#
# install: $(INSTALL_32) \
# $(INSTALL_64)
#
# Any additional pre/post configure, build, or install actions can be specified
# in your Makefile by setting them in on of the following macros:
# COMPONENT_PRE_BUILD_ACTION, COMPONENT_POST_BUILD_ACTION
# COMPONENT_PRE_INSTALL_ACTION, COMPONENT_POST_INSTALL_ACTION
#
# If component specific make targets need to be used for build or install, they
# can be specified in
# COMPONENT_BUILD_TARGETS, COMPONENT_INSTALL_TARGETS
#
# Environment variables and arguments passed into the build and install
# environment(s). These are the initial settings.
COMPONENT_BUILD_ENV += \
CC_EXPLICIT="$(CC)" \
PATH=$(shell dirname $(CC)):$(PATH) \
CC=$(shell basename $(CC))
NPROC="$(NPROC)"
# This explicitly exports the build type for 32/64 bit distinction
COMPONENT_BUILD_ARGS = \
HOSTTYPE="$(HOSTTYPE$(BITS))" \
CCFLAGS="$(CFLAGS)" \
LDFLAGS="$(CXXFLAGS)"
# The install and test process needs the same environment as the build
COMPONENT_INSTALL_ENV = $(COMPONENT_BUILD_ENV)
COMPONENT_TEST_ENV = $(COMPONENT_BUILD_ENV)
COMPONENT_INSTALL_ARGS = HOSTTYPE="$(HOSTTYPE$(BITS))"
COMPONENT_TEST_ARGS = HOSTTYPE="$(HOSTTYPE$(BITS))"
# build the configured source
$(BUILD_DIR)/%/.built: $(SOURCE_DIR)/.prep
$(RM) -r $(@D) ; $(MKDIR) $(@D)
$(CLONEY) $(SOURCE_DIR) $(@D)
$(COMPONENT_PRE_BUILD_ACTION)
cd $(@D); $(ENV) $(COMPONENT_BUILD_ENV) \
bin/package make $(COMPONENT_BUILD_TARGETS) $(COMPONENT_BUILD_ARGS)
$(COMPONENT_POST_BUILD_ACTION)
ifeq ($(strip $(PARFAIT_BUILD)),yes)
-$(PARFAIT) $(@D)
endif
$(TOUCH) $@
# install the built source into a prototype area
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_INSTALL_ACTION)
$(RM) -r $(PROTO_DIR)/$(MACH$(BITS)); $(MKDIR) $(PROTO_DIR)/$(MACH$(BITS));
cd $(@D); $(ENV) $(COMPONENT_INSTALL_ENV) \
bin/package flat $(COMPONENT_INSTALL_TARGETS) \
$(COMPONENT_INSTALL_ARGS) \
$(PROTO_DIR)/$(MACH$(BITS)) $(COMPONENT_INSTALL_PACKAGES)
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
# test the built source
$(BUILD_DIR)/%/.tested-and-compared: $(BUILD_DIR)/%/.built
$(RM) -rf $(COMPONENT_TEST_BUILD_DIR)
$(MKDIR) $(COMPONENT_TEST_BUILD_DIR)
$(COMPONENT_PRE_TEST_ACTION)
-(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
bin/package test $(COMPONENT_TEST_TARGETS) \
$(COMPONENT_TEST_ARGS) \
&> $(COMPONENT_TEST_OUTPUT)
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CREATE_TRANSFORMS)
$(COMPONENT_TEST_PERFORM_TRANSFORM)
$(COMPONENT_TEST_COMPARE)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
$(BUILD_DIR)/%/.tested: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_TEST_ACTION)
(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
bin/package test $(COMPONENT_TEST_TARGETS) \
$(COMPONENT_TEST_ARGS)
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
ifeq ($(strip $(PARFAIT_BUILD)),yes)
parfait: build
else
parfait:
$(MAKE) PARFAIT_BUILD=yes parfait
endif
clean::
$(RM) -r $(BUILD_DIR) $(PROTO_DIR)

View file

@ -1,232 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
# Copyright 2011 EveryCity Ltd. All rights reserved.
# Copyright 2013 Aurelien Larcher. All rights reserved.
#
#
# Rules and Macros for building open source software that uses the CMake utility
# from Kitware (http://www.cmake.org) to configure the build.
# This file implements the same rules as configure.mk and thus uses GNU Make
# to build the components with support of multiple version (32/64 bit).
#
# To use these rules, include ../make-rules/cmake.mk in your Makefile
# and define "build", "install", and "test" targets appropriate to building
# your component.
# Ex:
#
# build: $(SOURCE_DIR)/build/$(MACH32)/.built \
# $(SOURCE_DIR)/build/$(MACH64)/.built
#
# install: $(SOURCE_DIR)/build/$(MACH32)/.installed \
# $(SOURCE_DIR)/build/$(MACH64)/.installed
#
# test: $(SOURCE_DIR)/build/$(MACH32)/.tested \
# $(SOURCE_DIR)/build/$(MACH64)/.tested
#
# Any additional pre/post configure, build, or install actions can be specified
# in your make file by setting them in on of the following macros:
# COMPONENT_PRE_CMAKE_ACTION, COMPONENT_POST_CMAKE_ACTION
# COMPONENT_PRE_BUILD_ACTION, COMPONENT_POST_BUILD_ACTION
# COMPONENT_PRE_INSTALL_ACTION, COMPONENT_POST_INSTALL_ACTION
# COMPONENT_PRE_TEST_ACTION, COMPONENT_POST_TEST_ACTION
#
# If component specific make targets need to be used for build or install, they
# can be specified in
# COMPONENT_BUILD_TARGETS, COMPONENT_INSTALL_TARGETS
# COMPONENT_TEST_TARGETS
#
CMAKE_PREFIX = /usr
#
# Define path the same way as configure.mk
# Ref: http://www.cmake.org/cmake/help/v2.8.12/cmake.html#module:GNUInstallDirs
#
ifeq ($(strip $(PREFERRED_BITS)),64)
CMAKE_BINDIR.32 = bin/$(MACH32)
CMAKE_BINDIR.64 = bin
CMAKE_SBINDIR.32 = sbin/$(MACH32)
CMAKE_SBINDIR.64 = sbin
else
CMAKE_BINDIR.32 = bin
CMAKE_BINDIR.64 = bin/$(MACH64)
CMAKE_SBINDIR.32 = sbin
CMAKE_SBINDIR.64 = sbin/$(MACH64)
endif
CMAKE_LIBDIR.32 = lib
CMAKE_LIBDIR.64 = lib/$(MACH64)
CMAKE_LIBEXECDIR.32 = lib
CMAKE_LIBEXECDIR.64 = lib/$(MACH64)
CMAKE_INCLUDEDIR = include
CMAKE_DATAROOTDIR = share
CMAKE_DATADIR = $(CMAKE_DATAROOTDIR)
CMAKE_INFODIR = $(CMAKE_DATAROOTDIR)/info
CMAKE_LOCALEDIR = $(CMAKE_DATAROOTDIR)/locale
CMAKE_MANDIR = $(CMAKE_DATAROOTDIR)/man
CMAKE_DOCDIR = $(CMAKE_DATAROOTDIR)/doc
CMAKE_ENV = CONFIG_SHELL="$(CONFIG_SHELL)"
CMAKE_ENV += CC="$(CC)"
CMAKE_ENV += CXX="$(CXX)"
CMAKE_ENV += F77="$(F77)"
CMAKE_ENV += FC="$(FC)"
CMAKE_ENV += CFLAGS="$(CFLAGS)"
CMAKE_ENV += CXXFLAGS="$(CXXFLAGS)"
CMAKE_ENV += FFLAGS="$(F77FLAGS)"
CMAKE_ENV += FCFLAGS="$(FCFLAGS)"
CMAKE_ENV += LDFLAGS="$(LDFLAGS)"
CMAKE_ENV += PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)"
# Rewrite absolute source-code paths into relative for ccache, so that any
# workspace with a shared CCACHE_DIR can benefit when compiling a component
ifneq ($(strip $(CCACHE)),)
CMAKE_ENV += CCACHE="$(CCACHE)"
CMAKE_ENV += CC_gcc_32="$(CC_gcc_32)"
CMAKE_ENV += CC_gcc_64="$(CC_gcc_32)"
CMAKE_ENV += CXX_gcc_32="$(CXX_gcc_64)"
CMAKE_ENV += CXX_gcc_64="$(CXX_gcc_64)"
CMAKE_ENV.$(BITS) += CCACHE_BASEDIR="$(BUILD_DIR_$(BITS))"
ifneq ($(strip $(CCACHE_DIR)),)
CMAKE_ENV += CCACHE_DIR="$(CCACHE_DIR)"
endif
ifneq ($(strip $(CCACHE_LOGFILE)),)
CMAKE_ENV += CCACHE_LOGFILE="$(CCACHE_LOGFILE)"
endif
endif
CMAKE_DEFAULT_DIRS?=yes
CMAKE_OPTIONS += -DCMAKE_C_COMPILER:STRING="$(CC)"
CMAKE_OPTIONS += -DCMAKE_CXX_COMPILER:STRING="$(CXX)"
CMAKE_OPTIONS += -DCMAKE_Fortran_COMPILER:STRING="$(FC)"
CMAKE_OPTIONS += -DCMAKE_C_FLAGS:STRING="$(CFLAGS)"
CMAKE_OPTIONS += -DCMAKE_CXX_FLAGS:STRING="$(CXXFLAGS)"
CMAKE_OPTIONS += -DCMAKE_Fortran_FLAGS:STRING="$(FCFLAGS)"
CMAKE_OPTIONS += LDFLAGS="$(LDFLAGS)"
CMAKE_OPTIONS += PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)"
CMAKE_OPTIONS += -DCMAKE_INSTALL_PREFIX:PATH=$(CMAKE_PREFIX)
ifeq ($(CMAKE_DEFAULT_DIRS),yes)
CMAKE_OPTIONS += -DCMAKE_INSTALL_BINDIR:PATH=$(CMAKE_BINDIR.$(BITS))
CMAKE_OPTIONS += -DCMAKE_INSTALL_LIBDIR:PATH=$(CMAKE_LIBDIR.$(BITS))
CMAKE_OPTIONS += -DCMAKE_INSTALL_SBINDIR:PATH=$(CMAKE_SBINDIR.$(BITS))
CMAKE_OPTIONS += -DCMAKE_INSTALL_DATAROOTDIR:PATH=$(CMAKE_DATAROOTDIR)
CMAKE_OPTIONS += -DCMAKE_INSTALL_DATADIR:PATH=$(CMAKE_DATAROOTDIR)
CMAKE_OPTIONS += -DCMAKE_INSTALL_INFODIR:PATH=$(CMAKE_INFODIR)
CMAKE_OPTIONS += -DCMAKE_INSTALL_LOCALEDIR:PATH=$(CMAKE_LOCALEDIR)
CMAKE_OPTIONS += -DCMAKE_INSTALL_MANDIR:PATH=$(CMAKE_MANDIR)
CMAKE_OPTIONS += -DLIBEXEC_INSTALL_DIR="$(CMAKE_PREFIX)/$(CMAKE_LIBEXECDIR.$(BITS))"
# Some components use LIB_INSTALL_DIR or CMAKE_INSTALL_LIBDIR, as-is,
# others forcibly ignore it and set
# based on CMAKE_INSTALL_PREFIX. Those usually instead offer a LIB_SUFFIX
# variable that we can generally use to accomplish the same result. Setting
# them both shouldn't harm anything.
CMAKE_OPTIONS += -DLIB_INSTALL_DIR="$(CMAKE_PREFIX)/$(CMAKE_LIBDIR.$(BITS))"
CMAKE_OPTIONS.64 += -DLIB_SUFFIX="/$(MACH64)"
endif
CMAKE_OPTIONS += $(CMAKE_OPTIONS.$(BITS))
COMPONENT_INSTALL_ARGS += DESTDIR=$(PROTO_DIR)
$(BUILD_DIR_32)/.configured: BITS=32
$(BUILD_DIR_64)/.configured: BITS=64
CMAKE_ENV += $(CMAKE_ENV.$(BITS))
COMPONENT_TEST_CMD=ctest
COMPONENT_TEST_TARGETS=
# configure the unpacked source for building 32 and 64 bit version
CMAKE = cmake
$(BUILD_DIR)/%/.configured: $(SOURCE_DIR)/.prep
($(RM) -rf $(@D) ; $(MKDIR) $(@D))
$(COMPONENT_PRE_CMAKE_ACTION)
(cd $(@D) ; $(ENV) $(CMAKE_ENV) \
$(CMAKE) $(CMAKE_OPTIONS) $(SOURCE_DIR))
$(COMPONENT_POST_CMAKE_ACTION)
$(TOUCH) $@
# build the configured source
$(BUILD_DIR)/%/.built: $(BUILD_DIR)/%/.configured
$(COMPONENT_PRE_BUILD_ACTION)
(cd $(@D) ; $(ENV) $(COMPONENT_BUILD_ENV) \
$(GMAKE) $(COMPONENT_BUILD_GMAKE_ARGS) $(COMPONENT_BUILD_ARGS) \
$(COMPONENT_BUILD_TARGETS))
$(COMPONENT_POST_BUILD_ACTION)
ifeq ($(strip $(PARFAIT_BUILD)),yes)
-$(PARFAIT) build
endif
$(TOUCH) $@
# install the built source into a prototype area
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_INSTALL_ACTION)
(cd $(@D) ; $(ENV) $(COMPONENT_INSTALL_ENV) $(GMAKE) \
$(COMPONENT_INSTALL_ARGS) $(COMPONENT_INSTALL_TARGETS))
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
# test the built source
$(BUILD_DIR)/%/.tested-and-compared: $(BUILD_DIR)/%/.built
$(RM) -rf $(COMPONENT_TEST_BUILD_DIR)
$(MKDIR) $(COMPONENT_TEST_BUILD_DIR)
$(COMPONENT_PRE_TEST_ACTION)
-(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS)) \
&> $(COMPONENT_TEST_OUTPUT)
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CREATE_TRANSFORMS)
$(COMPONENT_TEST_PERFORM_TRANSFORM)
$(COMPONENT_TEST_COMPARE)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
$(BUILD_DIR)/%/.tested: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_TEST_ACTION)
(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS))
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
ifeq ($(strip $(PARFAIT_BUILD)),yes)
parfait: install
-$(PARFAIT) build
else
parfait:
$(MAKE) PARFAIT_BUILD=yes parfait
endif
clean::
$(RM) -r $(BUILD_DIR) $(PROTO_DIR)

View file

@ -1,46 +0,0 @@
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"). You may
# only use this file in accordance with the terms of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright 2015 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
#
#
# Rules to install a common lisp library package.
#
# To use these rules, just include ../make-rules/common-lisp.mk in your
# Makefile and define "build" and "install" targets. E.g.,
#
# build: $(BUILD_32)
#
# install: $(INSTALL_32)
#
# Since common lisp libraries are all source code, there is no need for
# BUILD_64 and INSTALL_64.
INSTALL_DIR = $(PROTOCLDIR)/source/$(COMPONENT_NAME)
$(BUILD_DIR)/%/.built: $(SOURCE_DIR)/.prep
$(MKDIR) $(@D)
$(TOUCH) $@
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(MKDIR) $(PROTOCLDIR)
$(MKDIR) $(PROTOCLDIR)/source
$(MKDIR) $(PROTOCLDIR)/systems
$(MKDIR) $(INSTALL_DIR)
$(CP) -a $(SOURCE_DIR)/* $(INSTALL_DIR)
(cd $(PROTOCLDIR)/systems; \
$(RM) $(COMPONENT_NAME).asd; \
$(LN) -s ../source/$(COMPONENT_NAME)/$(COMPONENT_NAME).asd)
$(TOUCH) $@
clean::
$(RM) -r $(BUILD_DIR) $(PROTO_DIR)

View file

@ -1,191 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
#
#
# This file sets up the standard, default options and base requirements for
# userland components.
#
include $(WS_MAKE_RULES)/prep.mk
# Override this to limit builds and publication to a single architecture.
BUILD_ARCH ?= $(MACH)
ifneq ($(strip $(BUILD_ARCH)),$(MACH))
PUBLISH_STAMP=
target-na:
@echo "Not available for $(MACH)"
BUILD_TARGET ?= target-na
INSTALL_TARGET ?= target-na
TEST_TARGET ?= target-na
SYSTEM_TEST_TARGET ?= target-na
endif
# Assume components use a configure script-style build by default.
BUILD_STYLE ?= configure
# If not an archive build (i.e. extract and copy) or pkg build (publish only),
# include relevant makefile.
ifneq ($(strip $(BUILD_STYLE)),archive)
ifneq ($(strip $(BUILD_STYLE)),pkg)
include $(WS_MAKE_RULES)/$(strip $(BUILD_STYLE)).mk
endif
endif
ifeq ($(strip $(BUILD_STYLE)),configure)
# Assume these items should always be set in the configure environment. strip
# is used to work around potential problems with extra blank characters
# inserted into strings during nested configure invocations within builds for
# components such as gdb.
ifneq ($(strip $(CFLAGS)),)
# Only if provided.
CONFIGURE_ENV += CFLAGS="$(strip $(CFLAGS))"
endif
ifneq ($(strip $(CXXFLAGS)),)
# Only if provided.
CONFIGURE_ENV += CXXFLAGS="$(strip $(CXXFLAGS))"
endif
# Always process LDFLAGS.
CONFIGURE_ENV += LDFLAGS="$(strip $(LDFLAGS))"
endif
ifeq ($(strip $(BUILD_STYLE)),justmake)
# Assume these items should always be set in the build environment.
COMPONENT_BUILD_ENV += CC="$(CC)"
COMPONENT_BUILD_ENV += CXX="$(CXX)"
ifneq ($(strip $(CFLAGS)),)
# Only if provided.
COMPONENT_BUILD_ENV += CFLAGS="$(strip $(CFLAGS))"
endif
ifneq ($(strip $(CXXFLAGS)),)
# Only if provided.
COMPONENT_BUILD_ENV += CXXFLAGS="$(strip $(CXXFLAGS))"
endif
# Always process LDFLAGS.
COMPONENT_BUILD_ENV += LDFLAGS="$(strip $(LDFLAGS))"
endif
# Assume components built with ant do not need ASLR.
ifeq ($(strip $(BUILD_STYLE)),ant)
ASLR_MODE= $(ASLR_NOT_APPLICABLE)
else
ifeq ($(strip $(DEFAULT_ASLR_ENABLE)),yes)
# Enable ASLR by default unless target build is NO_ARCH.
ifneq ($(strip $(BUILD_BITS)),NO_ARCH)
ASLR_MODE= $(ASLR_ENABLE)
endif # DEFAULT_ASLR_ENABLE yes
endif # BUILD_BITS NO_ARCH
endif # BUILD_STYLE ant
# Default targets; to omit a specific target, explicitly set the related target
# variable to empty before including this file or set COMMON_TARGETS=no.
COMMON_TARGETS ?= yes
ifneq ($(strip $(COMMON_TARGETS)),no)
# For ant-based build style, assume that install is provided by simply building
# the component and that no tests are available.
ifeq ($(strip $(BUILD_STYLE)),ant)
INSTALL_TARGET ?= build
TEST_TARGET ?= $(NO_TESTS)
SYSTEM_TEST_TARGET ?= $(NO_TESTS)
endif
# For archive-based build style, assume that the build, install, and test
# targets will be provided.
ifeq ($(strip $(BUILD_STYLE)),archive)
BUILD_TARGET ?=
INSTALL_TARGET ?=
TEST_TARGET ?=
endif
# For pkg-based build style, assume there are no build, install, or test steps;
# just a package to be published.
ifeq ($(strip $(BUILD_STYLE)),pkg)
BUILD_TARGET=
INSTALL_TARGET=
TEST_TARGET=
SYSTEM_TEST_TARGET=
build install:
test system-test: $(NO_TESTS)
endif
# If TEST_TARGET is NO_TESTS, assume no system tests by default.
ifeq ($(strip $(TEST_TARGET)),$(NO_TESTS))
SYSTEM_TEST_TARGET ?= $(NO_TESTS)
endif
# If TEST_TARGET is SKIP_TEST, assume system tests are skipped by default.
ifeq ($(strip $(TEST_TARGET)),$(SKIP_TEST))
SYSTEM_TEST_TARGET ?= $(SKIP_TEST)
endif
# Otherwise, attempt to define common targets assuming defaults.
BUILD_TARGET ?= $(BUILD_$(MK_BITS))
ifneq ($(strip $(BUILD_TARGET)),)
build: $(BUILD_TARGET)
endif
INSTALL_TARGET ?= $(INSTALL_$(MK_BITS))
ifneq ($(strip $(INSTALL_TARGET)),)
install: $(INSTALL_TARGET)
endif
TEST_TARGET ?= $(TEST_$(MK_BITS))
ifneq ($(strip $(TEST_TARGET)),)
test: $(TEST_TARGET)
endif
# For the system-test target, assume that none have been implemented.
SYSTEM_TEST_TARGET ?= $(SYSTEM_TESTS_NOT_IMPLEMENTED)
ifneq ($(strip $(SYSTEM_TEST_TARGET)),)
system-test: $(SYSTEM_TEST_TARGET)
endif
endif # COMMON_TARGETS
# Always needed; every component builds packages.
include $(WS_MAKE_RULES)/ips.mk
# Determine if we should automatically add files directory to PKG_PROTO_DIRS.
ifeq ($(wildcard files),files)
PKG_PROTO_DIRS += $(COMPONENT_DIR)/files
endif
# Add bit and mach-specific logic to general actions.
COMPONENT_PRE_CONFIGURE_ACTION += $(COMPONENT_PRE_CONFIGURE_ACTION.$(BITS))
COMPONENT_PRE_CONFIGURE_ACTION += $(COMPONENT_PRE_CONFIGURE_ACTION.$(MACH))
COMPONENT_POST_CONFIGURE_ACTION += $(COMPONENT_POST_CONFIGURE_ACTION.$(BITS))
COMPONENT_POST_CONFIGURE_ACTION += $(COMPONENT_POST_CONFIGURE_ACTION.$(MACH))
COMPONENT_PRE_BUILD_ACTION += $(COMPONENT_PRE_BUILD_ACTION.$(BITS))
COMPONENT_PRE_BUILD_ACTION += $(COMPONENT_PRE_BUILD_ACTION.$(MACH))
COMPONENT_POST_BUILD_ACTION += $(COMPONENT_POST_BUILD_ACTION.$(BITS))
COMPONENT_POST_BUILD_ACTION += $(COMPONENT_POST_BUILD_ACTION.$(MACH))
COMPONENT_PRE_INSTALL_ACTION += $(COMPONENT_PRE_INSTALL_ACTION.$(BITS))
COMPONENT_PRE_INSTALL_ACTION += $(COMPONENT_PRE_INSTALL_ACTION.$(MACH))
COMPONENT_POST_INSTALL_ACTION += $(COMPONENT_POST_INSTALL_ACTION.$(BITS))
COMPONENT_POST_INSTALL_ACTION += $(COMPONENT_POST_INSTALL_ACTION.$(MACH))
COMPONENT_PRE_TEST_ACTION += $(COMPONENT_PRE_TEST_ACTION.$(BITS))
COMPONENT_PRE_TEST_ACTION += $(COMPONENT_PRE_TEST_ACTION.$(MACH))
COMPONENT_POST_TEST_ACTION += $(COMPONENT_POST_TEST_ACTION.$(BITS))
COMPONENT_POST_TEST_ACTION += $(COMPONENT_POST_TEST_ACTION.$(MACH))

View file

@ -1,56 +0,0 @@
PKG_REPORTS=$(CANONICAL_MANIFESTS:%.p5m=$(BUILD_DIR)/%.pkg-report)
HGWEB_BASE_URL = http://userland.us.oracle.com/hg/file/tip/
ARIA_BASE_URL = http://people.us.oracle.com/pls/oracle/find_person?p_string=
ARC_BASE_URL = http://psarc.us.oracle.com/
BUGDB_URL = http://userland.us.oracle.com/bugdb?cat-subcat=
REPORT_TRANSFORMS = $(WS_TOP)/transforms/report
CDIR=$(COMPONENT_DIR:$(WS_TOP)/%=%)
component-report: $(BUILD_DIR)/component-report
$(BUILD_DIR)/component-report: $(BUILD_DIR)/package-info
@echo "<tr>" >$@
@echo "<td><a href='$(COMPONENT_PROJECT_URL)'>$(COMPONENT_NAME)</a></td>" >>$@
@echo "<td><a href='$(COMPONENT_ARCHIVE_URL)'>$(COMPONENT_VERSION)</a></td>" >>$@
@echo "<td><a href='$(HGWEB_BASE_URL)$(CDIR)'>$(CDIR)</a></td>" >>$@
@echo "<td>" >>$@ ; for pkg in $(PACKAGE) ; do \
echo "$$pkg<br>" >>$@ ; \
done ; echo "</td>" >>$@
@echo "<td>" >>$@ ; for arc in $(ARC_CASE) ; do \
echo "<a href='$(ARC_BASE_URL)$$arc'>$$arc</a><br>" >>$@ ; \
done ; echo "</td>" >>$@
@echo "<td>" >>$@ ; for license in $(LICENSE) ; do \
echo "$$license<br>" >>$@ ; \
done ; echo "</td>" >>$@
@echo "<td>$(TPNO)</td>" >>$@
@echo "<td>" >>$@ ; for bugdb in $(COMPONENT_BUGDB) ; do \
echo "<a href='$(BUGDB_URL)$$bugdb'>$$bugdb</a><br>" >>$@ ; \
done ; echo "</td>" >>$@
@echo "<td><a href='$(ARIA_BASE_URL)$(RESPONSIBLE_ENGINEER)'>$(RESPONSIBLE_ENGINEER)</a></td>" >>$@
@echo "<td><a href='$(ARIA_BASE_URL)$(RESPONSIBLE_MANAGER)'>$(RESPONSIBLE_MANAGER)</a></td>" >>$@
@echo "<td>$(TEAM)</td>" >>$@
@echo "</tr>" >>$@
$(BUILD_DIR)/package-info: $(PKG_REPORTS)
@cat $(PKG_REPORTS) | sort -u >$@
$(BUILD_DIR)/component-info: $(PKG_REPORTS)
@echo "COMPONENT_NAME=\"$(COMPONENT_NAME)\"" >$@
@echo "COMPONENT_VERSION=\"$(COMPONENT_VERSION)\"" >>$@
@echo "COMPONENT_PROJECT_URL=\"$(COMPONENT_PROJECT_URL)\"" >>$@
@echo "COMPONENT_ARCHIVE_URL=\"$(COMPONENT_ARCHIVE_URL)\"" >>$@
@echo "COMPONENT_DIR=\"$(CDIR)\"" >>$@
@echo "TPNO=\"$(TPNO)\"" >>$@
@echo "COMPONENT_BUGDB=\"$(COMPONENT_BUGDB)\"" >>$@
@echo "RESPONSIBLE_ENGINEER=\"$(RESPONSIBLE_ENGINEER)\"" >>$@
@echo "RESPONSIBLE_MANAGER=\"$(RESPONSIBLE_MANAGER)\"" >>$@
@echo "TEAM=\"$(TEAM)\"" >>$@
$(BUILD_DIR)/%.pkg-report: %.p5m $(BUILD_DIR)
@$(PKGMOGRIFY) $(PKG_OPTIONS) -P $@ $< \
$(REPORT_TRANSFORMS) >/dev/null
include $(BUILD_DIR)/package-info

View file

@ -1,33 +0,0 @@
# A simple rule to print the value of any macro. Ex:
# $ gmake print-REQUIRED_PACKAGES
# Note that some macros are set on a per target basis, so what you see
# is not always what you get.
print-%:
@echo '$(subst ','\'',$*=$($*)) (origin: $(origin $*), flavor: $(flavor $*))'
# A simple rule to print only the value of any macro.
print-value-%:
@echo '$(subst ','\'',$($*))'
# Provide default print package targets for components that do not rely on IPS.
# Define them implicitly so that the definitions do not collide with ips.mk
define print-package-rule
echo $(strip $(PACKAGE_$(1))) | tr ' ' '\n'
endef
COMPONENT_TOOL = $(WS_TOOLS)/userland-component
format:
@$(COMPONENT_TOOL) --path $(COMPONENT_DIR);
update:
@if [ "$(VERSION)X" = "X" ]; \
then $(COMPONENT_TOOL) --path $(COMPONENT_DIR) --bump; \
else $(COMPONENT_TOOL) --path $(COMPONENT_DIR) --bump $(VERSION); \
fi;
update-latest:
$(COMPONENT_TOOL) --path $(COMPONENT_DIR) --bump latest;

View file

@ -1,249 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
# Copyright 2011 EveryCity Ltd. All rights reserved.
#
#
# Rules and Macros for building opens source software that uses configure /
# GNU auto* tools to configure their build for the system they are on. This
# uses GNU Make to build the components to take advantage of the viewpath
# support and build multiple version (32/64 bit) from a shared source.
#
# To use these rules, include ../make-rules/configure.mk in your Makefile
# and define "build", "install", and "test" targets appropriate to building
# your component.
# Ex:
#
# build: $(SOURCE_DIR)/build/$(MACH32)/.built \
# $(SOURCE_DIR)/build/$(MACH64)/.built
#
# install: $(SOURCE_DIR)/build/$(MACH32)/.installed \
# $(SOURCE_DIR)/build/$(MACH64)/.installed
#
# test: $(SOURCE_DIR)/build/$(MACH32)/.tested \
# $(SOURCE_DIR)/build/$(MACH64)/.tested
#
# Any additional pre/post configure, build, or install actions can be specified
# in your make file by setting them in on of the following macros:
# COMPONENT_PRE_CONFIGURE_ACTION, COMPONENT_POST_CONFIGURE_ACTION
# COMPONENT_PRE_BUILD_ACTION, COMPONENT_POST_BUILD_ACTION
# COMPONENT_PRE_INSTALL_ACTION, COMPONENT_POST_INSTALL_ACTION
# COMPONENT_PRE_TEST_ACTION, COMPONENT_POST_TEST_ACTION
#
# If component specific make targets need to be used for build or install, they
# can be specified in
# COMPONENT_BUILD_TARGETS, COMPONENT_INSTALL_TARGETS
# COMPONENT_TEST_TARGETS
#
CONFIGURE_PREFIX = /usr
# If the component prefers 64-bit binaries, then ensure builds deliver 64-bit
# binaries to the standard directories and 32-bit binaries to the non-standard
# location. This allows simplification of package manifests and makes it
# easier to deliver the 64-bit binaries as the default.
ifeq ($(strip $(PREFERRED_BITS)),64)
CONFIGURE_BINDIR.32 = $(CONFIGURE_PREFIX)/bin/$(MACH32)
CONFIGURE_BINDIR.64 = $(CONFIGURE_PREFIX)/bin
CONFIGURE_SBINDIR.32 = $(CONFIGURE_PREFIX)/sbin/$(MACH32)
CONFIGURE_SBINDIR.64 = $(CONFIGURE_PREFIX)/sbin
else
CONFIGURE_BINDIR.32 = $(CONFIGURE_PREFIX)/bin
CONFIGURE_BINDIR.64 = $(CONFIGURE_PREFIX)/bin/$(MACH64)
CONFIGURE_SBINDIR.32 = $(CONFIGURE_PREFIX)/sbin
CONFIGURE_SBINDIR.64 = $(CONFIGURE_PREFIX)/sbin/$(MACH64)
endif
# Regardless of PREFERRED_BITS, 64-bit libraries should always be delivered to
# the appropriate subdirectory by default.
CONFIGURE_LIBDIR.32 = $(CONFIGURE_PREFIX)/lib
CONFIGURE_LIBDIR.64 = $(CONFIGURE_PREFIX)/lib/$(MACH64)
CONFIGURE_MANDIR = $(CONFIGURE_PREFIX)/share/man
CONFIGURE_LOCALEDIR = $(CONFIGURE_PREFIX)/share/locale
# all texinfo documentation seems to go to /usr/share/info no matter what
CONFIGURE_INFODIR = /usr/share/info
CONFIGURE_INCLUDEDIR = /usr/include
CONFIGURE_ENV = CONFIG_SHELL="$(CONFIG_SHELL)"
CONFIGURE_ENV += CC="$(CC)"
CONFIGURE_ENV += CXX="$(CXX)"
CONFIGURE_ENV += F77="$(F77)"
CONFIGURE_ENV += FC="$(FC)"
CONFIGURE_ENV += CFLAGS="$(CFLAGS)"
CONFIGURE_ENV += CXXFLAGS="$(CXXFLAGS)"
CONFIGURE_ENV += FFLAGS="$(F77FLAGS)"
CONFIGURE_ENV += FCFLAGS="$(FCFLAGS)"
CONFIGURE_ENV += LDFLAGS="$(LDFLAGS)"
CONFIGURE_ENV += PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)"
# Rewrite absolute source-code paths into relative for ccache, so that any
# workspace with a shared CCACHE_DIR can benefit when compiling a component
ifneq ($(strip $(CCACHE)),)
CONFIGURE_ENV += CCACHE="$(CCACHE)"
CONFIGURE_OPTIONS += CCACHE="$(CCACHE)"
CONFIGURE_ENV += CC_gcc_32="$(CC_gcc_32)"
CONFIGURE_ENV += CC_gcc_64="$(CC_gcc_32)"
CONFIGURE_ENV += CXX_gcc_32="$(CXX_gcc_64)"
CONFIGURE_ENV += CXX_gcc_64="$(CXX_gcc_64)"
CONFIGURE_OPTIONS += CC_gcc_32="$(CC_gcc_32)"
CONFIGURE_OPTIONS += CC_gcc_64="$(CC_gcc_32)"
CONFIGURE_OPTIONS += CXX_gcc_32="$(CXX_gcc_64)"
CONFIGURE_OPTIONS += CXX_gcc_64="$(CXX_gcc_64)"
CONFIGURE_ENV.$(BITS) += CCACHE_BASEDIR="$(BUILD_DIR_$(BITS))"
CONFIGURE_OPTIONS.$(BITS) += CCACHE_BASEDIR="$(BUILD_DIR_$(BITS))"
ifneq ($(strip $(CCACHE_DIR)),)
CONFIGURE_ENV += CCACHE_DIR="$(CCACHE_DIR)"
CONFIGURE_OPTIONS += CCACHE_DIR="$(CCACHE_DIR)"
endif
ifneq ($(strip $(CCACHE_LOGFILE)),)
CONFIGURE_ENV += CCACHE_LOGFILE="$(CCACHE_LOGFILE)"
CONFIGURE_OPTIONS += CCACHE_LOGFILE="$(CCACHE_LOGFILE)"
endif
endif
CONFIGURE_DEFAULT_DIRS?=yes
CONFIGURE_OPTIONS += CC="$(CC)"
CONFIGURE_OPTIONS += CXX="$(CXX)"
CONFIGURE_OPTIONS += F77="$(F77)"
CONFIGURE_OPTIONS += FC="$(FC)"
CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)"
CONFIGURE_OPTIONS += CXXFLAGS="$(CXXFLAGS)"
CONFIGURE_OPTIONS += FFLAGS="$(F77FLAGS)"
CONFIGURE_OPTIONS += FCFLAGS="$(FCFLAGS)"
CONFIGURE_OPTIONS += LDFLAGS="$(LDFLAGS)"
CONFIGURE_OPTIONS += PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)"
CONFIGURE_OPTIONS += --prefix=$(CONFIGURE_PREFIX)
ifeq ($(CONFIGURE_DEFAULT_DIRS),yes)
CONFIGURE_OPTIONS += --mandir=$(CONFIGURE_MANDIR)
CONFIGURE_OPTIONS += --bindir=$(CONFIGURE_BINDIR.$(BITS))
CONFIGURE_OPTIONS += --libdir=$(CONFIGURE_LIBDIR.$(BITS))
CONFIGURE_OPTIONS += --sbindir=$(CONFIGURE_SBINDIR.$(BITS))
endif
CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.$(BITS))
COMPONENT_INSTALL_ARGS += DESTDIR=$(PROTO_DIR)
$(BUILD_DIR_32)/.configured: BITS=32
$(BUILD_DIR_64)/.configured: BITS=64
CONFIGURE_ENV += $(CONFIGURE_ENV.$(BITS))
ifeq ($(strip $(PARFAIT_BUILD)),yes)
# parfait creates '*.bc' files which can confuse configure's
# object/exe extension detection. which we really don't need it
# to do anyway, so we'll just tell it what they are.
CONFIGURE_ENV += ac_cv_objext=o
CONFIGURE_ENV += ac_cv_exeext=""
# this is fixed in the clang compiler but we can't use it yet
CONFIGURE_ENV += ac_cv_header_stdbool_h=yes
endif
# temporarily work around some issues
CONFIGURE_ENV += "ac_cv_func_realloc_0_nonnull=yes"
COMPONENT_BUILD_ENV += "ac_cv_func_realloc_0_nonnull=yes"
# configure the unpacked source for building 32 and 64 bit version
CONFIGURE_SCRIPT = $(SOURCE_DIR)/configure
$(BUILD_DIR)/%/.configured: $(SOURCE_DIR)/.prep
($(RM) -rf $(@D) ; $(MKDIR) $(@D))
$(COMPONENT_PRE_CONFIGURE_ACTION)
(cd $(@D) ; $(ENV) $(CONFIGURE_ENV) $(CONFIG_SHELL) \
$(CONFIGURE_SCRIPT) $(CONFIGURE_OPTIONS))
$(COMPONENT_POST_CONFIGURE_ACTION)
$(TOUCH) $@
# build the configured source
$(BUILD_DIR)/%/.built: $(BUILD_DIR)/%/.configured
$(COMPONENT_PRE_BUILD_ACTION)
(cd $(@D) ; $(ENV) $(COMPONENT_BUILD_ENV) \
$(GMAKE) $(COMPONENT_BUILD_GMAKE_ARGS) $(COMPONENT_BUILD_ARGS) \
$(COMPONENT_BUILD_TARGETS))
$(COMPONENT_POST_BUILD_ACTION)
ifeq ($(strip $(PARFAIT_BUILD)),yes)
-$(PARFAIT) build
endif
$(TOUCH) $@
# install the built source into a prototype area
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_INSTALL_ACTION)
(cd $(@D) ; $(ENV) $(COMPONENT_INSTALL_ENV) $(GMAKE) \
$(COMPONENT_INSTALL_ARGS) $(COMPONENT_INSTALL_TARGETS))
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
CONFIGURE_TEST_TRANSFORMS = \
'-n ' \
'-e "/TOTAL:/p" ' \
'-e "/SKIP:/p" ' \
'-e "/PASS:/p" ' \
'-e "/FAIL:/p" ' \
'-e "/ERROR:/p" '
USE_DEFAULT_TEST_TRANSFORMS?=no
ifeq ($(strip $(USE_DEFAULT_TEST_TRANSFORMS)),yes)
COMPONENT_TEST_TRANSFORMS+= $(CONFIGURE_TEST_TRANSFORMS)
endif
# test the built source
$(BUILD_DIR)/%/.tested-and-compared: $(BUILD_DIR)/%/.built
$(RM) -rf $(COMPONENT_TEST_BUILD_DIR)
$(MKDIR) $(COMPONENT_TEST_BUILD_DIR)
$(COMPONENT_PRE_TEST_ACTION)
-(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS)) \
&> $(COMPONENT_TEST_OUTPUT)
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CREATE_TRANSFORMS)
$(COMPONENT_TEST_PERFORM_TRANSFORM)
$(COMPONENT_TEST_COMPARE)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
$(BUILD_DIR)/%/.tested: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_TEST_ACTION)
(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS))
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
ifeq ($(strip $(PARFAIT_BUILD)),yes)
parfait: install
-$(PARFAIT) build
else
parfait:
$(MAKE) PARFAIT_BUILD=yes parfait
endif
clean::
$(RM) -r $(BUILD_DIR) $(PROTO_DIR)

View file

@ -1,25 +0,0 @@
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright 2018 Adam Stevko
#
print-required-packages::
@for package in $(REQUIRED_PACKAGES) ; do \
echo $$package ; \
done | LANG=C LC_ALL=C sort -u
# update the metadata for current component
update-metadata:
@echo "generating metadata: $(CURDIR:$(WS_TOP)/components/%=%)"
@$(BASS_O_MATIC) --workspace=$(WS_TOP) --pkg5

View file

@ -1,24 +0,0 @@
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright 2015 Alexander Pyhalov
#
WS_REPO = $(WS_TOP)/$(MACH)/encumbered-repo
COMPONENT_PKGLINT_ENV += ENCUMBERED=true
PUBLISHER = hipster-encumbered
BASS_O_MATIC = $(WS_TOOLS)/bass-o-matic --subdir=components/encumbered
ENCUMBERED = encumbered/

View file

@ -1,119 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2020, Adam Stevko
#
PFEXEC = /usr/bin/pfexec
ZONE = $(WS_TOOLS)/userland-zone
define separator-line
@$(PYTHON) -c 'l="="*int(40-len("$1")/2); print("%s%s%s" % (l, "$1", l))'
endef
component-environment-check::
$(call separator-line,Workspace)
@echo " Path: $(WS_TOP)"
@echo " Branch: $$(git rev-parse --abbrev-ref HEAD)"
@echo " Changeset: $$(git rev-parse HEAD)"
$(call separator-line,System)
@/usr/bin/uname -a
@echo "Zone: $$(/usr/bin/zonename)"
@echo "Zone IP type: $$(/usr/bin/zonename -t)"
@/usr/sbin/psrinfo -vp
@/usr/sbin/ipadm show-addr
$(call separator-line,Required Packages)
@/usr/bin/pkg list -vH $(USERLAND_REQUIRED_PACKAGES:%=/%) $(REQUIRED_PACKAGES:%=/%)
$(call separator-line)
component-environment-prep::
@/usr/bin/pkg list -vH $(USERLAND_REQUIRED_PACKAGES:%=/%) $(REQUIRED_PACKAGES:%=/%) >/dev/null || \
{ echo "Adding required packages to build environment..."; \
RETVAL=7 ; \
while [ $$RETVAL -eq 7 ] ; do \
$(PFEXEC) /usr/bin/pkg install --accept -v $(REQUIRED_PACKAGES:%=/%) ; \
RETVAL=$$? ; \
if [ $$RETVAL -eq 4 ] || [ -z $$RETVAL ]; then break; fi; \
sleep 10; \
done; }
ZONENAME_PREFIX = bz
ZONENAME_ID = $(shell echo "$(WS_TOP)" | sha1sum | cut -c0-7)-$(COMPONENT_NAME)
ZONENAME = $(ZONENAME_PREFIX)-$(ZONENAME_ID)
component-zone-template:
$(call separator-line)
$(call separator-line,Create template zone)
USER_ID=$$(id -u) && \
$(PFEXEC) $(ZONE) --prefix $(ZONENAME_PREFIX) create-template -u $${USER} -i $${USER_ID}
component-zone-build:
$(call separator-line)
$(call separator-line,Create $(ZONENAME))
$(PFEXEC) $(ZONE) --prefix $(ZONENAME_PREFIX) spawn-zone --id $(ZONENAME_ID)
$(call separator-line,Boot $(ZONENAME))
@while $$(true); do \
echo "Waiting for zone $(ZONENAME) to boot..."; \
$(PFEXEC) /usr/sbin/zlogin -l $${USER} $(ZONENAME) \
/bin/true >/dev/null 2>&1 && break; \
sleep 10; \
done
# FIXME:
# - remove once we figure out a better way how to enable zoneproxy-client inside the nlipkg brand
@while $$(true); do \
echo "Waiting for $(ZONENAME) config repository.."; \
$(PFEXEC) /usr/bin/svcs -z $(ZONENAME) -a >/dev/null 2>&1 && break; \
sleep 10; \
done
# We need to create door inside after zone-proxy-client is running
$(call separator-line,Configure IPS for $(ZONENAME))
$(PFEXEC) /usr/lib/zones/zoneproxy-adm $(ZONENAME)
@while $$(true); do \
echo "Waiting for zoneproxyd to be ready.."; \
PROXY_PID=$$(/usr/bin/svcs -p svc:/application/pkg/zones-proxyd:default | \
nawk '$$0 ~ /zoneproxyd/ {print $$2}') && \
$(PFEXEC) /usr/bin/pfiles $${PROXY_PID} | \
$(GNU_GREP) $(ZONENAME) >/dev/null 2>&1 && break; \
sleep 10; \
done
$(PFEXEC) /usr/sbin/svcadm -z $(ZONENAME) \
enable svc:/application/pkg/zones-proxy-client:default
ZONEROOT="$$(/usr/sbin/zoneadm -z $(ZONENAME) list -p | cut -d: -f4)/root" && \
$(PFEXEC) /usr/bin/pkg -R $${ZONEROOT} set-property use-system-repo True && \
while $$(true); do \
echo "Waiting for sysrepo to be ready..." && \
$(PFEXEC) /usr/bin/pkg -R $${ZONEROOT} publisher | \
$(GNU_GREP) syspub >/dev/null 2>&1 && break; \
sleep 10; \
done
$(call separator-line,Build in $(ZONENAME))
$(PFEXEC) /usr/sbin/zlogin -l $${USER} $(ZONENAME) \
"cd $(COMPONENT_DIR); gmake install"
$(call separator-line)
component-zone-cleanup:
$(PFEXEC) $(ZONE) destroy-zone --id $(ZONENAME_ID)
# Short aliases for user convenience
env-check:: component-environment-check
env-prep:: component-environment-prep

View file

@ -1,201 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2018, Aurelien Larcher. All rights reserved.
#
BUILD_BITS ?= NO_ARCH
BUILD_STYLE ?= archive
ifneq ($(findstring X11,$(FONT_TYPE)),)
X11_CATEGORY = FONT
include $(WS_MAKE_RULES)/x11.mk
endif
include $(WS_MAKE_RULES)/common.mk
MKFONTSCALE = mkfontscale
MKFONTDIR = mkfontdir
ETCFONTSDIR = $(ETCDIR)/fonts
ETCFONTSCONFDIR = $(ETCFONTSDIR)/conf.avail
USRSHAREFONTSDIR = $(USRSHAREDIR)/fonts
#
# Font type macros
#
TTFFONTDIR = TrueType
OTFFONTDIR = OpenType
X11FONTDIR = X11
X11MISCFONTDIR = X11
PKGFONTDIR?= $($(FONT_TYPE)FONTDIR)
# For compatibility
USRSHARETTFFONTSDIR = $(USRSHAREFONTSDIR)/$(TTFFONTDIR)
USRSHAREOTFFONTSDIR = $(USRSHAREFONTSDIR)/$(OTFFONTDIR)
USRSHAREX11FONTSDIR = $(USRSHAREFONTSDIR)/$(X11FONTDIR)
TTFFONTSRC = ttf
OTFFONTSRC = otf
X11FONTSRC =
X11MISCFONTSRC =
PKGFONTSRC?= $($(FONT_TYPE)FONTSRC)
TTFFONTCLS = truetype
OTFFONTCLS = opentype
X11FONTCLS = xorg
X11MISCFONTCLS =
PKGFONTCLS?= $($(FONT_TYPE)FONTCLS)
TTFFONTEXT = *.ttc *.tte *.ttf
OTFFONTEXT = *.otf *.otc *.ttf *.ttc
X11FONTEXT = *.pcf
X11MISCFONTEXT = *.pcf
PKGFONTEXT?= $($(FONT_TYPE)FONTEXT)
PKGFONTCONFSRC = fontconfig
PKGFONTCONFEXT = *.conf
#
# Proto area directories
#
PROTOFONTSDIR = $(PROTO_DIR)$(USRSHAREFONTSDIR)
PROTOTTFFONTSDIR = $(PROTOFONTSDIR)/$(TTFFONTDIR)
PROTOOTFFONTSDIR = $(PROTOFONTSDIR)/$(OTFFONTDIR)
PROTOX11FONTSDIR = $(PROTOFONTSDIR)/$(X11FONTDIR)
PROTOPKGFONTSDIR = $(PROTO$(FONT_TYPE)FONTSDIR)
PROTOFONTSCONFDIR = $(PROTO_DIR)$(ETCFONTSCONFDIR)
#
# Default macros
#
COMPONENT_FONT_TYPE = $(PKGFONTCLS)
COMPONENT_FONT_NAME = $(COMPONENT_NAME)
COMPONENT_FONT_PKG = $(COMPONENT_NAME)
ifeq ($(strip $(COMPONENT_FONT_TYPE)),)
COMPONENT_FMRI = \
system/font/$(strip $(COMPONENT_FONT_PKG))
else
COMPONENT_FMRI = \
system/font/$(strip $(COMPONENT_FONT_TYPE))/$(strip $(COMPONENT_FONT_PKG))
endif
COMPONENT_CLASSIFICATION = System/Fonts
COMPONENT_CATEGORY = font
COMPONENT_FONT_DEST_DIR?= $(USRSHAREFONTSDIR)/$(PKGFONTDIR)/$(COMPONENT_FONT_NAME)
COMPONENT_FONT_SRC_DIR ?= $(PKGFONTSRC)
COMPONENT_FONT_FILES =
COMPONENT_FONTCONF_DEST_DIR?= $(ETCFONTSCONFDIR)
COMPONENT_FONTCONF_SRC_DIR ?= $(PKGFONTCONFSRC)
COMPONENT_FONTCONF_FILES = $(PKGFONTCONFEXT)
#
# Build style specific rules
#
ifeq ($(strip $(BUILD_STYLE)),archive)
POST_INSTALL_MKFONT?=no
COMPONENT_BUILD_ACTION?= true
ifeq ($(strip $(POST_INSTALL_MKFONT)),no)
COMPONENT_BUILD_ACTION = \
cd $(@D)/$(COMPONENT_FONT_SRC_DIR); $(MKFONTSCALE); $(MKFONTDIR);
endif
$(BUILD_DIR)/%/.built: $(SOURCE_DIR)/.prep
($(RM) -rf $(@D) ; $(MKDIR) $(@D))
$(CLONEY) $(SOURCE_DIR) $(@D)
$(COMPONENT_PRE_BUILD_ACTION)
($(COMPONENT_BUILD_ACTION))
$(COMPONENT_POST_BUILD_ACTION)
$(TOUCH) $@
build: $(BUILD_$(MK_BITS))
COMPONENT_FONT_POST_INSTALL_ACTION = \
( $(MKFONTSCALE) $(PROTO_DIR)$(COMPONENT_FONT_DEST_DIR); \
$(MKFONTDIR) $(PROTO_DIR)$(COMPONENT_FONT_DEST_DIR) )
ifeq ($(strip $(POST_INSTALL_MKFONT)),yes)
COMPONENT_POST_INSTALL_ACTION+=$(COMPONENT_FONT_POST_INSTALL_ACTION)
else
COMPONENT_FONT_FILES += fonts.dir
COMPONENT_FONT_FILES += fonts.scale
endif
COMPONENT_INSTALL_ACTION = \
cd $(@D)/$(COMPONENT_FONT_SRC_DIR) && \
$(INSTALL) -m 0444 $(COMPONENT_FONT_FILES) \
$(PROTO_DIR)$(COMPONENT_FONT_DEST_DIR) ; \
if [ -n "$(strip $(COMPONENT_FONTCONF_FILES))" ]; \
then \
cd $(@D)/$(COMPONENT_FONTCONF_SRC_DIR) && \
$(INSTALL) -m 0444 $(COMPONENT_FONTCONF_FILES) \
$(PROTO_DIR)$(COMPONENT_FONTCONF_DEST_DIR) ; \
fi;
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(MKDIR) $(@D)
$(COMPONENT_PRE_INSTALL_ACTION)
-$(RM) -r $(PROTO_DIR)$(COMPONENT_FONT_DEST_DIR)
$(MKDIR) $(PROTO_DIR)$(COMPONENT_FONT_DEST_DIR)
$(MKDIR) $(PROTO_DIR)$(COMPONENT_FONTCONF_DEST_DIR)
($(COMPONENT_INSTALL_ACTION))
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
install: $(INSTALL_$(MK_BITS))
clean::
$(RM) -r $(BUILD_DIR) $(PROTO_DIR)
endif
ifeq ($(strip $(BUILD_STYLE)),configure)
# We don't compress individual font files so that we get better compression
# at higher levels in ZFS & IPS, and so that we aren't constantly replacing
# font files in every build just because the timestamp in the compressed
# version changed.
CONFIGURE_OPTIONS += --without-compression
endif
# Add font metadata to packages to make it easier to search for fonts
$(CANONICAL_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.mogrified): PUBLISH_TRANSFORMS += $(@:.mogrified=.font-transforms)
$(CANONICAL_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.mogrified): font-transforms
font-transforms: $(CANONICAL_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.font-transforms)
$(MANIFEST_BASE)-%.font-transforms: %.p5m
$(PERL) $(WS_TOOLS)/generate_font_metadata.pl \
-p $(PROTO_DIR) -m $< > $@ || ( rm $@ ; exit 1 )
# Package containing fc-scan used in generate_font_metadata.pl
REQUIRED_PACKAGES += system/library/fontconfig
# Package containing $(MKFONTSCALE) & $(MKFONTDIR)
REQUIRED_PACKAGES += x11/font-utilities

View file

@ -1,208 +0,0 @@
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"). You may
# only use this file in accordance with the terms of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright 2019 Aurelien Larcher
#
GCC_COMPONENT_VERSION_MAJOR = $(shell echo $(COMPONENT_VERSION) | $(NAWK) -F. '{print $$1}')
ifeq ($(strip $(ILLUMOS_GCC_REVISION)),)
GCC_COMPONENT_STRING_VERSION = $(COMPONENT_VERSION)-oi-$(COMPONENT_REVISION)
else
GCC_COMPONENT_STRING_VERSION = $(COMPONENT_VERSION)-il-$(ILLUMOS_GCC_REVISION)
endif
GCC_COMPONENT_PREFIX = /usr/gcc/$(GCC_COMPONENT_VERSION_MAJOR)
#
# Define default component variables for upstream GCC
#
ifeq ($(strip $(COMPONENT_VERSION)),)
$(error Empty GCC version)
endif
ifeq ($(strip $(COMPONENT_ARCHIVE_HASH)),)
$(error Empty GCC archive hash)
endif
COMPONENT_NAME= gcc
COMPONENT_FMRI= developer/gcc-$(GCC_COMPONENT_VERSION_MAJOR)
COMPONENT_SUMMARY= GNU Compiler Collection
COMPONENT_CLASSIFICATION= Development/C
COMPONENT_PROJECT_URL = https://gcc.gnu.org/
COMPONENT_SRC ?= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE ?= $(COMPONENT_SRC).tar.xz
COMPONENT_ARCHIVE_URL ?= \
https://ftp.gnu.org/gnu/gcc/gcc-$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
PATCH_EACH_ARCHIVE=1
PATCHDIR_PATCHES = $(shell find $(PATCH_DIR) -type f -name '$(PATCH_PATTERN)' \
2>/dev/null | sort)
MPFR_NAME= mpfr
ifeq ($(strip $(MPFR_VERSION)),)
$(error Empty MPFR version)
endif
ifeq ($(strip $(MPFR_ARCHIVE_HASH)),)
$(error Empty MPFR archive hash)
endif
COMPONENT_SRC_1= $(MPFR_NAME)-$(MPFR_VERSION)
COMPONENT_ARCHIVE_1= $(COMPONENT_SRC_1).tar.bz2
COMPONENT_ARCHIVE_URL_1= https://www.mpfr.org/$(COMPONENT_SRC_1)/$(COMPONENT_ARCHIVE_1)
COMPONENT_ARCHIVE_HASH_1= $(MPFR_ARCHIVE_HASH)
CLEAN_PATHS += $(COMPONENT_SRC_1)
COMPONENT_POST_UNPACK_ACTION_1 += ( $(RM) -r $(COMPONENT_SRC)/$(MPFR_NAME) && $(CP) -rpP $(COMPONENT_SRC_1) $(COMPONENT_SRC)/$(MPFR_NAME) )
MPC_NAME=mpc
ifeq ($(strip $(MPC_VERSION)),)
$(error Empty MPC version)
endif
ifeq ($(strip $(MPC_ARCHIVE_HASH)),)
$(error Empty MPC archive hash)
endif
COMPONENT_SRC_2= $(MPC_NAME)-$(MPC_VERSION)
COMPONENT_ARCHIVE_2= $(COMPONENT_SRC_2).tar.gz
COMPONENT_ARCHIVE_URL_2= https://ftp.gnu.org/gnu/mpc/$(COMPONENT_ARCHIVE_2)
COMPONENT_ARCHIVE_HASH_2= $(MPC_ARCHIVE_HASH)
CLEAN_PATHS += $(COMPONENT_SRC_2)
COMPONENT_POST_UNPACK_ACTION_2 += ( $(RM) -r $(COMPONENT_SRC)/$(MPC_NAME) && $(CP) -rpP $(COMPONENT_SRC_2) $(COMPONENT_SRC)/$(MPC_NAME) )
GMP_NAME=gmp
ifeq ($(strip $(GMP_VERSION)),)
$(error Empty GMP version)
endif
ifeq ($(strip $(GMP_ARCHIVE_HASH)),)
$(error Empty GMP archive hash)
endif
COMPONENT_SRC_3= $(GMP_NAME)-$(GMP_VERSION)
COMPONENT_ARCHIVE_3= $(COMPONENT_SRC_3).tar.bz2
COMPONENT_ARCHIVE_URL_3= https://ftp.gnu.org/gnu/gmp/$(COMPONENT_ARCHIVE_3)
COMPONENT_ARCHIVE_HASH_3= $(GMP_ARCHIVE_HASH)
CLEAN_PATHS += $(COMPONENT_SRC_3)
COMPONENT_POST_UNPACK_ACTION_3 += ( $(RM) -r $(COMPONENT_SRC)/$(GMP_NAME) && $(CP) -rpP $(COMPONENT_SRC_3) $(COMPONENT_SRC)/$(GMP_NAME) )
BUILD_STYLE=configure
include $(WS_MAKE_RULES)/common.mk
PATH=$(PATH.gnu)
CC_BITS=
CFLAGS= -O2
CXXFLAGS= -O2
FCFLAGS= -O2
COMMON_ENV= LD_OPTIONS="-zignore -zcombreloc -i"
COMMON_ENV+= LD_FOR_TARGET=/usr/bin/ld
COMMON_ENV+= LD_FOR_HOST=/usr/bin/ld
COMMON_ENV+= STRIP="/usr/bin/strip -x"
COMMON_ENV+= STRIP_FOR_TARGET="/usr/bin/strip -x"
COMMON_ENV+= LD=/usr/bin/ld
CONFIGURE_ENV+= $(COMMON_ENV)
COMPONENT_BUILD_ENV+= $(COMMON_ENV)
COMPONENT_INSTALL_ENV+= $(COMMON_ENV)
CONFIGURE_PREFIX=$(GCC_COMPONENT_PREFIX)
# General options
CONFIGURE_OPTIONS+= --sbindir=$(CONFIGURE_BINDIR.$(BITS))
CONFIGURE_OPTIONS+= --libdir=$(CONFIGURE_LIBDIR.$(BITS))
CONFIGURE_OPTIONS+= --libexecdir=$(CONFIGURE_LIBDIR.$(BITS))
CONFIGURE_OPTIONS+= --host $(GNU_TRIPLET)
CONFIGURE_OPTIONS+= --build $(GNU_TRIPLET)
CONFIGURE_OPTIONS+= --target $(GNU_TRIPLET)
#CONFIGURE_OPTIONS+= --with-boot-ldflags=-R$(CONFIGURE_PREFIX)/lib
CONFIGURE_OPTIONS+= --with-pkgversion="OpenIndiana $(GCC_COMPONENT_STRING_VERSION)"
CONFIGURE_OPTIONS+= --with-bugurl="https://bugs.openindiana.org"
# Toolchain options
CONFIGURE_OPTIONS+= --without-gnu-ld
CONFIGURE_OPTIONS+= --with-ld=/usr/bin/ld
CONFIGURE_OPTIONS+= --with-build-time-tools=/usr/gnu/$(GNU_TRIPLET)/bin
# If the compiler used to build matches the compiler being built, there is no
# need for a 3 stage build.
ifneq ($(shell $(CC) --version | grep $(COMPONENT_VERSION)),)
CONFIGURE_OPTIONS += --disable-bootstrap
else
COMPONENT_BUILD_TARGETS=bootstrap
endif
# On SPARC systems, use Sun Assembler
CONFIGURE_OPTIONS.sparc+= --without-gnu-as --with-as=/usr/bin/as
CONFIGURE_OPTIONS.i386+= --with-gnu-as --with-as=/usr/bin/gas
CONFIGURE_OPTIONS+= $(CONFIGURE_OPTIONS.$(MACH))
# Set path to library install prefix
CONFIGURE_OPTIONS+= LDFLAGS="-R$(CONFIGURE_PREFIX)/lib"
# Strip the resulting binaries
COMPONENT_INSTALL_TARGETS = install-strip
COMPONENT_POST_INSTALL_ACTION = \
$(RM) -r $(PROTO_DIR)$(CONFIGURE_PREFIX)/lib/gcc/$(GNU_TRIPLET)/$(COMPONENT_VERSION)/include-fixed
unexport SHELLOPTS
#
# Run the tests and generate a summary report, then output the summary
# report into the results file. Note that list of reported tests is sorted
# to allow parallel test run.
#
# To ensure that all tests that are expected to pass actually
# pass, we have to increase the stacksize limit to at least
# 16MB. Otherwise we'll get spurious failures in the test
# harness (gcc.c-torture/compile/limits-exprparen.c and others).
# With the soft stacksize limit set to 16384 we get reasonably good
# test results.
#
ifeq ($(strip $(MACH)),i386)
COMPONENT_PRE_TEST_ACTION += \
(cd $(COMPONENT_TEST_DIR) ; \
ulimit -Ss 16385 ; \
$(ENV) $(COMPONENT_PRE_TEST_ENV) \
$(GMAKE) -k -i $(JOBS:%=-j%) check check-target RUNTESTFLAGS="--target_board=unix/-m64\{,-msave-args\}" ; \
$(FIND) . -name '*.sum' | while read f; do \
gsed -e '1,/^Running target unix/p' -e 'd' $f > $f.2; \
gsed -e '/^Running target unix/,/Summary ===$/p' -e 'd' $f | grep '^.*: ' | sort -k 2 >> $f.2; \
gsed -e '/Summary ===$/,$p' -e 'd' $f >> $f.2; \
mv $f.2 $f; done; \
$(GMAKE) mail-report.log)
else
COMPONENT_PRE_TEST_ACTION += \
(cd $(COMPONENT_TEST_DIR) ; \
ulimit -Ss 16385 ; \
$(ENV) $(COMPONENT_PRE_TEST_ENV) \
$(GMAKE) -k -i $(JOBS:%=-j%) check check-target RUNTESTFLAGS="--target_board=unix/-m64" ; \
$(FIND) . -name '*.sum' | while read f; do \
gsed -e '1,/^Running target unix/p' -e 'd' $f > $f.2; \
gsed -e '/^Running target unix/,/Summary ===$/p' -e 'd' $f | grep '^.*: ' | sort -k 2 >> $f.2; \
gsed -e '/Summary ===$/,$p' -e 'd' $f >> $f.2; \
mv $f.2 $f; done; \
$(GMAKE) mail-report.log)
endif
COMPONENT_TEST_CMD = $(CAT)
COMPONENT_TEST_TARGETS = mail-report.log
# Master test results are different between x86 and SPARC.
COMPONENT_TEST_MASTER = \
$(COMPONENT_TEST_RESULTS_DIR)/results-$(MACH).master
# Common dependencies
REQUIRED_PACKAGES += SUNWcs
REQUIRED_PACKAGES += system/library
REQUIRED_PACKAGES += system/library/math
# Required by the test suite
REQUIRED_PACKAGES += developer/test/dejagnu
REQUIRED_PACKAGES += developer/build/autoconf-archive
REQUIRED_PACKAGES += developer/build/autogen
REQUIRED_PACKAGES += system/extended-system-utilities

View file

@ -1,107 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
#
GEM=/usr/ruby/$(RUBY_VERSION)/bin/gem
VENDOR_GEM_DIR=/usr/ruby/$(RUBY_VERSION)/lib/ruby/vendor_ruby/gems/$(RUBY_LIB_VERSION)
# Name of the gem spec to use. This will typically be
# <component_name>.gemspec
GEMSPEC=$(COMPONENT_NAME).gemspec
# Some gems projects have to be built using rake
# Allow GEM build/install commands to be overwritten
# to account for possible differences
GEM_BUILD_ACTION=(cd $(@D); $(GEM) build $(GEM_BUILD_ARGS) $(GEMSPEC))
# Build install args in a more readable fashion
ifeq ($(firstword $(subst .,$(space),$(RUBY_VERSION))),2)
# gem install 2.x does docs differently. Continue to generate both types
GEM_INSTALL_ARGS += --document rdoc,ri
endif
GEM_INSTALL_ARGS += -V --local --force
GEM_INSTALL_ARGS += --install-dir $(PROTO_DIR)/$(VENDOR_GEM_DIR)
GEM_INSTALL_ARGS += --bindir $(PROTO_DIR)/$(VENDOR_GEM_DIR)/bin
# cd into build directory
# gem 2.2.3 uses .gem from the cwd ignoring command line .gem file
# gem 1.8.23.2 uses command line .gem file OR .gem from cwd
GEM_INSTALL_ACTION= (cd $(@D); $(GEM) install $(GEM_INSTALL_ARGS) $(COMPONENT_NAME))
$(BUILD_DIR)/%/.built: $(SOURCE_DIR)/.prep
$(RM) -r $(@D) ; $(MKDIR) $(@D)
$(GTAR) -C $(SOURCE_DIR) -cpf - . | $(GTAR) -C $(@D) -xpf -
$(COMPONENT_PRE_BUILD_ACTION)
# Build the gem and cause the generation of a new gem spec
# file in $(COMPONENT_SRC)
$(GEM_BUILD_ACTION)
$(COMPONENT_POST_BUILD_ACTION)
$(TOUCH) $@
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_INSTALL_ACTION)
$(MKDIR) $(PROTO_DIR)/$(GEM_DIR)
# Install the new recreated gem
$(GEM_INSTALL_ACTION)
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
COMPONENT_TEST_TARGETS =
# Test the built source. If the output file shows up in the environment or
# arguments, don't redirect stdout/stderr to it.
$(BUILD_DIR)/%/.tested-and-compared: $(BUILD_DIR)/%/.built
$(RM) -rf $(COMPONENT_TEST_BUILD_DIR)
$(MKDIR) $(COMPONENT_TEST_BUILD_DIR)
$(COMPONENT_PRE_TEST_ACTION)
-(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS)) \
$(if $(findstring $(COMPONENT_TEST_OUTPUT),$(COMPONENT_TEST_ENV)$(COMPONENT_TEST_ARGS)),,&> $(COMPONENT_TEST_OUTPUT))
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CREATE_TRANSFORMS)
$(COMPONENT_TEST_PERFORM_TRANSFORM)
$(COMPONENT_TEST_COMPARE)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
$(BUILD_DIR)/%/.tested: $(COMPONENT_TEST_DEP)
$(COMPONENT_PRE_TEST_ACTION)
(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS))
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
clean::
$(RM) -r $(SOURCE_DIR) $(BUILD_DIR)
USERLAND_REQUIRED_PACKAGES += runtime/ruby

View file

@ -1,110 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
#
# $(WS_MAKE_RULES)/ips.mk really isn't set up to allow you to bypass all
# the automatic (and lengthy) manifest manipulation that it does, which we
# really don't need to do for these static, uninteresting packages. So we just
# write a simple set of publication rules to get the packages into the repo.
# For gmake clean to work
COMPONENT_SRC=nonexistent
PKGSEND = /usr/bin/pkgsend
PKGLINT = /usr/bin/python3.5 /usr/bin/pkglint
PKGMOGRIFY = /usr/bin/pkgmogrify
GENERATE_HISTORY= $(WS_TOOLS)/generate-history
HISTORY= history
MANIFEST_BASE = $(BUILD_DIR)/manifest-$(MACH)
CANONICAL_MANIFESTS = $(filter-out dummy.p5m,$(wildcard *.p5m))
HISTORICAL_MANIFESTS = $(shell $(NAWK) -v FUNCTION=name -f $(GENERATE_HISTORY) < $(HISTORY))
ARCH_MANIFESTS = $(wildcard *.p5m.$(MACH))
GENERATED_ARCH_MANIFESTS = $(ARCH_MANIFESTS:%.p5m.$(MACH)=%.p5m)
CANONICAL_MANIFESTS += $(GENERATED_ARCH_MANIFESTS)
MOGRIFIED = $(CANONICAL_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.mogrified)
HISTOGRIFIED = $(HISTORICAL_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.histogrified)
PUBLISHED = $(CANONICAL_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.published)
PUBLISHED += $(HISTORICAL_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.published)
# Rule to generate historical manifests from the $(HISTORY) file.
define history-manifest-rule
$(MANIFEST_BASE)-$(1): $(HISTORY) $(BUILD_DIR)
$(NAWK) -v FUNCTION=manifest -v TARGET=$1 -f $(GENERATE_HISTORY) < \
$(HISTORY) > $$@
endef
$(foreach mfst,$(HISTORICAL_MANIFESTS),$(eval $(call history-manifest-rule,$(mfst))))
ASLR_MODE = $(ASLR_NOT_APPLICABLE)
PKG_MACROS = CONSOLIDATION=$(CONSOLIDATION)
PKG_MACROS += BUILD_VERSION=$(BUILD_VERSION)
PKG_MACROS += OS_VERSION=$(OS_VERSION)
PKG_OPTIONS += $(PKG_MACROS:%=-D %)
build install test system-test:
@echo "nothing to be done for $@"
$(BUILD_DIR):
$(MKDIR) $@
$(MANIFEST_BASE)-%.mogrified: %.p5m $(BUILD_DIR)
$(PKGMOGRIFY) $(PKG_OPTIONS) $< > $@
$(MANIFEST_BASE)-%.histogrified: $(MANIFEST_BASE)-%.p5m $(BUILD_DIR)
$(PKGMOGRIFY) $(PKG_OPTIONS) $< > $@
$(MANIFEST_BASE)-%.published: $(MANIFEST_BASE)-%.mogrified $(BUILD_DIR)
$(PKGSEND) -s $(PKG_REPO) publish --fmri-in-manifest --no-catalog $<
$(CP) $< $@
$(MANIFEST_BASE)-%.published: $(MANIFEST_BASE)-%.histogrified $(BUILD_DIR)
$(PKGSEND) -s $(PKG_REPO) publish --fmri-in-manifest --no-catalog $<
$(CP) $< $@
$(BUILD_DIR)/.linted-$(MACH): $(MOGRIFIED) $(HISTOGRIFIED) $(BUILD_DIR)
if [[ -n "$(MOGRIFIED)" ]]; \
then \
$(ENV) PYTHONPATH=$(WS_TOOLS)/python \
SOLARIS_VERSION=$(SOLARIS_VERSION) \
$(PKGLINT) $(CANONICAL_REPO:%=-c $(WS_LINT_CACHE)) \
-f $(WS_TOOLS)/pkglintrc $(MOGRIFIED); \
fi
$(TOUCH) $@
$(BUILD_DIR)/.published-$(MACH): $(BUILD_DIR)/.linted-$(MACH) $(PUBLISHED)
$(TOUCH) $@
publish: $(BUILD_DIR)/.published-$(MACH)
print-package-names:
@cat history | cut -f 1 -d '@'
%.p5m: %.p5m.$(MACH)
$(CP) $< $@
clobber clean::
$(RM) -r $(BUILD_DIR) $(GENERATED_ARCH_MANIFESTS)

View file

@ -1,50 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
#
VENDOR_RUBY = /usr/ruby/$(RUBY_VERSION)/lib/ruby/vendor_ruby/$(RUBY_LIB_VERSION)
# default user executable binaries to /usr/bin
INSTALL_RB_BINDIR = $(USRBINDIR)
# install.rb scripts do not have any concept of 'build' so make this a
# no-op
$(BUILD_DIR)/%/.built: $(SOURCE_DIR)/.prep
$(RM) -r $(@D) ; $(MKDIR) $(@D)
$(COMPONENT_PRE_BUILD_ACTION)
$(COMPONENT_POST_BUILD_ACTION)
$(TOUCH) $@
# install the source into the proto directory
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_INSTALL_ACTION)
(cd $(SOURCE_DIR) ; $(ENV) $(COMPONENT_INSTALL_ENV) \
./install.rb --destdir=$(PROTO_DIR) \
--ruby=$(RUBY) \
--bindir=$(INSTALL_RB_BINDIR) \
--sitelibdir=$(VENDOR_RUBY) \
--mandir=$(USRSHAREMANDIR))
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
clean::
$(RM) -r $(SOURCE_DIR) $(BUILD_DIR)

View file

@ -1,71 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
# Copyright 2014 Andrzej Szeszo. All rights reserved.
#
# The package branch version scheme is:
#
# release_major.release_minor.update.component_revision
#
#
# Release major number: 2014, 2015, etc.
#
RELEASE_MAJOR ?= 2022
#
# Release minor number: 0, 1, 2, etc.
#
RELEASE_MINOR ?= 0
#
# Release update number: 0, 1, 2, etc.
#
UPDATENUM ?= 0
#
# Component revision. Should be specified in the component's Makefile
#
COMPONENT_REVISION ?= 0
#
# Branch Identifier. Used in the version section of the package name to
# identify the operating system branch that the package was produced for.
#
BRANCHID ?= $(RELEASE_MAJOR).$(RELEASE_MINOR).$(UPDATENUM).$(COMPONENT_REVISION)
#
# Build Version. Used in the version section of the package name to identify
# the operating system version and branch that the package was produced for.
#
BUILD_VERSION ?= $(PKG_SOLARIS_VERSION)-$(BRANCHID)
# Set a default reference repository against which pkglint is run, in case it
# hasn't been set in the environment.
#CANONICAL_REPO ?= http://ipkg.us.oracle.com/solaris12/dev/
# Pre-set some variables with GIT repo details
USERLAND_GIT_REMOTE ?= $(shell git remote -v | awk '/origin.*fetch/ { print $$2 }')
USERLAND_GIT_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD)
USERLAND_GIT_REV ?= $(shell git rev-parse HEAD)

View file

@ -1,627 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
# Copyright 2014 Andrzej Szeszo. All rights reserved.
#
#
# Rules and Macros for generating an IPS package manifest and publishing an
# IPS package to a pkg depot.
#
# To use these rules, include ../make-rules/ips.mk in your Makefile
# and define an "install" target appropriate to building your component.
# Ex:
#
# install: $(BUILD_DIR)/build/$(MACH32)/.installed \
# $(BUILD_DIR)/build/$(MACH64)/.installed
#
# This set of rules makes the "publish" target the default target for make(1)
#
PKGDEPEND = /usr/bin/pkgdepend
PKGFMT = /usr/bin/pkgfmt
PKGMOGRIFY = /usr/bin/pkgmogrify
PKGSEND = /usr/bin/pkgsend
ifeq ($(strip $(PKGLINT_COMPONENT)),)
PKGLINT = /usr/bin/python3.5 /usr/bin/pkglint
else
PKGLINT = ${WS_TOOLS}/pkglint
endif
PKGMANGLE = $(WS_TOOLS)/userland-mangler
WS_TRANSFORMS = $(WS_TOP)/transforms
GENERATE_HISTORY= $(WS_TOOLS)/generate-history
HISTORY= history
# Package headers should all pretty much follow the same format
METADATA_TEMPLATE = $(WS_TOP)/transforms/manifest-metadata-template
COPYRIGHT_TEMPLATE = $(WS_TOP)/transforms/copyright-template
# order is important
GENERATE_TRANSFORMS += $(WS_TOP)/transforms/generate-cleanup
PKGMOGRIFY_TRANSFORMS += $(WS_TOP)/transforms/libtool-drop
PKGMOGRIFY_TRANSFORMS += $(WS_TOP)/transforms/ignore-libs
ifneq ($(GCC_ROOT), /usr/gcc/4.9)
PKGMOGRIFY_TRANSFORMS += $(WS_TOP)/transforms/ignore-gcc-usr-lib
endif
COMPARISON_TRANSFORMS += $(WS_TOP)/transforms/comparison-cleanup
COMPARISON_TRANSFORMS += $(PKGMOGRIFY_TRANSFORMS)
LICENSE_TRANSFORMS = $(WS_TOP)/transforms/license-changes
# order is important
PUBLISH_TRANSFORMS += $(LICENSE_TRANSFORMS)
PUBLISH_TRANSFORMS += $(WS_TOP)/transforms/variant-cleanup
PUBLISH_TRANSFORMS += $(WS_TOP)/transforms/autopyc
PUBLISH_TRANSFORMS += $(WS_TOP)/transforms/defaults
PUBLISH_TRANSFORMS += $(WS_TOP)/transforms/actuators
PUBLISH_TRANSFORMS += $(WS_TOP)/transforms/devel
PUBLISH_TRANSFORMS += $(WS_TOP)/transforms/docs
PUBLISH_TRANSFORMS += $(WS_TOP)/transforms/locale
PUBLISH_TRANSFORMS += $(WS_TOP)/transforms/python-3-soabi
PUBLISH_TRANSFORMS += $(WS_TOP)/transforms/python-3-no-32bit
PUBLISH_TRANSFORMS += $(PKGMOGRIFY_TRANSFORMS)
PUBLISH_TRANSFORMS += $(WS_TOP)/transforms/publish-cleanup
FINAL_TRANSFORMS += $(WS_TOP)/transforms/final-cleanup
define add-limiting-variable
PKG_VARS += $(1)
MANIFEST_LIMITING_VARS += -D $(1)="$(subst #,\#,$($(1)))"
endef
# Make all the limiting variables available to manifest processing
$(foreach var, $(filter PY3_%_NAMING,$(.VARIABLES)), \
$(eval $(call add-limiting-variable,$(var))))
ifeq ($(strip $(COMPONENT_AUTOGEN_MANIFEST)),yes)
AUTOGEN_MANIFEST_TRANSFORMS += $(WS_TOP)/transforms/generate-cleanup
else
AUTOGEN_MANIFEST_TRANSFORMS += $(WS_TOP)/transforms/drop-all
endif
# For items defined as variables or that may contain whitespace, add
# them to a list to be expanded into PKG_OPTIONS later.
PKG_VARS += ARC_CASE TPNO
PKG_VARS += MACH MACH32 MACH64
PKG_VARS += BUILD_VERSION OS_VERSION PKG_SOLARIS_VERSION
PKG_VARS += GNU_TRIPLET
PKG_VARS += CONSOLIDATION
PKG_VARS += COMPONENT_VERSION IPS_COMPONENT_VERSION HUMAN_VERSION
PKG_VARS += COMPONENT_ARCHIVE_URL COMPONENT_PROJECT_URL COMPONENT_NAME
PKG_VARS += COMPONENT_FMRI COMPONENT_LICENSE_FILE
PKG_VARS += COMPONENT_SUMMARY COMPONENT_DESCRIPTION COMPONENT_LICENSE
PKG_VARS += HG_REPO HG_REV HG_URL COMPONENT_HG_URL COMPONENT_HG_REV
PKG_VARS += GIT_COMMIT_ID GIT_REPO GIT_TAG
PKG_VARS += PUBLISHER PUBLISHER_LOCALIZABLE
PKG_VARS += USERLAND_GIT_REMOTE USERLAND_GIT_BRANCH USERLAND_GIT_REV
# For items that need special definition, add them to PKG_MACROS.
# IPS_COMPONENT_VERSION suitable for use in regular expressions.
PKG_MACROS += IPS_COMPONENT_RE_VERSION=$(subst .,\\.,$(IPS_COMPONENT_VERSION))
# COMPONENT_VERSION suitable for use in regular expressions.
PKG_MACROS += COMPONENT_RE_VERSION=$(subst .,\\.,$(COMPONENT_VERSION))
PKG_OPTIONS += $(PKG_MACROS:%=-D %) \
-D COMPONENT_CLASSIFICATION="org.opensolaris.category.2008:$(strip $(COMPONENT_CLASSIFICATION))"
define mach-list-generate-macros
ifeq ($(MACH),$(1))
PKG_MACROS += $(1)_ONLY=
PKG_MACROS += $(1)_EXCL=\#
else
PKG_MACROS += $(1)_ONLY=\#
PKG_MACROS += $(1)_EXCL=
endif
endef
$(foreach isa,$(MACH_LIST),$(eval $(call mach-list-generate-macros,$(isa))))
define python-generate-macros
PKG_MACROS += PYTHON_$(1)_ONLY=\#
PKG_MACROS += PYTHON_$(1)_EXCL=
endef
$(foreach ver,$(PYTHON_VERSIONS),$(eval $(call python-generate-macros,$(ver))))
PKG_MACROS += PYTHON_32_ONLY=
MANGLED_DIR = $(PROTO_DIR)/mangled
PKG_PROTO_DIRS += $(MANGLED_DIR) $(PROTO_DIR) $(@D) $(COMPONENT_DIR) $(COMPONENT_SRC)
MANIFEST_BASE = $(BUILD_DIR)/manifest-$(MACH)
SAMPLE_MANIFEST_DIR = $(COMPONENT_DIR)/manifests
SAMPLE_MANIFEST_FILE = $(SAMPLE_MANIFEST_DIR)/sample-manifest.p5m
GENERIC_MANIFEST_FILE = $(SAMPLE_MANIFEST_DIR)/generic-manifest.p5m
CANONICAL_MANIFESTS = $(wildcard *.p5m)
ifneq ($(wildcard $(HISTORY)),)
HISTORICAL_MANIFESTS = $(shell $(NAWK) -v FUNCTION=name -f $(GENERATE_HISTORY) < $(HISTORY))
endif
define ips-print-depend-require-rule
$(shell cat $(1) $(WS_TOP)/transforms/print-depend-require |\
$(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 |\
sed -e '/^$$/d' -e '/^#.*$$/d' | sort -u)
endef
define ips-print-depend-require-versioned-rule
$(foreach v,$($(1)V_VALUES),\
$(shell cat $(2) $(WS_TOP)/transforms/print-pkgs |\
$(PKGMOGRIFY) $(PKG_OPTIONS) -D $($(1)V_FMRI_VERSION)=$(v) /dev/fd/0 |\
sed -e '/^$$/d' -e '/^#.*$$/d' | sort -u))
endef
define ips-print-depend-require-type-rule
$(foreach m,$($(1)_MANIFESTS),$(call ips-print-depend-require-versioned-rule,$(1),$(m)))
endef
define ips-print-names-rule
$(shell cat $(1) $(WS_TOP)/transforms/print-pkgs |\
$(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 |\
sed -e '/^$$/d' -e '/^#.*$$/d' | LANG=C LC_ALL=C sort -u)
endef
define ips-print-names-versioned-rule
$(foreach v,$($(1)V_VALUES),\
$(shell cat $(2) $(WS_TOP)/transforms/print-pkgs |\
$(PKGMOGRIFY) $(PKG_OPTIONS) -D $($(1)V_FMRI_VERSION)=$(v) /dev/fd/0 |\
sed -e '/^$$/d' -e '/^#.*$$/d' | LANG=C LC_ALL=C sort -u))
endef
#
# In addition to the concrete per-version packages, we also need to emit the
# name of the generic package which pulls in the concrete packages.
#
define ips-print-names-generic-rule
$(shell cat $(2) $(WS_TOP)/transforms/mkgeneric $(BUILD_DIR)/mkgeneric-python \
$(WS_TOP)/transforms/print-pkgs |\
$(PKGMOGRIFY) $(PKG_OPTIONS) -D $($(1)V_FMRI_VERSION)=\#\#\# /dev/fd/0 |\
sed -e '/^$$/d' -e '/^#.*$$/d' | LANG=C LC_ALL=C sort -u)
endef
define ips-print-names-type-rule
$(foreach m,$($(1)_MANIFESTS),\
$(call ips-print-names-versioned-rule,$(1),$(m))\
$(call ips-print-names-generic-rule,$(1),$(m))\
)
endef
VERSIONED_MANIFEST_TYPES =
UNVERSIONED_MANIFESTS = $(filter-out %-GENFRAG.p5m, $(CANONICAL_MANIFESTS))
GENERATE_GENERIC_TRANSFORMS=
# Look for manifests which need to be duplicated for each version of python.
ifeq ($(findstring -PYVER,$(CANONICAL_MANIFESTS)),-PYVER)
VERSIONED_MANIFEST_TYPES+= PY
NOPY_MANIFESTS = $(filter-out %-PYVER.p5m,$(UNVERSIONED_MANIFESTS))
PY_MANIFESTS = $(filter %-PYVER.p5m,$(CANONICAL_MANIFESTS))
PYV_VALUES = $(shell echo $(PYTHON_VERSIONS) | tr -d .)
PYV_FMRI_VERSION = PYV
PYV_MANIFESTS = $(foreach v,$(PYV_VALUES),$(shell echo $(PY_MANIFESTS) | sed -e 's/-PYVER.p5m/-$(v).p5m/g'))
PYNV_MANIFESTS = $(shell echo $(PY_MANIFESTS) | sed -e 's/-PYVER//')
MKGENERIC_SCRIPTS += $(BUILD_DIR)/mkgeneric-python
GENERATE_GENERIC_TRANSFORMS+=$(PYTHON_VERSIONS:%=-e 's/%/\$$\(PYVER\)/g')
else
NOPY_MANIFESTS = $(UNVERSIONED_MANIFESTS)
endif
# Look for manifests which need to be duplicated for each version of perl.
ifeq ($(findstring -PERLVER,$(UNVERSIONED_MANIFESTS)),-PERLVER)
VERSIONED_MANIFEST_TYPES+= PERL
NOPERL_MANIFESTS = $(filter-out %-PERLVER.p5m,$(NOPY_MANIFESTS))
PERL_MANIFESTS = $(filter %-PERLVER.p5m,$(UNVERSIONED_MANIFESTS))
PERLV_VALUES = $(shell echo $(PERL_VERSIONS) | tr -d .)
PERLV_FMRI_VERSION = PLV
PERLV_MANIFESTS = $(foreach v,$(PERLV_VALUES),$(shell echo $(PERL_MANIFESTS) | sed -e 's/-PERLVER.p5m/-$(v).p5m/g'))
PERLNV_MANIFESTS = $(shell echo $(PERL_MANIFESTS) | sed -e 's/-PERLVER//')
else
NOPERL_MANIFESTS = $(NOPY_MANIFESTS)
endif
# Look for manifests which need to be duplicated for each version of ruby.
# NOPERL_MANIFESTS represents the manifests that are not Python or
# Perl manifests. Extract the Ruby Manifests from NOPERL_MANIFESTS.
# Any remaining manifests are stored in NONRUBY_MANIFESTS
ifeq ($(findstring -RUBYVER,$(NOPERL_MANIFESTS)),-RUBYVER)
VERSIONED_MANIFEST_TYPES+= RUBY
NORUBY_MANIFESTS = $(filter-out %-RUBYVER.p5m,$(NOPERL_MANIFESTS))
RUBY_MANIFESTS = $(filter %-RUBYVER.p5m,$(NOPERL_MANIFESTS))
RUBYV_VALUES = $(RUBY_VERSIONS)
RUBYV_FMRI_VERSION = RUBYV
RUBYV_MANIFESTS = $(foreach v,$(RUBY_VERSIONS),\
$(shell echo $(RUBY_MANIFESTS) |\
sed -e 's/-RUBYVER.p5m/-$(shell echo $(v) |\
cut -d. -f1,2 | tr -d .).p5m/g'))
RUBYNV_MANIFESTS = $(shell echo $(RUBY_MANIFESTS) | sed -e 's/-RUBYVER//')
else
NORUBY_MANIFESTS = $(NOPERL_MANIFESTS)
endif
NONVER_MANIFESTS = $(NORUBY_MANIFESTS)
VERSIONED_MANIFESTS = \
$(PYV_MANIFESTS) $(PYNV_MANIFESTS) \
$(PERLV_MANIFESTS) $(PERLNV_MANIFESTS) \
$(RUBYV_MANIFESTS) $(RUBYNV_MANIFESTS) \
$(NORUBY_MANIFESTS) $(HISTORICAL_MANIFESTS)
GENERATED = $(MANIFEST_BASE)-generated
COMBINED = $(MANIFEST_BASE)-combined
MANIFESTS = $(VERSIONED_MANIFESTS:%=$(MANIFEST_BASE)-%)
DEPENDED=$(VERSIONED_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.depend)
RESOLVED=$(VERSIONED_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.depend.res)
PRE_PUBLISHED=$(RESOLVED:%.depend.res=%.pre-published)
PUBLISHED=$(RESOLVED:%.depend.res=%.published)
COPYRIGHT_FILE ?= $(COMPONENT_NAME)-$(COMPONENT_VERSION).copyright
IPS_COMPONENT_VERSION ?= $(COMPONENT_VERSION)
.DEFAULT: publish
.SECONDARY:
# allow publishing to be overridden, such as when
# a package is for one architecture only.
PRE_PUBLISH_STAMP ?= $(BUILD_DIR)/.pre-published-$(MACH)
PUBLISH_STAMP ?= $(BUILD_DIR)/.published-$(MACH)
# Do all that is needed to ensure the package is consistent for publishing,
# except actually pushing to a repo, separately from the push to the repo.
pre-publish: build install $(PRE_PUBLISH_STAMP)
publish: pre-publish update-metadata $(PUBLISH_STAMP)
sample-manifest: $(GENERATED).p5m
$(GENERATED).p5m: install
[ ! -d $(SAMPLE_MANIFEST_DIR) ] && $(MKDIR) $(SAMPLE_MANIFEST_DIR) || true
$(PKGSEND) generate $(PKG_HARDLINKS:%=--target %) $(PROTO_DIR) | \
$(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 $(GENERATE_TRANSFORMS) | \
sed -e '/^$$/d' -e '/^#.*$$/d' \
-e '/\.la$$/d' -e '/\.pyo$$/d' -e '/usr\/lib\/python[23]\..*\.pyc$$/d' \
-e '/usr\/lib\/python3\..*\/__pycache__\/.*/d' | \
$(PKGFMT) | \
cat $(METADATA_TEMPLATE) - | \
$(TEE) $@ $(SAMPLE_MANIFEST_FILE) >/dev/null
if [ "$(GENERATE_GENERIC_TRANSFORMS)X" != "X" ]; \
then sed $(GENERATE_GENERIC_TRANSFORMS) $(SAMPLE_MANIFEST_FILE) \
| gawk '!seen[$$0]++' > $(GENERIC_MANIFEST_FILE); fi;
# copy the canonical manifest(s) to the build tree
$(MANIFEST_BASE)-%.generate: %.p5m canonical-manifests
cat $(METADATA_TEMPLATE) $< >$@
# The text of a transform that will emit a dependency conditional on the
# presence of a particular version of a runtime, which will then draw in the
# runtime-version-specific version of the package we're operating on. $(1) is
# the name of the runtime package, and $(2) is the version suffix.
mkgeneric = \
echo "<transform set name=pkg.fmri value=(?:pkg:/)?(.+)-\#\#\#@(.*)" \
"-> emit depend nodrop=true type=conditional" \
"predicate=$(1)-$(2) fmri=%<1>-$(2)@%<2>>" >> $@;
mkgenericdep = \
( echo -n "<transform set name=pkg.fmri value=(?:pkg:/)?(.+)-\#\#\#@(.*)" \
"-> emit depend nodrop=true type=require-any " ; \
for i in $(2); do echo -n "fmri=%<1>-$$i@%<2> " ; done ; \
echo ">" ) >> $@
# Define and execute a macro that generates a rule to create a manifest for a
# python module specific to a particular version of the python runtime.
define python-manifest-rule
$(MANIFEST_BASE)-%-$(2).mogrified: PKG_MACROS += PYTHON_$(1)_ONLY= PYTHON_$(1)_EXCL=\#
ifneq ($(filter $(1),$(PYTHON_64_ONLY_VERSIONS)),)
$(MANIFEST_BASE)-%-$(2).mogrified: PKG_MACROS += PYTHON_32_ONLY=\#
endif
$(MANIFEST_BASE)-%-$(2).p5m: %-PYVER.p5m
$(PKGMOGRIFY) -D PYVER=$(1) $(MANIFEST_LIMITING_VARS) -D PYV=$(2) $$< > $$@
endef
$(foreach ver,$(PYTHON_VERSIONS),$(eval $(call python-manifest-rule,$(ver),$(shell echo $(ver)|tr -d .))))
# A rule to create a helper transform package for python, that will insert the
# appropriate conditional dependencies into a python library's
# runtime-version-generic package to pull in the version-specific bits when the
# corresponding version of python is on the system.
$(BUILD_DIR)/mkgeneric-python: $(WS_TOP)/make-rules/shared-macros.mk $(MAKEFILE_PREREQ) $(BUILD_DIR)
$(RM) $@
$(foreach ver,$(shell echo $(PYTHON_VERSIONS) | tr -d .), \
$(call mkgeneric,runtime/python,$(ver)))
$(call mkgenericdep,runtime/python,$(shell echo $(PYTHON_VERSIONS) | tr -d .))
# Build Python version-wrapping manifests from the generic version.
$(MANIFEST_BASE)-%.p5m: %-PYVER.p5m $(BUILD_DIR)/mkgeneric-python
$(PKGMOGRIFY) -D PYV=### $(BUILD_DIR)/mkgeneric-python \
$(WS_TOP)/transforms/mkgeneric $< > $@
if [ -f $*-GENFRAG.p5m ]; then cat $*-GENFRAG.p5m >> $@; fi
# Define and execute a macro that generates a rule to create a manifest for a
# perl module specific to a particular version of the perl runtime.
define perl-manifest-rule
$(MANIFEST_BASE)-%-$(shell echo $(1) | tr -d .).p5m: %-PERLVER.p5m
$(PKGMOGRIFY) -D PERLVER=$(1) -D PLV=$(shell echo $(1) | tr -d .) \
-D PERL_ARCH=$(call PERL_ARCH_FUNC,$(PERL.$(1))) $$< > $$@
endef
$(foreach ver,$(PERL_VERSIONS),$(eval $(call perl-manifest-rule,$(ver))))
# A rule to create a helper transform package for perl, that will insert the
# appropriate conditional dependencies into a perl library's
# runtime-version-generic package to pull in the version-specific bits when the
# corresponding version of perl is on the system.
$(BUILD_DIR)/mkgeneric-perl: $(WS_TOP)/make-rules/shared-macros.mk $(MAKEFILE_PREREQ)
$(RM) $@
$(foreach ver,$(shell echo $(PERL_VERSIONS) | tr -d .), \
$(call mkgeneric,runtime/perl,$(ver)))
$(call mkgenericdep,runtime/perl,$(shell echo $(PERL_VERSIONS) | tr -d .))
# Build Perl version-wrapping manifests from the generic version.
$(MANIFEST_BASE)-%.p5m: %-PERLVER.p5m $(BUILD_DIR)/mkgeneric-perl
$(PKGMOGRIFY) -D PLV=### $(BUILD_DIR)/mkgeneric-perl \
$(WS_TOP)/transforms/mkgeneric $< > $@
if [ -f $*-GENFRAG.p5m ]; then cat $*-GENFRAG.p5m >> $@; fi
# Rule to generate historical manifests from the $(HISTORY) file.
define history-manifest-rule
$(MANIFEST_BASE)-$(1): $(HISTORY) $(BUILD_DIR)
$(NAWK) -v TARGET=$(1) -v FUNCTION=manifest -f $(GENERATE_HISTORY) < \
$(HISTORY) > $$@
endef
$(foreach mfst,$(HISTORICAL_MANIFESTS),$(eval $(call history-manifest-rule,$(mfst))))
# Define and execute a macro that generates a rule to create a manifest for a
# ruby module specific to a particular version of the ruby runtime.
# Creates build/manifest-*-modulename-##.p5m file where ## is replaced with
# the version number.
define ruby-manifest-rule
$(MANIFEST_BASE)-%-$(shell echo $(1) | tr -d .).mogrified: \
PKG_MACROS += RUBY_VERSION=$(1) RUBY_LIB_VERSION=$(2) \
RUBYV=$(subst .,,$(1))
$(MANIFEST_BASE)-%-$(shell echo $(1) | tr -d .).p5m: %-RUBYVER.p5m
if [ -f $$*-$(shell echo $(1) | tr -d .)GENFRAG.p5m ]; then \
cat $$*-$(shell echo $(1) | tr -d .)GENFRAG.p5m >> $$@; \
fi
$(PKGMOGRIFY) -D RUBY_VERSION=$(1) -D RUBY_LIB_VERSION=$(2) \
-D RUBYV=$(shell echo $(1) | tr -d .) $$< > $$@
endef
$(foreach ver,$(RUBY_VERSIONS),\
$(eval $(call ruby-manifest-rule,$(shell echo $(ver) | \
cut -d. -f1,2),$(ver))))
# A rule to create a helper transform package for ruby, that will insert the
# appropriate conditional dependencies into a ruby library's
# runtime-version-generic package to pull in the version-specific bits when the
# corresponding version of ruby is on the system.
$(BUILD_DIR)/mkgeneric-ruby: $(WS_TOP)/make-rules/shared-macros.mk $(MAKEFILE_PREREQ)
$(RM) $@
$(foreach ver,$(RUBY_VERSIONS),\
$(call mkgeneric,runtime/ruby,$(shell echo $(ver) | \
cut -d. -f1,2 | tr -d .)))
$(call mkgenericdep,runtime/ruby,$(shell echo $(RUBY_VERSIONS) | cut -d. -f1,2 | tr -d .))
# Build Ruby version-wrapping manifests from the generic version.
# Creates build/manifest-*-modulename.p5m file.
#
$(MANIFEST_BASE)-%.p5m: %-RUBYVER.p5m $(BUILD_DIR)/mkgeneric-ruby
$(PKGMOGRIFY) -D RUBYV=### $(BUILD_DIR)/mkgeneric-ruby \
$(WS_TOP)/transforms/mkgeneric $< > $@
if [ -f $*-GENFRAG.p5m ]; then cat $*-GENFRAG.p5m >> $@; fi
ifeq ($(strip $(COMPONENT_AUTOGEN_MANIFEST)),yes)
# auto-generate file/directory list
$(MANIFEST_BASE)-%.generated: %.p5m $(BUILD_DIR)
(cat $(METADATA_TEMPLATE); \
$(PKGSEND) generate $(PKG_HARDLINKS:%=--target %) $(PROTO_DIR)) | \
$(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 $(AUTOGEN_MANIFEST_TRANSFORMS) | \
sed -e '/^$$/d' -e '/^#.*$$/d' | $(PKGFMT) | \
cat $< - >$@
# mogrify non-parameterized manifests
$(MANIFEST_BASE)-%.mogrified: %.generated
$(PKGMOGRIFY) $(PKG_OPTIONS) $< \
$(PUBLISH_TRANSFORMS) | \
sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
# mogrify parameterized manifests
$(MANIFEST_BASE)-%.mogrified: $(MANIFEST_BASE)-%.generated
$(PKGMOGRIFY) $(PKG_OPTIONS) $< \
$(PUBLISH_TRANSFORMS) | \
sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
else
# mogrify non-parameterized manifests
$(MANIFEST_BASE)-%.mogrified: %.p5m $(BUILD_DIR)
$(PKGMOGRIFY) $(PKG_OPTIONS) $< \
$(PUBLISH_TRANSFORMS) | \
sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
# mogrify parameterized manifests
$(MANIFEST_BASE)-%.mogrified: $(MANIFEST_BASE)-%.p5m $(BUILD_DIR)
$(PKGMOGRIFY) $(PKG_OPTIONS) $< \
$(PUBLISH_TRANSFORMS) | \
sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
endif
# mangle the file contents
$(BUILD_DIR) $(MANGLED_DIR):
$(MKDIR) $@
PKGMANGLE_OPTIONS = -D $(MANGLED_DIR) $(PKG_PROTO_DIRS:%=-d %)
$(MANIFEST_BASE)-%.mangled: $(MANIFEST_BASE)-%.mogrified $(MANGLED_DIR)
$(PKGMANGLE) $(PKGMANGLE_OPTIONS) -m $< >$@
# generate dependencies
PKGDEPEND_GENERATE_OPTIONS = -m $(PKG_PROTO_DIRS:%=-d %)
$(MANIFEST_BASE)-%.depend: $(MANIFEST_BASE)-%.mangled
$(PKGDEPEND) generate $(PKGDEPEND_GENERATE_OPTIONS) $< >$@
# pkgdepend resolve builds a map of all installed packages by default. This
# makes dependency resolution particularly slow. We can dramatically improve
# performance here by creating a file with a list of packages that we know
# are needed, dramatically reducing the overhead involved in creating and
# searching this map.
#
# Generate a resolve.deps file from the dependencies in the Makefile and
# fragments that it uses.
RESOLVE_DEPS=$(BUILD_DIR)/resolve.deps
$(RESOLVE_DEPS): Makefile $(BUILD_DIR) $(DEPENDED)
@(for pkg in $(REQUIRED_PACKAGES:%=/%) ; do \
echo $${pkg} ; \
done ; \
$(PKGMOGRIFY) $(WS_TRANSFORMS)/PRINT_COMPONENT_FMRIS $(DEPENDED) | \
$(GSED) -e '/^[\t ]*$$/d' -e '/^#/d' ;) | sort -u >$@
# resolve the dependencies all at once
$(BUILD_DIR)/.resolved-$(MACH): $(DEPENDED) $(RESOLVE_DEPS)
$(PKGDEPEND) resolve $(RESOLVE_DEPS:%=-e %) -m $(DEPENDED)
$(TOUCH) $@
# Set REQUIRED_PACKAGES macro substitution rules
REQUIRED_PACKAGES_TRANSFORM=$(foreach p,$(REQUIRED_PACKAGES_SUBST), -e 's|$($(p))|$$($(p))|')
#
# Generate a set of REQUIRED_PACKAGES based on what is needed for pkgdepend to
# resolve properly. Automatically update the list in your Makefile for the
# truly lazy among us. This is only a piece of the REQUIRED_PACKAGES puzzle.
# You must still include packages for tools you build and test with.
#
REQUIRED_PACKAGES:: $(RESOLVED)
$(GMAKE) RESOLVE_DEPS= $(BUILD_DIR)/.resolved-$(MACH)
@$(GSED) -i -e '/^# Auto-generated dependencies$$/,$$d' Makefile
@echo "# Auto-generated dependencies" >>Makefile
@$(PKGMOGRIFY) $(WS_TRANSFORMS)/$@ $(RESOLVED) | \
$(GSED) -e '/^[\t ]*$$/d' -e '/^#/d' $(REQUIRED_PACKAGES_TRANSFORM) \
| sort -u >>Makefile
@echo "*** Please edit your Makefile and verify the new or updated content at the end ***"
# lint the manifests all at once
$(BUILD_DIR)/.linted-$(MACH): $(BUILD_DIR)/.resolved-$(MACH)
@echo "VALIDATING MANIFEST CONTENT: $(RESOLVED)"
$(ENV) PYTHONPATH=$(WS_TOOLS)/python PROTO_PATH="$(PKG_PROTO_DIRS)" $(COMPONENT_PKGLINT_ENV)\
$(PKGLINT) $(CANONICAL_REPO:%=-c $(WS_LINT_CACHE)) \
-f $(WS_TOOLS)/pkglintrc $(RESOLVED)
$(TOUCH) $@
lintme: FRC
@echo "VALIDATING MANIFEST CONTENT: $(RESOLVED)"
$(ENV) PYTHONPATH=$(WS_TOOLS)/python PROTO_PATH="$(PKG_PROTO_DIRS)" $(COMPONENT_PKGLINT_ENV)\
$(PKGLINT) $(CANONICAL_REPO:%=-c $(WS_LINT_CACHE)) \
-f $(WS_TOOLS)/pkglintrc $(RESOLVED)
FRC:
# published
PKGSEND_PUBLISH_OPTIONS = -s $(WS_REPO) publish --fmri-in-manifest
PKGSEND_PUBLISH_OPTIONS += $(PKG_PROTO_DIRS:%=-d %)
PKGSEND_PUBLISH_OPTIONS += -T \*.py
# Do all the hard work that is needed to ensure the package is consistent
# and ready for publishing, except actually pushing bits to a repository
$(MANIFEST_BASE)-%.pre-published: $(MANIFEST_BASE)-%.depend.res $(BUILD_DIR)/.linted-$(MACH)
$(PKGMOGRIFY) $(PKG_OPTIONS) $< \
$(FINAL_TRANSFORMS) | \
sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
@echo "NEW PACKAGE CONTENTS ARE LOCALLY VALIDATED AND READY TO GO"
# Push to the repo
$(MANIFEST_BASE)-%.published: $(MANIFEST_BASE)-%.pre-published
$(PKGSEND) $(PKGSEND_PUBLISH_OPTIONS) $<
$(PKGFMT) <$< >$@
$(BUILD_DIR)/.pre-published-$(MACH): $(PRE_PUBLISHED)
$(TOUCH) $@
$(BUILD_DIR)/.published-$(MACH): $(PUBLISHED)
$(TOUCH) $@
print-depend-require: canonical-manifests
@echo $(call ips-print-depend-require-rule,$(NONVER_MANIFESTS)) \
$(foreach t,$(VERSIONED_MANIFEST_TYPES),$(call ips-print-depend-require-type-rule,$(t))) | tr ' ' '\n'
print-package-names: canonical-manifests $(MKGENERIC_SCRIPTS)
@echo $(call ips-print-names-rule,$(NONVER_MANIFESTS)) \
$(foreach t,$(VERSIONED_MANIFEST_TYPES),\
$(call ips-print-names-type-rule,$(t))) \
| tr ' ' '\n'
print-package-paths: canonical-manifests
@cat $(CANONICAL_MANIFESTS) $(WS_TOP)/transforms/print-paths | \
$(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 | \
sed -e '/^$$/d' -e '/^#.*$$/d' | \
LANG=C LC_ALL=C sort -u
install-packages: publish
@if [ $(IS_GLOBAL_ZONE) = 0 -o x$(ROOT) != x ]; then \
cat $(VERSIONED_MANIFESTS) $(WS_TOP)/transforms/print-paths | \
$(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 | \
sed -e '/^$$/d' -e '/^#.*$$/d' -e 's;/;;' | \
LANG=C LC_ALL=C sort -u | \
(cd $(PROTO_DIR) ; pfexec /bin/cpio -dump $(ROOT)) ; \
else ; \
echo "unsafe to install package(s) automatically" ; \
fi
$(RESOLVED): install
canonical-manifests: $(CANONICAL_MANIFESTS) Makefile $(PATCHES)
ifeq ($(strip $(CANONICAL_MANIFESTS)),)
# If there were no canonical manifests in the workspace, nothing will
# be published and we should fail. A sample manifest can be generated
# with
# $ gmake sample-manifest
# Once created, it will need to be reviewed, edited, and added to the
# workspace.
$(error Missing canonical manifest(s))
endif
# Component variables are expanded directly to PKG_OPTIONS instead of via
# PKG_MACROS since the values may contain whitespace.
mkdefine = -D $(1)="$$(strip $(2))"
# Expand PKG_VARS into defines via PKG_OPTIONS.
$(foreach var, $(PKG_VARS), \
$(eval PKG_OPTIONS += $(call mkdefine,$(var),$$($(var)))) \
)
# This converts required paths to containing package names for be able to
# properly setup the build environment for a component.
required-pkgs.mk: Makefile
@echo "generating $@ from Makefile REQUIRED_* data"
@pkg search -H -l '<$(DEPENDS:%=% OR) /bin/true>' \
| sed -e 's/pkg:\/\(.*\)@.*/REQUIRED_PKGS += \1/g' >$@
pre-prep: required-pkgs.mk
CLEAN_PATHS += required-pkgs.mk
CLEAN_PATHS += $(BUILD_DIR)/mkgeneric-perl
CLEAN_PATHS += $(BUILD_DIR)/mkgeneric-python
CLEAN_PATHS += $(BUILD_DIR)/mkgeneric-ruby

View file

@ -1,116 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
#
#
# Rules and Macros for building opens source software that just uses their
# own make and no autoconf-style tools.
#
# To use these rules, include ../make-rules/justmake.mk in your Makefile
# and define "build", "install" targets appropriate to building your component.
# Ex:
#
# build: $(BUILD_32) \
# $(BUILD_64)
#
# install: $(INSTALL_32) \
# $(INSTALL_64)
#
# Any additional pre/post configure, build, or install actions can be specified
# in your Makefile by setting them in on of the following macros:
# COMPONENT_PRE_BUILD_ACTION, COMPONENT_POST_BUILD_ACTION
# COMPONENT_PRE_INSTALL_ACTION, COMPONENT_POST_INSTALL_ACTION
#
# If component specific make targets need to be used for build or install, they
# can be specified in
# COMPONENT_BUILD_TARGETS, COMPONENT_INSTALL_TARGETS
#
COMPONENT_INSTALL_ARGS += DESTDIR=$(PROTO_DIR)
COMPONENT_INSTALL_ARGS += $(COMPONENT_INSTALL_ARGS.$(BITS))
COMPONENT_COPY_ACTION ?= \
$(CLONEY) $(SOURCE_DIR) $(@D)
COMPONENT_BUILD_ACTION ?= \
cd $(@D); $(ENV) $(COMPONENT_BUILD_ENV) \
$(GMAKE) $(COMPONENT_BUILD_GMAKE_ARGS) $(COMPONENT_BUILD_ARGS) $(COMPONENT_BUILD_TARGETS)
# build the configured source
$(BUILD_DIR)/%/.built: $(SOURCE_DIR)/.prep
$(RM) -r $(@D) ; $(MKDIR) $(@D)
$(COMPONENT_COPY_ACTION)
$(COMPONENT_PRE_BUILD_ACTION)
($(COMPONENT_BUILD_ACTION))
$(COMPONENT_POST_BUILD_ACTION)
ifeq ($(strip $(PARFAIT_BUILD)),yes)
-$(PARFAIT) build
endif
$(TOUCH) $@
COMPONENT_INSTALL_ACTION ?= \
cd $(@D) ; $(ENV) $(COMPONENT_INSTALL_ENV) \
$(GMAKE) $(COMPONENT_INSTALL_ARGS) $(COMPONENT_INSTALL_TARGETS)
# install the built source into a prototype area
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_INSTALL_ACTION)
($(COMPONENT_INSTALL_ACTION))
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
# test the built source
$(BUILD_DIR)/%/.tested-and-compared: $(BUILD_DIR)/%/.built
$(RM) -rf $(COMPONENT_TEST_BUILD_DIR)
$(MKDIR) $(COMPONENT_TEST_BUILD_DIR)
$(COMPONENT_PRE_TEST_ACTION)
-(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS)) \
&> $(COMPONENT_TEST_OUTPUT)
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CREATE_TRANSFORMS)
$(COMPONENT_TEST_PERFORM_TRANSFORM)
$(COMPONENT_TEST_COMPARE)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
$(BUILD_DIR)/%/.tested: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_TEST_ACTION)
(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS))
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
ifeq ($(strip $(PARFAIT_BUILD)),yes)
parfait: install
-$(PARFAIT) build
else
parfait:
$(MAKE) PARFAIT_BUILD=yes parfait
endif
clean::
$(RM) -r $(BUILD_DIR) $(PROTO_DIR)

View file

@ -1,173 +0,0 @@
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
#
# perl-5.22 is 32 bit (only), perl-5.24 and later are 64 bit (only)
COMMON_PERL_ENV += MAKE=$(GMAKE)
COMMON_PERL_ENV += PATH=$(dir $(CC)):$(SPRO_VROOT)/bin:$(PATH)
COMMON_PERL_ENV += LANG=""
COMMON_PERL_ENV += CC="$(CC)"
COMMON_PERL_ENV += CFLAGS="$(CC_BITS) $(PERL_OPTIMIZE)"
# Yes. Perl is just scripts, for now, but we need architecture
# directories so that it populates all architecture prototype
# directories.
$(BUILD_DIR)/%-5.22/.configured: PERL_VERSION=5.22
$(BUILD_DIR)/%-5.24/.configured: PERL_VERSION=5.24
$(BUILD_DIR)/%-5.34/.configured: PERL_VERSION=5.34
$(BUILD_DIR)/$(MACH32)-%/.configured: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.configured: BITS=64
$(BUILD_DIR)/%-5.22/.built: PERL_VERSION=5.22
$(BUILD_DIR)/%-5.24/.built: PERL_VERSION=5.24
$(BUILD_DIR)/%-5.34/.built: PERL_VERSION=5.34
$(BUILD_DIR)/$(MACH32)-%/.built: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.built: BITS=64
$(BUILD_DIR)/%-5.22/.installed: PERL_VERSION=5.22
$(BUILD_DIR)/%-5.24/.installed: PERL_VERSION=5.24
$(BUILD_DIR)/%-5.34/.installed: PERL_VERSION=5.34
$(BUILD_DIR)/$(MACH32)-%/.installed: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.installed: BITS=64
$(BUILD_DIR)/%-5.22/.tested: PERL_VERSION=5.22
$(BUILD_DIR)/%-5.24/.tested: PERL_VERSION=5.24
$(BUILD_DIR)/%-5.34/.tested: PERL_VERSION=5.34
$(BUILD_DIR)/$(MACH32)-%/.tested: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.tested: BITS=64
$(BUILD_DIR)/%-5.22/.tested-and-compared: PERL_VERSION=5.22
$(BUILD_DIR)/%-5.24/.tested-and-compared: PERL_VERSION=5.24
$(BUILD_DIR)/%-5.34/.tested-and-compared: PERL_VERSION=5.34
$(BUILD_DIR)/$(MACH32)-%/.tested-and-compared: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.tested-and-compared: BITS=64
PERL_32_ONLY_VERSIONS = $(filter-out $(PERL_64_ONLY_VERSIONS), $(PERL_VERSIONS))
BUILD_32 = $(PERL_32_ONLY_VERSIONS:%=$(BUILD_DIR)/$(MACH32)-%/.built)
BUILD_64 = $(PERL_64_ONLY_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.built)
BUILD_NO_ARCH = $(PERL_VERSIONS:%=$(BUILD_DIR)/$(MACH)-%/.built)
ifeq ($(PERL_VERSION),5.24)
BUILD_32_and_64 = $(BUILD_64)
BUILD_64_and_32 = $(BUILD_64)
endif
ifeq ($(PERL_VERSION),5.34)
BUILD_32_and_64 = $(BUILD_64)
BUILD_64_and_32 = $(BUILD_64)
endif
INSTALL_32 = $(PERL_32_ONLY_VERSIONS:%=$(BUILD_DIR)/$(MACH32)-%/.installed)
INSTALL_64 = $(PERL_64_ONLY_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.installed)
INSTALL_NO_ARCH = $(PERL_VERSIONS:%=$(BUILD_DIR)/$(MACH)-%/.installed)
COMPONENT_CONFIGURE_ENV += $(COMMON_PERL_ENV)
COMPONENT_CONFIGURE_ENV += PERL="$(PERL)"
$(BUILD_DIR)/%/.configured: $(SOURCE_DIR)/.prep
($(RM) -r $(@D) ; $(MKDIR) $(@D))
$(CLONEY) $(SOURCE_DIR) $(@D)
$(COMPONENT_PRE_CONFIGURE_ACTION)
(cd $(@D) ; $(COMPONENT_CONFIGURE_ENV) $(PERL) $(PERL_FLAGS) \
Makefile.PL $(PERL_STUDIO_OVERWRITE) $(CONFIGURE_OPTIONS))
$(COMPONENT_POST_CONFIGURE_ACTION)
$(TOUCH) $@
COMPONENT_BUILD_ENV += $(COMMON_PERL_ENV)
$(BUILD_DIR)/%/.built: $(BUILD_DIR)/%/.configured
$(COMPONENT_PRE_BUILD_ACTION)
(cd $(@D) ; $(ENV) $(COMPONENT_BUILD_ENV) \
$(GMAKE) $(COMPONENT_BUILD_GMAKE_ARGS) $(COMPONENT_BUILD_ARGS) \
$(COMPONENT_BUILD_TARGETS))
$(COMPONENT_POST_BUILD_ACTION)
$(TOUCH) $@
COMPONENT_INSTALL_ARGS += DESTDIR="$(PROTO_DIR)"
COMPONENT_INSTALL_TARGETS = install_vendor
COMPONENT_INSTALL_ENV += $(COMMON_PERL_ENV)
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_INSTALL_ACTION)
(cd $(@D) ; $(ENV) $(COMPONENT_INSTALL_ENV) $(GMAKE) \
$(COMPONENT_INSTALL_ARGS) $(COMPONENT_INSTALL_TARGETS))
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
# Define bit specific and Perl version specific filenames.
COMPONENT_TEST_MASTER = $(COMPONENT_TEST_RESULTS_DIR)/results-$(PERL_VERSION)-$(BITS).master
COMPONENT_TEST_OUTPUT = $(COMPONENT_TEST_BUILD_DIR)/test-$(PERL_VERSION)-$(BITS)-results
COMPONENT_TEST_DIFFS = $(COMPONENT_TEST_BUILD_DIR)/test-$(PERL_VERSION)-$(BITS)-diffs
COMPONENT_TEST_SNAPSHOT = $(COMPONENT_TEST_BUILD_DIR)/results-$(PERL_VERSION)-$(BITS).snapshot
COMPONENT_TEST_TRANSFORM_CMD = $(COMPONENT_TEST_BUILD_DIR)/transform-$(PERL_VERSION)-$(BITS)-results
COMPONENT_TEST_TARGETS = test
COMPONENT_TEST_ENV += $(COMMON_PERL_ENV)
# determine the type of tests we want to run.
ifeq ($(strip $(wildcard $(COMPONENT_TEST_RESULTS_DIR)/results-*.master)),)
TEST_32 = $(PERL_32_ONLY_VERSIONS:%=$(BUILD_DIR)/$(MACH32)-%/.tested)
TEST_64 = $(PERL_64_ONLY_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.tested)
TEST_NO_ARCH = $(PERL_VERSIONS:%=$(BUILD_DIR)/$(MACH)-%/.tested)
else
TEST_32 = $(PERL_32_ONLY_VERSIONS:%=$(BUILD_DIR)/$(MACH32)-%/.tested-and-compared)
TEST_64 = $(PERL_64_ONLY_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.tested-and-compared)
TEST_NO_ARCH = $(PERL_VERSIONS:%=$(BUILD_DIR)/$(MACH)-%/.tested-and-compared)
endif
# test the built source
$(BUILD_DIR)/%/.tested-and-compared: $(BUILD_DIR)/%/.built
$(RM) -rf $(COMPONENT_TEST_BUILD_DIR)
$(MKDIR) $(COMPONENT_TEST_BUILD_DIR)
$(COMPONENT_PRE_TEST_ACTION)
-(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS)) \
&> $(COMPONENT_TEST_OUTPUT)
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CREATE_TRANSFORMS)
$(COMPONENT_TEST_PERFORM_TRANSFORM)
$(COMPONENT_TEST_COMPARE)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
$(BUILD_DIR)/%/.tested: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_TEST_ACTION)
(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS))
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
ifeq ($(strip $(PARFAIT_BUILD)),yes)
parfait: build
else
parfait:
$(MAKE) PARFAIT_BUILD=yes parfait
endif
clean::
$(RM) -r $(BUILD_DIR) $(PROTO_DIR)

View file

@ -1,60 +0,0 @@
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"). You may
# only use this file in accordance with the terms of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright (c) 2021, Andreas Wacknitz. All rights reserved.
#
COMPONENT_VERSION= $(COMPONENT_MJR_VERSION).$(COMPONENT_MNR_VERSION)
COMPONENT_PROJECT_URL= https://www.mate-desktop.org
COMPONENT_ARCHIVE_URL= https://pub.mate-desktop.org/releases/$(COMPONENT_MJR_VERSION)/$(COMPONENT_ARCHIVE)
COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.xz
COMPONENT_LICENSE= GPLv2, LGPLv2, FDLv1.1
TEST_TARGET= $(NO_TESTS)
PATH=$(PATH.gnu)
COMPONENT_PREP_ACTION= cd $(@D) && NOCONFIGURE=1 ./autogen.sh
CONFIGURE_OPTIONS+= --sysconfdir=/etc
CONFIGURE_OPTIONS+= --libexecdir=$(CONFIGURE_LIBDIR.$(BITS))/mate
CONFIGURE_OPTIONS+= --disable-static
CONFIGURE_OPTIONS+= --localstatedir=/var/lib
CONFIGURE_ENV+= PYTHON="$(PYTHON)"
COMPONENT_BUILD_ENV += CC="$(CC)"
COMPONENT_BUILD_ENV += CFLAGS="$(CFLAGS)"
#
# Set defaults for Mate libraries
#
ifeq ($(strip $(MATE_CATEGORY)),LIB)
BUILD_BITS = 32_and_64
COMPONENT_CLASSIFICATION= System/Libraries
COMPONENT_FMRI= library/desktop/mate/$(COMPONENT_NAME)
endif
#
# Set defaults for Mate applications
#
ifeq ($(strip $(MATE_CATEGORY)),APP)
BUILD_BITS = 64
PREFERRED_BITS= 64
COMPONENT_FMRI= desktop/mate/$(COMPONENT_NAME)
endif
# Default build dependencies
REQUIRED_PACKAGES += developer/build/autoconf
REQUIRED_PACKAGES += developer/build/pkg-config
REQUIRED_PACKAGES += developer/documentation-tool/gtk-doc
REQUIRED_PACKAGES += library/desktop/mate/mate-common

View file

@ -1,166 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
#
#
# Rules and Macros for building open source software that uses meson
# to configure their build for the system they are on. It then includes
# ninja.mk to handle the build/install/test macros
#
# To use these rules in your component Makefile, set BUILD_STYLE=meson and
# then include $(WS_MAKE_RULES)/common.mk.
#
# Any additional pre/post configure actions can be specified
# in your make file by setting them in one of the following macros:
# COMPONENT_PRE_CONFIGURE_ACTION, COMPONENT_POST_CONFIGURE_ACTION
#
CONFIGURE_PREFIX ?= /usr
# When debugging a component, override this to be debug or debugoptimized
MESON_BUILDTYPE ?= plain
ifeq ($(strip $(MESON_BUILDTYPE)), debug)
MESON_OPTIMIZATION ?= g
else
MESON_OPTIMIZATION ?= 3
endif
MESON_BUILDPIE ?= false
# If the component prefers 64-bit binaries, then ensure builds deliver 64-bit
# binaries to the standard directories and 32-bit binaries to the non-standard
# location. This allows simplification of package manifests and makes it
# easier to deliver the 64-bit binaries as the default.
ifeq ($(strip $(PREFERRED_BITS)),64)
CONFIGURE_BINDIR.32 ?= $(CONFIGURE_PREFIX)/bin/$(MACH32)
CONFIGURE_SBINDIR.32 ?= $(CONFIGURE_PREFIX)/sbin/$(MACH32)
CONFIGURE_BINDIR.64 ?= $(CONFIGURE_PREFIX)/bin
CONFIGURE_SBINDIR.64 ?= $(CONFIGURE_PREFIX)/sbin
else
CONFIGURE_BINDIR.32 ?= $(CONFIGURE_PREFIX)/bin
CONFIGURE_SBINDIR.32 ?= $(CONFIGURE_PREFIX)/sbin
CONFIGURE_BINDIR.64 ?= $(CONFIGURE_PREFIX)/bin/$(MACH64)
CONFIGURE_SBINDIR.64 ?= $(CONFIGURE_PREFIX)/sbin/$(MACH64)
endif
# Regardless of PREFERRED_BITS, 64-bit libraries should always be delivered to
# the appropriate subdirectory by default.
CONFIGURE_LIBDIR.32 ?= $(CONFIGURE_PREFIX)/lib
CONFIGURE_LIBDIR.64 ?= $(CONFIGURE_PREFIX)/lib/$(MACH64)
CONFIGURE_MANDIR ?= $(CONFIGURE_PREFIX)/share/man
CONFIGURE_LOCALEDIR ?= $(CONFIGURE_PREFIX)/share/locale
# all texinfo documentation seems to go to /usr/share/info no matter what
CONFIGURE_INFODIR ?= /usr/share/info
CONFIGURE_INCLUDEDIR ?= /usr/include
# Some components require an architecture-specific directory for their
# configuration, so these are specified per-bits.
CONFIGURE_ETCDIR.32 ?= $(ETCDIR)
CONFIGURE_ETCDIR.64 ?= $(ETCDIR)
CONFIGURE_DEFAULT_DIRS?=yes
CONFIGURE_ENV += PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)"
CONFIGURE_ENV += CC="$(CC)"
CONFIGURE_ENV += CXX="$(CXX)"
CONFIGURE_ENV += F77="$(F77)"
CONFIGURE_ENV += FC="$(FC)"
ifneq ($(strip $(CFLAGS)),)
CONFIGURE_ENV += CFLAGS="$(strip $(CFLAGS))"
endif
ifneq ($(strip $(CXXFLAGS)),)
CONFIGURE_ENV += CXXFLAGS="$(strip $(CXXFLAGS))"
endif
CONFIGURE_CPPFLAGS ?= $(CC_BITS)
ifneq ($(strip $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)),)
CONFIGURE_ENV += CPPFLAGS="$(strip $(CONFIGURE_CPPFLAGS) $(CPPFLAGS))"
endif
CONFIGURE_ENV += LDFLAGS="$(strip $(LDFLAGS))"
ifneq ($(strip $(F77FLAGS)),)
CONFIGURE_ENV += FFLAGS="$(strip $(F77FLAGS))"
endif
ifneq ($(strip $(FCFLAGS)),)
CONFIGURE_ENV += FCFLAGS="$(strip $(FCFLAGS))"
endif
# Options here should be limited to the built-in options listed on
# https://mesonbuild.com/Builtin-options.html
CONFIGURE_OPTIONS += --buildtype=$(MESON_BUILDTYPE)
CONFIGURE_OPTIONS += --optimization=$(MESON_OPTIMIZATION)
CONFIGURE_OPTIONS += -Ddefault_library=shared
CONFIGURE_OPTIONS += -Db_pie=$(MESON_BUILDPIE)
# Install paths
CONFIGURE_OPTIONS += --prefix=$(CONFIGURE_PREFIX)
ifeq ($(CONFIGURE_DEFAULT_DIRS),yes)
CONFIGURE_OPTIONS += --bindir="$(CONFIGURE_BINDIR.$(BITS))"
CONFIGURE_OPTIONS += --sbindir="$(CONFIGURE_SBINDIR.$(BITS))"
CONFIGURE_OPTIONS += --libdir="$(CONFIGURE_LIBDIR.$(BITS))"
CONFIGURE_OPTIONS += --libexecdir="$(CONFIGURE_LIBDIR.32)"
CONFIGURE_OPTIONS += --localstatedir="$(VARDIR)"
CONFIGURE_OPTIONS += --mandir="$(CONFIGURE_MANDIR)"
CONFIGURE_OPTIONS += --sysconfdir="$(CONFIGURE_ETCDIR.$(BITS))"
endif
CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.$(BITS))
CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.$(MACH))
CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.$(MACH).$(BITS))
$(BUILD_DIR_32)/.configured: BITS=32
$(BUILD_DIR_64)/.configured: BITS=64
CONFIGURE_ENV += $(CONFIGURE_ENV.$(BITS))
# This MUST be set in the build environment so that if pkg-config is executed
# during the build process, the correct header files and libraries will be
# picked up. In the Linux world, a system is generally only 32-bit or 64-bit
# at one time so this isn't an issue that various auto* files account for (they
# don't set PKG_CONFIG_PATH when executing pkg-config even if it was specified
# during ./configure).
COMPONENT_BUILD_ENV += PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)"
MESON = /usr/bin/meson
# configure the unpacked source for building 32 and 64 bit version
# meson insists on separate source & build directories, so no cloney here.
$(BUILD_DIR)/%/.configured: $(SOURCE_DIR)/.prep
($(RM) -rf $(@D) ; $(MKDIR) $(@D))
$(COMPONENT_PRE_CONFIGURE_ACTION)
(cd $(SOURCE_DIR) ; $(ENV) $(CONFIGURE_ENV) $(MESON) setup $(@D) \
$(CONFIGURE_OPTIONS))
$(COMPONENT_POST_CONFIGURE_ACTION)
$(TOUCH) $@
# If BUILD_STYLE is set, provide a default configure target.
ifeq ($(strip $(BUILD_STYLE)),meson)
configure: $(CONFIGURE_$(MK_BITS))
endif
REQUIRED_PACKAGES += developer/build/meson
# Meson generates build.ninja files for the ninja build tool to run,
# so we include ninja.mk for the build/install/test rules
include $(WS_MAKE_RULES)/ninja.mk

View file

@ -1,29 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2015, Aurelien Larcher. All rights reserved.
#
MODULES_ENV= . /etc/profile.d/modules.sh
MODULE_PURGE= module purge
MODULE_LOAD= module load
MODULE_UNLOAD= module unload

View file

@ -1,156 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2013-2017, Aurelien Larcher. All rights reserved.
#
MPI_IMPLEMENTATIONS_LIST = mpich openmpi
# Define compilers
MPI.mpich = mpich
MPICC.mpich = mpicc
MPICXX.mpich = mpicxx
MPIF77.mpich = mpif77
MPIFC.mpich = mpif90
MPI.openmpi = openmpi
MPICC.openmpi = mpicc
MPICXX.openmpi = mpicxx
MPIF77.openmpi = mpif77
MPIFC.openmpi = mpif90
# Default to mpich
MPI_IMPLEMENTATION ?= $(MPI.mpich)
MPICC = $(MPICC.$(MPI_IMPLEMENTATION))
MPICXX = $(MPICXX.$(MPI_IMPLEMENTATION))
MPIF77 = $(MPIF77.$(MPI_IMPLEMENTATION))
MPIFC = $(MPIFC.$(MPI_IMPLEMENTATION))
# Define compiler enviromnent
MPI_COMPILER = $(COMPILER)
MPI_COMPILER_ROOT=
MPI_COMPILER_LIBDIR=
ifeq ($(strip $(MPI_COMPILER)),gcc)
MPI_COMPILER_ROOT=$(GCC_ROOT)
MPI_COMPILER_LIBDIR=$(MPI_COMPILER_ROOT)/lib/$(ARCHLIBSUBDIR$(BITS))
endif
# Define implementation specific paths
MPI_BUNDLE = $(MPI_IMPLEMENTATION)-$(MPI_COMPILER)
MPI_PREFIX.32 = $(USRLIBDIR)/$(MPI_IMPLEMENTATION)/$(MPI_COMPILER)
MPI_PREFIX.64 = $(USRLIBDIR64)/$(MPI_IMPLEMENTATION)/$(MPI_COMPILER)
MPI_PREFIX = $(MPI_PREFIX.$(BITS))
MPI_BINDIR.32 = $(MPI_PREFIX.32)/bin
MPI_BINDIR.64 = $(MPI_PREFIX.64)/bin
MPI_BINDIR = $(MPI_BINDIR.$(BITS))
MPI_SBINDIR.32 = $(MPI_PREFIX.32)/sbin
MPI_SBINDIR.64 = $(MPI_PREFIX.64)/sbin
MPI_SBINDIR = $(MPI_SBINDIR.$(BITS))
MPI_LIBDIR.32 = $(MPI_PREFIX.32)/lib
MPI_LIBDIR.64 = $(MPI_PREFIX.64)/lib
MPI_LIBDIR = $(MPI_LIBDIR.$(BITS))
MPI_ETCDIR.32 = $(MPI_PREFIX.32)/etc
MPI_ETCDIR.64 = $(MPI_PREFIX.64)/etc
MPI_ETCDIR = $(MPI_ETCDIR.$(BITS))
MPI_INCDIR = $(USRINCDIR)/$(MPI_IMPLEMENTATION)
MPI_SHAREDIR = $(USRSHAREDIR)
MPI_DATADIR = $(MPI_SHAREDIR)/$(MPI_IMPLEMENTATION)
MPI_DOCDIR = $(USRSHAREDOCDIR)/$(MPI_IMPLEMENTATION)
MPI_HTMLDIR = $(USRSHAREDOCDIR)/www
MPI_MANDIR = $(USRSHAREMANDIR)
# Create meta rule to trigger build for each listed implementation
ifneq ($(strip $(COMPONENT_MPI_BUILD)),)
$(BUILD_DIR_32)/%/.configured: BITS=32
$(BUILD_DIR_64)/%/.configured: BITS=64
$(BUILD_DIR_32)/%/.built: BITS=32
$(BUILD_DIR_64)/%/.built: BITS=64
BUILD_32=
BUILD_64=
$(BUILD_DIR_32)/%/.installed: BITS=32
$(BUILD_DIR_64)/%/.installed: BITS=64
INSTALL_32=
INSTALL_64=
$(BUILD_DIR_32)/%/.tested: BITS=32
$(BUILD_DIR_64)/%/.tested: BITS=64
$(BUILD_DIR_32)/%/.tested-and-compared: BITS=32
$(BUILD_DIR_64)/%/.tested-and-compared: BITS=64
TEST_32=
TEST_64=
define mpi-rule
BUILD_DIR_32_$(1) = $$(BUILD_DIR)/$$(MACH32)/$(1)
BUILD_DIR_64_$(1) = $$(BUILD_DIR)/$$(MACH64)/$(1)
$(BUILD_DIR)/%/$(1)/.configured: MPI_IMPLEMENTATION=$(1)
$(BUILD_DIR)/%/$(1)/.built: MPI_IMPLEMENTATION=$(1)
BUILD_32+= $$(BUILD_DIR_32_$(1))/.built
BUILD_64+= $$(BUILD_DIR_64_$(1))/.built
$(BUILD_DIR)/%/$(1)/.installed: MPI_IMPLEMENTATION=$(1)
INSTALL_32+= $$(BUILD_DIR_32_$(1))/.installed
INSTALL_64+= $$(BUILD_DIR_64_$(1))/.installed
$(BUILD_DIR)/%/$(1)/.tested: MPI_IMPLEMENTATION=$(1)
$(BUILD_DIR)/%/$(1)/.tested-and-compared: MPI_IMPLEMENTATION=$(1)
ifeq ($(strip $(wildcard $(COMPONENT_TEST_RESULTS_DIR)/results-*.master)),)
TEST_32+= $$(BUILD_DIR_32_$(1))/.tested
TEST_64+= $$(BUILD_DIR_64_$(1))/.tested
else
TEST_32+= $$(BUILD_DIR_32_$(1))/.tested-and-compared
TEST_64+= $$(BUILD_DIR_64_$(1))/.tested-and-compared
endif
endef
$(foreach mpi, $(COMPONENT_MPI_BUILD), $(eval $(call mpi-rule,$(mpi))))
endif
COMPONENT_MPI_BUILD_DIR= $(BUILD_DIR_$(BITS)_$(MPI_IMPLEMENTATION))

View file

@ -1,119 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
#
#
# Rules and Macros for building open source software that builds with
# ninja (whether using a provided ninja file or one generated by a tool
# such as meson).
#
# To use these rules on their own, set BUILD_STYLE=ninja before including
# $(WS_MAKE_RULES)/common.mk. They will also be used for the build rules
# if you set BUILD_STYLE=meson.
#
# Any additional pre/post configure, build, or install actions can be specified
# in your Makefile by setting them in on of the following macros:
# COMPONENT_PRE_BUILD_ACTION, COMPONENT_BUILD_ACTION,
# COMPONENT_POST_BUILD_ACTION, COMPONENT_PRE_INSTALL_ACTION,
# COMPONENT_INSTALL_ACTION, COMPONENT_POST_INSTALL_ACTION
#
# If component specific ninja targets need to be used for build or install, they
# can be specified in
# COMPONENT_BUILD_TARGETS, COMPONENT_INSTALL_TARGETS
#
NINJA = /usr/bin/ninja
COMPONENT_INSTALL_ENV += DESTDIR=$(PROTO_DIR)
COMPONENT_INSTALL_ARGS += $(COMPONENT_INSTALL_ARGS.$(BITS))
COMPONENT_BUILD_ACTION ?= \
$(ENV) $(COMPONENT_BUILD_ENV) \
$(NINJA) -C $(@D) $(COMPONENT_BUILD_ARGS) $(COMPONENT_BUILD_TARGETS)
# build the configured source
$(BUILD_DIR)/%/.built: $(BUILD_DIR)/%/.configured
$(COMPONENT_PRE_BUILD_ACTION)
($(COMPONENT_BUILD_ACTION))
$(COMPONENT_POST_BUILD_ACTION)
ifeq ($(strip $(PARFAIT_BUILD)),yes)
-$(PARFAIT) $(@D)
endif
$(TOUCH) $@
COMPONENT_INSTALL_ACTION ?= \
$(ENV) $(COMPONENT_INSTALL_ENV) \
$(NINJA) -C $(@D) $(COMPONENT_INSTALL_ARGS) $(COMPONENT_INSTALL_TARGETS)
# install the built source into a prototype area
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_INSTALL_ACTION)
($(COMPONENT_INSTALL_ACTION))
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
# set the default command to use for test of the component
COMPONENT_TEST_CMD = $(NINJA)
COMPONENT_SYSTEM_TEST_CMD = $(NINJA)
# set the default target for test of the component
COMPONENT_TEST_TARGETS = test
COMPONENT_SYSTEM_TEST_TARGETS = test
# test the built source
$(BUILD_DIR)/%/.tested-and-compared: $(BUILD_DIR)/%/.built
$(RM) -rf $(COMPONENT_TEST_BUILD_DIR)
$(MKDIR) $(COMPONENT_TEST_BUILD_DIR)
$(COMPONENT_PRE_TEST_ACTION)
-(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS)) \
&> $(COMPONENT_TEST_OUTPUT)
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CREATE_TRANSFORMS)
$(COMPONENT_TEST_PERFORM_TRANSFORM)
$(COMPONENT_TEST_COMPARE)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
$(BUILD_DIR)/%/.tested: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_TEST_ACTION)
(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS))
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
ifeq ($(strip $(PARFAIT_BUILD)),yes)
parfait: build
else
parfait:
$(MAKE) PARFAIT_BUILD=yes parfait
endif
clean::
$(RM) -r $(BUILD_DIR) $(PROTO_DIR)
REQUIRED_PACKAGES += developer/build/ninja

View file

@ -1,19 +0,0 @@
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"). You may
# only use this file in accordance with the terms of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright (c) 2020, Aurelien Larcher. All rights reserved.
#
OCAML_ETCDIR = $(ETCDIR)/ocaml
OCAML_LIBDIR = $(USRLIBDIR64)/ocaml
# Select preferred Python version
OCAML_PYTHON_VERSION = 3.5
PYTHON_VERSION = $(OCAML_PYTHON_VERSION)

View file

@ -1,84 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
#
FETCH = $(WS_TOOLS)/userland-fetch
#
# Anything that we download must have a COMPONENT_ARCHIVE_URL{_[0-9]+} macro
# that tells us where the canonical source for the archive can be found. The
# macro for the first archive is typically un-suffixed. By convention,
# subsequent archives will include a _[0-9]+ in the macro name. This allows
# an arbitrary number of archives to be downloaded for a particular component
# Makefile. It is also important to note that there is a corresponding
# COMPONENT_ARCHIVE macro defining a local file name for the archive, and
# optional COMPONENT_ARCHIVE_HASH and COMPONENT_SIG_URL containing a hash of
# the file and signature for verification of its contents.
#
URL_SUFFIXES = $(subst COMPONENT_ARCHIVE_URL_,, \
$(filter COMPONENT_ARCHIVE_URL_%, $(.VARIABLES)))
# Argument to "userland-fetch" script that causes it to download and verify
# files, but not to remove mismatches; good to save traffic when initially
# fetching a new archive just to learn what checksum to expect in Makefile.
#FETCH_KEEP ?= --keep
FETCH_KEEP ?=
# Template for download rules.
define download-rules
ifdef COMPONENT_ARCHIVE_URL$(1)
ARCHIVES += $$(COMPONENT_ARCHIVE$(1))
CLOBBER_PATHS += $$(COMPONENT_ARCHIVE$(1))
fetch:: FETCH_KEEP=--keep
fetch:: $$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1))
download:: $$(USERLAND_ARCHIVES)
download:: $$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1))
$$(USERLAND_ARCHIVES):
$$(MKDIR) $$(USERLAND_ARCHIVES)
$$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1)): $(MAKEFILE_PREREQ)
$$(FETCH) $$(FETCH_KEEP) --file $$@ \
$$(COMPONENT_ARCHIVE_URL$(1):%=--url %) \
$$(COMPONENT_ARCHIVE_HASH$(1):%=--hash %) \
$$(COMPONENT_SIG_URL$(1):%=--sigurl %) \
$$(if $$(COMPONENT_FETCH_USER_AGENT$(1)),--user-agent $$(COMPONENT_FETCH_USER_AGENT$(1)))
$$(TOUCH) $$@
USERLAND_REQUIRED_PACKAGES += runtime/python-27
endif
endef
#
# Define the rules required to download any source archives and augment any
# cleanup macros.
#
$(eval $(call download-rules,))
$(foreach suffix, $(URL_SUFFIXES), $(eval $(call download-rules,_$(suffix))))
# Needed for signature validation of downloads
USERLAND_REQUIRED_PACKAGES += crypto/gnupg

View file

@ -1,127 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
#
GIT = /usr/bin/git
COMPONENT_PREP_GIT?=yes
ifeq ($(strip $(COMPONENT_PREP_GIT)), yes)
#
# Anything that we pull from a GIT repo must have a GIT_REPO{_[0-9]+} and
# GIT_COMMIT_ID{_[0-9]+} to match.
#
GIT_SUFFIXES = $(subst GIT_REPO_,, $(filter GIT_REPO_%, $(.VARIABLES)))
# Templates for git variables and rules. We separate the variable assignments
# from the rules so that all the variable assignments are given a chance to
# complete before those variables are used in targets or prerequisites, where
# they'll be expanded immediately.
define git-variables
ifdef GIT_REPO$(1)
ifeq ("",$(strip $(or $(GIT_BRANCH$(1)),$(GIT_COMMIT_ID$(1)))))
$$(error GIT_BRANCH$(1) and/or GIT_COMMIT_ID$(1) must be defined)
endif
ifdef GIT_BRANCH$(1)
GIT_BRANCH_ARG$(1) = -b $$(GIT_BRANCH$(1))
else
GIT_BRANCH_ARG$(1) = -b master
endif
# If the label is not already defined (including to empty), set it to the version.
COMPONENT_LABEL$(1) ?= $$(COMPONENT_VERSION$(1))
# The source directory is <name>-(<label>|<version>)[-(<tag>|<branch>)][-<commit].
COMPONENT_SRC$(1) ?= $$(COMPONENT_NAME$(1))$$(COMPONENT_LABEL$(1):%=-%)$$($$(or $$(GIT_TAG$(1)),$$(GIT_BRANCH$(1))))$$(GIT_COMMIT_ID$(1):%=-%)
COMPONENT_ARCHIVE$(1) ?= $$(COMPONENT_SRC$(1)).tar.gz
# If the source is github attempt to generate an archive url. Defining
# COMPONENT_ARCHIVE_URL here messes with prep-download.mk, which keys off of
# that variable to build download rules, so keep track of which suffixes
# generated a github archive URL, and prep-download.mk will use that list to
# remove those URLs. If the primary (unsuffixed) archive is from github, then
# we add a dummy __BLANK__ suffix to the list, and filter that out separately.
ifeq (github,$(findstring github,$(GIT_REPO$(1))))
COMPONENT_ARCHIVE_URL$(1) ?= $(GIT_REPO$(1))/archive/$(GIT_BRANCH$(1)).tar.gz
GITHUB_ARCHIVE_SUFFIXES += $(or $(strip $(1:_%=%)),__BLANK__)
else
COMPONENT_ARCHIVE_SRC$(1) = git
endif
CLEAN_PATHS += $$(COMPONENT_SRC$(1))
CLOBBER_PATHS += $$(COMPONENT_ARCHIVE$(1))
SOURCE_DIR$(1) = $$(COMPONENT_DIR)/$(COMPONENT_SRC$(1))
endif
endef
define git-rules
ifdef GIT_REPO$(1)
download:: $$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1))
# First attempt to download a cached archive of the SCM repo at the proper
# changeset ID, If COMPONENT_ARCHIVE_URL is defined try that as well.
# If that fails, create an archive by cloning the SCM repo,
# updating to the selected changeset, archiving that directory, and cleaning up
# when complete.
#
# GIT CLONE ARGS
# A shallow clone (--depth=1) to git clone takes only the top level (named)
# commits on any branches or tags and can cause use of other commit IDs to
# fail. As such, it should never be used here as it can make it impossible to
# reliably reproduce archives created from the result since git clone (unlike
# mercurial) currently has no way of cloning to a specific commit id.
$$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1)): $(MAKEFILE_PREREQ)
$$(FETCH) --file $$@ $$(GIT_HASH$(1):%=--hash %) --url GIT || \
($$(FETCH) --file $$@ $$(COMPONENT_ARCHIVE_URL$(1):%=--url %) || \
(TMP_REPO=$$$$($(MKTEMP) --directory) && \
$(GIT) clone $$(GIT_REPO$(1)) $$(GIT_BRANCH_ARG$(1)) $$$${TMP_REPO} && \
(cd $$$${TMP_REPO} ; $(GIT) checkout \
$$(GIT_COMMIT_ID$(1))) && \
(cd $$$${TMP_REPO} ; \
$(GIT) config tar.tar.bz2.command "bzip2 -c"; \
$(GIT) config tar.tar.xz.command "xz -c"; \
$(GIT) archive \
--format $(subst $(COMPONENT_SRC$(1)).,,$(COMPONENT_ARCHIVE$(1))) \
--prefix $$(COMPONENT_SRC$(1))/ \
$$(or $$(GIT_COMMIT_ID$(1)),$$(GIT_BRANCH$(1)))) > $$@ && \
$(RM) -r $$$${TMP_REPO} ) && \
( GIT_HASH=$$$$(digest -a sha256 $$@) && \
$(GSED) -i \
-e "s/\(GIT_HASH$(1)[[:space:]]*=[[:space:]]*\).*/\1sha256:$$$${GIT_HASH}/" \
Makefile ))
REQUIRED_PACKAGES += developer/versioning/git
endif
endef
# Evaluate the variable assignments immediately
$(eval $(call git-variables,))
$(foreach suffix, $(GIT_SUFFIXES), $(eval $(call git-variables,_$(suffix))))
$(eval $(call git-rules,))
$(foreach suffix, $(GIT_SUFFIXES), $(eval $(call git-rules,_$(suffix))))
endif

View file

@ -1,97 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
#
HG = /usr/bin/hg
MKTEMP = /usr/gnu/bin/mktemp
COMPONENT_PREP_HG?=yes
ifeq ($(strip $(COMPONENT_PREP_HG)), yes)
#
# Anything that we pull from a Mercurial repo must have a HG_REPO{_[0-9]+} and
# HG_REV{_[0-9]+} to match.
#
HG_SUFFIXES = $(subst HG_REPO_,, $(filter HG_REPO_%, $(.VARIABLES)))
# Templates for download variables and rules. We separate the variable
# assignments from the rules so that all the variable assignments are given a
# chance to complete before those variables are used in targets or
# prerequisites, where they'll be expanded immediately.
define hg-variables
ifdef HG_REPO$(1)
ifdef HG_REV$(1)
# If the label is not already defined (including to empty), set it to the version.
COMPONENT_LABEL$(1) ?= $$(COMPONENT_VERSION$(1))
# The source directory is <name>-(<label>|<version>)[-(<tag>|<branch>)][-<commit].
COMPONENT_SRC$(1) ?= $$(COMPONENT_NAME$(1))$$(COMPONENT_LABEL$(1):%=-%)$$($$(or $$(HG_TAG$(1)),$$(HG_BRANCH$(1))))$$(HG_REV$(1):%=-%)
COMPONENT_ARCHIVE$(1) ?= $$(COMPONENT_SRC$(1)).tar.gz
COMPONENT_ARCHIVE_SRC$(1) = hg
CLEAN_PATHS += $$(COMPONENT_SRC$(1))
CLOBBER_PATHS += $$(COMPONENT_ARCHIVE$(1))
SOURCE_DIR$(1) = $$(COMPONENT_DIR)/$(COMPONENT_SRC$(1))
endif
endif
endef
define hg-rules
ifdef HG_REPO$(1)
ifdef HG_REV$(1)
download:: $$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1))
# First attempt to download a cached archive of the SCM repo at the proper
# changeset ID. If that fails, create an archive by cloning the SCM repo,
# updating to the selected changeset, archiving that directory, and cleaning up
# when complete.
$$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1)): $(MAKEFILE_PREREQ)
$$(FETCH) --file $$@ $$(HG_HASH$(1):%=--hash %) --url HG || \
(TMP_REPO=$$$$($(MKTEMP) --directory) && \
$(HG) clone $$(HG_REPO$(1)) $$(HG_REV$(1):%=--rev %) \
$$(HG_REV$(1):%=--updaterev %) \
$$(HG_BRANCH$(1):%=--branch %) \
$$$${TMP_REPO} && \
$(HG) -R $$$${TMP_REPO} archive --prefix $$(COMPONENT_SRC$(1)) $$@ && \
$(RM) -rf $${TMP_REPO} && \
HG_HASH=$$$$(digest -a sha256 $$@) && \
$(GSED) -i \
-e "s/\(HG_HASH$(1)[[:space:]]*=[[:space:]]*\).*/\1sha256:$$$${HG_HASH}/" \
Makefile)
USERLAND_REQUIRED_PACKAGES += developer/versioning/mercurial
endif
endif
endef
# Evaluate the variable assignments immediately.
$(eval $(call hg-variables,))
$(foreach suffix, $(HG_SUFFIXES), $(eval $(call hg-variables,_$(suffix))))
$(eval $(call hg-rules,))
$(foreach suffix, $(HG_SUFFIXES), $(eval $(call hg-rules,_$(suffix))))
endif

View file

@ -1,111 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
#
GPATCH = /usr/gnu/bin/patch
PATCH_LEVEL ?= 1
GPATCH_BACKUP = --backup --version-control=numbered
GPATCH_FLAGS = --strip=$(PATCH_LEVEL) $(GPATCH_BACKUP)
#
# Rules for patching source that is downloaded and unpacked or pulled from
# a source repository. Patches should be named
# patches/{patch-file-name}.patch{version} where {patch-file-name} is a
# meaningful name for the patch contents and {version} corresponds to the
# COMPONENT_NAME{version} of the source to be patched. Typically, version
# would be something like "_1", "_2", ... After all {version} patches have
# been applied, a final set of patches without a {version} suffix may be
# applied.
#
# PATCH_DIR can be overridden to move patches to a different location
# PATCH_PATTERN can be overridden to adjust the patch naming scheme that the
# build recognizes.
# ADDITIONAL_PATCHES can be defined in the component Makefile to include
# additional patches.
#
PATCH_PATTERN ?= *.patch*
PATCH_DIR ?= patches
# patches specific to parfait builds.
ifeq ($(strip $(PARFAIT_BUILD)),yes)
PARFAIT_PATCH_DIR = parfait
endif
PATCHES = $(shell find $(PATCH_DIR) $(PARFAIT_PATCH_DIR) -type f \
-name '$(PATCH_PATTERN)' 2>/dev/null | \
LC_COLLATE=C sort)
PCH_SUFFIXES = $(patsubst .patch_%,%, $(filter-out .patch,$(suffix $(PATCHES))))
define patch-rule
ifeq ($(1),_0)
PATCH_PATTERN$(1) ?= %.patch
PATCHES$(1) = $(filter %.patch,$(PATCHES))
else
PATCH_PATTERN$(1) ?= %.patch$(1)
PATCHES$(1) = $(filter %.patch$(1),$(PATCHES))
endif
ifneq ($(strip $(ADDITIONAL_PATCHES$(1))),)
PATCHES$(1) += $(ADDITIONAL_PATCHES$(1))
endif
ifneq ($$(PATCHES$(1)),)
PATCH_STAMPS$(1) += $$(PATCHES$(1):$(PATCH_DIR)/%=$$(SOURCE_DIR$(1))/.patched-%)
ifeq ($(strip $(PARFAIT_BUILD)),yes)
PATCH_STAMPS$(1) += $$(PATCHES$(1):$(PARFAIT_PATCH_DIR)/%=$$(SOURCE_DIR$(1))/.patched-%)
endif
# We should unpack the source that we patch before we patch it.
$$(PATCH_STAMPS$(1)): unpack
# Adding MAKEFILE_PREREQ because gmake seems to evaluate the need to patch
# before re-unpacking if the Makefile changed. The various stamps are
# removed as part of the unpacking process, and it doesn't appear to
# re-evaluate the need for patching. If we ever move the stamps to the build
# directory, we may not need the dependency any more.
$$(SOURCE_DIR$(1))/.patched-%: $(PATCH_DIR)/% $(MAKEFILE_PREREQ)
$(GPATCH) -d $$(@D) $$(GPATCH_FLAGS) < $$<
$(TOUCH) $$(@)
$$(SOURCE_DIR$(1))/.patched-%: $(PARFAIT_PATCH_DIR)/% $(MAKEFILE_PREREQ)
$(GPATCH) -d $$(@D) $$(GPATCH_FLAGS) < $$<
$(TOUCH) $$(@)
$$(SOURCE_DIR$(1))/.patched: $$(PATCH_STAMPS$(1))
$(TOUCH) $$(@)
patch:: $$(SOURCE_DIR$(1))/.patched
USERLAND_REQUIRED_PACKAGES += text/gnu-patch
endif
endef
#
# Define the rules required to download any source archives and augment any
# cleanup macros.
#
$(foreach suffix, $(PCH_SUFFIXES), $(eval $(call patch-rule,_$(suffix))))
$(eval $(call patch-rule,)) # this must be last so we don't drop *.patch_%.

View file

@ -1,84 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
#
SVN = /usr/bin/svn
MKTEMP = /usr/gnu/bin/mktemp
COMPONENT_PREP_SVN?=yes
ifeq ($(strip $(COMPONENT_PREP_SVN)), yes)
#
# Anything that we pull from a Subversion repo must have a SVN_REPO{_[0-9]+} and
# SVN_REV{_[0-9]+} to match.
#
SVN_SUFFIXES = $(subst SVN_REPO_,, $(filter SVN_REPO_%, $(.VARIABLES)))
define subversion-rules
ifdef SVN_REPO$(1)
ifdef SVN_REV$(1)
COMPONENT_SRC$(1) = $$(COMPONENT_NAME$(1))-$$(SVN_REV$(1))
COMPONENT_ARCHIVE$(1) = $$(COMPONENT_SRC$(1)).tar.bz2
COMPONENT_ARCHIVE_SRC$(1) = svn
CLEAN_PATHS += $$(COMPONENT_SRC$(1))
CLOBBER_PATHS += COMPONENT_ARCHIVE$(1)
SOURCE_DIR$(1) = $$(COMPONENT_DIR)/$(COMPONENT_SRC$(1))
download:: $$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1))
# First attempt to download a cached archive of the SCM repo at the proper
# changeset ID. If that fails, create an archive by cloning the SCM repo,
# updating to the selected changeset, archiving that directory, and cleaning up # when complete.
$$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1)): $(MAKEFILE_PREREQ)
$$(FETCH) --file $$@ $$(SVN_HASH$(1):%=--hash %) --url SVN || \
(TMP_REPO=$$$$($(MKTEMP) --directory --dry-run) && \
$(SVN) export $$(SVN_REPO$(1)) $$(SVN_REV$(1):%=--revision %) \
$$$${TMP_REPO} && \
/usr/gnu/bin/tar --create --file - --absolute-names \
--sort=name --mtime="2018-10-05 00:00Z" --owner=0 --group=0 --numeric-owner \
--transform="s;$$$${TMP_REPO};$$(COMPONENT_SRC$(1));g" \
--bzip2 $$$${TMP_REPO} >$$@ && \
$(RM) -rf $$$${TMP_REPO} && \
SVN_HASH=$$$$(digest -a sha256 $$@) && \
$(GSED) -i \
-e "s/^SVN_HASH$(1)=.*/SVN_HASH$(1)= sha256:$$$${SVN_HASH}/" \
Makefile)
USERLAND_REQUIRED_PACKAGES += developer/versioning/subversion
endif
endif
endef
#
# Define the rules required to download any source archives and augment any
# cleanup macros.
#
$(eval $(call subversion-rules,))
$(foreach suffix, $(SVN_SUFFIXES), $(eval $(call subversion-rules,_$(suffix))))
endif

View file

@ -1,76 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2018, Michal Nowak
#
UNPACK = $(WS_TOOLS)/userland-unpack
#
# Anything that we downloaded and want to unpack must have a
# COMPONENT_ARCHIVE{_[0-9]+} macro.
#
PCK_SUFFIXES = $(subst COMPONENT_ARCHIVE_,, \
$(filter COMPONENT_ARCHIVE_%, $(.VARIABLES)))
# Template for unpacking rules.
define unpack-rules
ifdef COMPONENT_ARCHIVE$(1)
ifdef COMPONENT_SRC$(1)
CLEAN_PATHS += $$(COMPONENT_SRC$(1))
SOURCE_DIR$(1) = $$(COMPONENT_DIR)/$(COMPONENT_SRC$(1))
UNPACK_STAMP$(1) = $$(SOURCE_DIR$(1))/.unpacked
# RUBY_VERSION is passed on to ensure userland-unpack uses the
# correct gem command for the ruby version specified
$$(UNPACK_STAMP$(1)): $$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1)) $(MAKEFILE_PREREQ) download
$$(RM) -r $$(SOURCE_DIR$(1))
$(ENV) RUBY_VERSION=$(RUBY_VERSION) \
$$(UNPACK) $$(UNPACK_ARGS$(1)) $$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1))
$$(COMPONENT_POST_UNPACK_ACTION$(1))
$$(TOUCH) $$@
unpack:: $$(UNPACK_STAMP$(1))
USERLAND_REQUIRED_PACKAGES += archiver/gnu-tar
USERLAND_REQUIRED_PACKAGES += compress/bzip2
USERLAND_REQUIRED_PACKAGES += compress/gzip
USERLAND_REQUIRED_PACKAGES += compress/p7zip
USERLAND_REQUIRED_PACKAGES += compress/unzip
USERLAND_REQUIRED_PACKAGES += compress/lzip
USERLAND_REQUIRED_PACKAGES += compress/xz
USERLAND_REQUIRED_PACKAGES += compress/zip
USERLAND_REQUIRED_PACKAGES += compress/zstd
USERLAND_REQUIRED_PACKAGES += developer/java/openjdk8
USERLAND_REQUIRED_PACKAGES += runtime/ruby
endif
endif
endef
#
# Define the rules required to download any source archives and augment any
# cleanup macros.
#
$(eval $(call unpack-rules,))
$(foreach suffix, $(PCK_SUFFIXES), $(eval $(call unpack-rules,_$(suffix))))

View file

@ -1,51 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
#
include $(WS_MAKE_RULES)/prep-download.mk
include $(WS_MAKE_RULES)/prep-hg.mk
include $(WS_MAKE_RULES)/prep-git.mk
include $(WS_MAKE_RULES)/prep-svn.mk
include $(WS_MAKE_RULES)/prep-unpack.mk
include $(WS_MAKE_RULES)/prep-patch.mk
download::
unpack:: download
patch:: unpack
$(SOURCE_DIR)/.prep: component-environment-prep download unpack patch
$(COMPONENT_PREP_ACTION)
$(TOUCH) $@
prep:: $(SOURCE_DIR)/.prep
clean::
$(PRE_CLEAN_ACTION)
$(RM) -r $(CLEAN_PATHS)
clobber:: clean
$(RM) -r $(CLOBBER_PATHS)

View file

@ -1,43 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
#
# This is only useful for a single ruby version substtution NOT using
# -RUBYVER and -GENFRAG manifests
# Transform file paths for ruby version without creating version specific
# packages
PKG_MACROS += RUBY_VERSION=$(RUBY_VERSION)
PKG_MACROS += RUBY_LIB_VERSION=$(RUBY_LIB_VERSION)
PKG_MACROS += RUBYV=$(subst .,,$(RUBY_VERSION))
VENDOR_RUBY = /usr/ruby/$(RUBY_VERSION)/lib/ruby/vendor_ruby/$(RUBY_LIB_VERSION)
VENDOR_RUBY_ARCH = /usr/ruby/$(RUBY_VERSION)/lib/ruby/vendor_ruby/$(RUBY_LIB_VERSION)/$(MACH64)-solaris$(SOLARIS_VERSION)
# Modify ruby scripts in the ruby-version-specific path of the proto area,
# under usr/ruby/$(RUBY_VERSION), containing "#!/usr/bin/env ruby" to
# use the version-specific ruby path, defined by the $(RUBY_VERSION) macro.
# Without this change, the mediated ruby version in /usr/bin/ruby
# will probably be used, which may not match the ruby
# version supported by the component.
COMPONENT_POST_INSTALL_ACTION += \
cd $(PROTO_DIR)/usr/ruby/$(RUBY_VERSION); \
$(RUBY_SCRIPT_FIX_FUNC);

View file

@ -1,185 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
#
# Set default PyPI name
COMPONENT_PYPI?=$(COMPONENT_NAME)
# Set default to PyPI url
COMPONENT_ARCHIVE_URL?=$(call pypi_url)
define python-rule
$(BUILD_DIR)/%-$(1)/.built: PYTHON_VERSION=$(1)
$(BUILD_DIR)/%-$(1)/.installed: PYTHON_VERSION=$(1)
$(BUILD_DIR)/%-$(1)/.tested: PYTHON_VERSION=$(1)
$(BUILD_DIR)/%-$(1)/.tested-and-compared: PYTHON_VERSION=$(1)
endef
$(foreach pyver, $(PYTHON_VERSIONS), $(eval $(call python-rule,$(pyver))))
$(BUILD_DIR)/$(MACH32)-%/.built: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.built: BITS=64
$(BUILD_DIR)/$(MACH32)-%/.installed: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.installed: BITS=64
$(BUILD_DIR)/$(MACH32)-%/.tested: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.tested: BITS=64
$(BUILD_DIR)/$(MACH32)-%/.tested-and-compared: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.tested-and-compared: BITS=64
PYTHON_32_VERSIONS = $(filter-out $(PYTHON_64_ONLY_VERSIONS), $(PYTHON_VERSIONS))
BUILD_32 = $(PYTHON_32_VERSIONS:%=$(BUILD_DIR)/$(MACH32)-%/.built)
BUILD_64 = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.built)
BUILD_NO_ARCH = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH)-%/.built)
ifeq ($(filter-out $(PYTHON_64_ONLY_VERSIONS), $(PYTHON_VERSION)),)
BUILD_32_and_64 = $(BUILD_64)
endif
INSTALL_32 = $(PYTHON_32_VERSIONS:%=$(BUILD_DIR)/$(MACH32)-%/.installed)
INSTALL_64 = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.installed)
INSTALL_NO_ARCH = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH)-%/.installed)
PYTHON_ENV = CC="$(CC)"
PYTHON_ENV += CFLAGS="$(CFLAGS)"
PYTHON_ENV += PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)"
COMPONENT_BUILD_ENV += $(PYTHON_ENV)
COMPONENT_INSTALL_ENV += $(PYTHON_ENV)
COMPONENT_TEST_ENV += $(PYTHON_ENV)
# Reset arguments specified as environmnent variables
COMPONENT_BUILD_ARGS =
# If we are building Python 3.5 support, build it and install it
# before Python 2.7, so 2.7 is installed last and is the canonical version.
# When we change the default, the new default should go last.
ifneq ($(findstring 3.5,$(PYTHON_VERSIONS)),)
$(BUILD_DIR)/%-2.7/.built: $(BUILD_DIR)/%-3.5/.built
$(BUILD_DIR)/%-2.7/.installed: $(BUILD_DIR)/%-3.5/.installed
endif
# Create a distutils config file specific to the combination of build
# characteristics (bittedness x Python version), and put it in its own
# directory. We can set $HOME to point distutils at it later, allowing
# the install phase to find the temporary build directories.
CFG=.pydistutils.cfg
$(BUILD_DIR)/config-%/$(CFG):
$(MKDIR) $(@D)
echo "[build]\nbuild_base = $(BUILD_DIR)/$*" > $@
# build the configured source
$(BUILD_DIR)/%/.built: $(SOURCE_DIR)/.prep $(BUILD_DIR)/config-%/$(CFG)
$(RM) -r $(@D) ; $(MKDIR) $(@D)
$(COMPONENT_PRE_BUILD_ACTION)
(cd $(SOURCE_DIR) ; $(ENV) HOME=$(BUILD_DIR)/config-$* $(COMPONENT_BUILD_ENV) \
$(PYTHON.$(BITS)) ./setup.py build $(COMPONENT_BUILD_ARGS))
$(COMPONENT_POST_BUILD_ACTION)
ifeq ($(strip $(PARFAIT_BUILD)),yes)
-$(PARFAIT) $(SOURCE_DIR)/$(@D:$(BUILD_DIR)/%=%)
endif
$(TOUCH) $@
COMPONENT_INSTALL_ARGS += --root $(PROTO_DIR)
COMPONENT_INSTALL_ARGS += --install-lib=$(PYTHON_LIB)
COMPONENT_INSTALL_ARGS += --install-purelib=$(PYTHON_LIB)
COMPONENT_INSTALL_ARGS += --install-platlib=$(PYTHON_LIB)
COMPONENT_INSTALL_ARGS += --install-data=$(PYTHON_DATA)
COMPONENT_INSTALL_ARGS += --force
# install the built source into a prototype area
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built $(BUILD_DIR)/config-%/$(CFG)
$(COMPONENT_PRE_INSTALL_ACTION)
(cd $(SOURCE_DIR) ; $(ENV) HOME=$(BUILD_DIR)/config-$* $(COMPONENT_INSTALL_ENV) \
$(PYTHON.$(BITS)) ./setup.py install $(COMPONENT_INSTALL_ARGS))
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
# Define bit specific and Python version specific filenames.
ifeq ($(strip $(USE_COMMON_TEST_MASTER)),no)
COMPONENT_TEST_MASTER = $(COMPONENT_TEST_RESULTS_DIR)/results-$(PYTHON_VERSION)-$(BITS).master
endif
COMPONENT_TEST_OUTPUT = $(COMPONENT_TEST_BUILD_DIR)/test-$(PYTHON_VERSION)-$(BITS)-results
COMPONENT_TEST_DIFFS = $(COMPONENT_TEST_BUILD_DIR)/test-$(PYTHON_VERSION)-$(BITS)-diffs
COMPONENT_TEST_SNAPSHOT = $(COMPONENT_TEST_BUILD_DIR)/results-$(PYTHON_VERSION)-$(BITS).snapshot
COMPONENT_TEST_TRANSFORM_CMD = $(COMPONENT_TEST_BUILD_DIR)/transform-$(PYTHON_VERSION)-$(BITS)-results
COMPONENT_TEST_DEP = $(BUILD_DIR)/%/.installed
COMPONENT_TEST_DIR = $(COMPONENT_SRC)/test
COMPONENT_TEST_ENV_CMD = $(ENV)
COMPONENT_TEST_ENV += PYTHONPATH=$(PROTO_DIR)$(PYTHON_VENDOR_PACKAGES)
COMPONENT_TEST_CMD = $(PYTHON)
COMPONENT_TEST_ARGS += ./runtests.py
# determine the type of tests we want to run.
ifeq ($(strip $(wildcard $(COMPONENT_TEST_RESULTS_DIR)/results-*.master)),)
TEST_32 = $(PYTHON_32_VERSIONS:%=$(BUILD_DIR)/$(MACH32)-%/.tested)
TEST_64 = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.tested)
TEST_NO_ARCH = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH)-%/.tested)
else
TEST_32 = $(PYTHON_32_VERSIONS:%=$(BUILD_DIR)/$(MACH32)-%/.tested-and-compared)
TEST_64 = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.tested-and-compared)
TEST_NO_ARCH = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH)-%/.tested-and-compared)
endif
# test the built source
$(BUILD_DIR)/%/.tested-and-compared: $(COMPONENT_TEST_DEP)
$(RM) -rf $(COMPONENT_TEST_BUILD_DIR)
$(MKDIR) $(COMPONENT_TEST_BUILD_DIR)
$(COMPONENT_PRE_TEST_ACTION)
-(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) $(COMPONENT_TEST_ARGS)) \
&> $(COMPONENT_TEST_OUTPUT)
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CREATE_TRANSFORMS)
$(COMPONENT_TEST_PERFORM_TRANSFORM)
$(COMPONENT_TEST_COMPARE)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
$(BUILD_DIR)/%/.tested: $(COMPONENT_TEST_DEP)
$(COMPONENT_PRE_TEST_ACTION)
(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) $(COMPONENT_TEST_ARGS))
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
ifeq ($(strip $(PARFAIT_BUILD)),yes)
parfait: install
-$(PARFAIT) build
else
parfait:
$(MAKE) PARFAIT_BUILD=yes parfait
endif
clean::
$(RM) -r $(SOURCE_DIR) $(BUILD_DIR)
# Make it easy to construct a URL for a pypi source download. This
# construct supports an optional call to a number from
# NUM_EXTRA_ARCHIVES for multiple archive downloads.
pypi_url_multi = pypi:///$(COMPONENT_NAME_$(1))==$(COMPONENT_VERSION_$(1))
pypi_url_single = pypi:///$(COMPONENT_NAME)==$(COMPONENT_VERSION)
pypi_url = $(if $(COMPONENT_NAME_$(1)),$(pypi_url_multi),$(pypi_url_single))

File diff suppressed because it is too large Load diff

View file

@ -1,81 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
#
# (hopefully) helpful common targets.
#
PROTOMAN1FILES=$(MAN1FILES:%=$(PROTOUSRSHAREMAN1DIR)/%)
PROTOMAN1MFILES=$(MAN1MFILES:%=$(PROTOUSRSHAREMAN1MDIR)/%)
PROTOMAN3FILES=$(MAN3FILES:%=$(PROTOUSRSHAREMAN3DIR)/%)
PROTOMAN4FILES=$(MAN4FILES:%=$(PROTOUSRSHAREMAN4DIR)/%)
$(PROTOUSRSHAREMAN1DIR)/% $(PROTOUSRSHAREMAN1MDIR)/% $(PROTOUSRSHAREMAN3DIR)/% \
$(PROTOUSRSHAREMAN4DIR)/%: manpages/%
$(INS.file)
PROTOSFWLINKS= $(SFWPROGS:%=$(PROTOSFWBIN)/%)
$(PROTOSFWLINKS): $(PROTOSFWBIN)
$(RM) $@ ; $(SYMLINK) ../../bin/$(@F) $@
PROTOSFWMAN1LINKS= $(SFWMAN1:%=$(PROTOSFWSHAREMAN1)/%)
$(PROTOSFWMAN1LINKS): $(PROTOSFWSHAREMAN1)
$(RM) $@ ; $(SYMLINK) ../../../../share/man/man1/$(@F) $@
PROTOGNULINKS= $(GNUPROGS:%=$(PROTOGNUBIN)/%)
$(PROTOGNULINKS): $(PROTOGNUBIN)
$(RM) $@ ; $(SYMLINK) ../../bin/g$(@F) $@
PROTOGNUMAN1LINKS = $(GNUMAN1:%=$(PROTOGNUSHAREMAN1)/%)
$(PROTOGNUMAN1LINKS): $(PROTOGNUSHAREMAN1)
$(RM) $@ ; $(SYMLINK) ../../../../share/man/man1/g$(@F) $@
$(PROTOETCDIR) \
$(PROTOETCSECDIR) \
$(PROTOLIBDIR) \
$(PROTOUSRSHAREMAN1DIR) \
$(PROTOUSRSHAREMAN1MDIR) \
$(PROTOUSRSHAREMAN3DIR) \
$(PROTOUSRSHAREMAN4DIR) \
$(PROTOUSRSHAREDOCDIR) \
$(PROTOGNUBIN) \
$(PROTOGNUSHAREMAN1) \
$(PROTOSFWBIN) \
$(PROTOSFWSHAREMAN1) \
$(PROTOUSRSBINDIR) \
$(PROTOUSRBINDIR):
$(MKDIR) $@
$(PROTOMAN1FILES): $(PROTOUSRSHAREMAN1DIR)
$(PROTOMAN1MFILES): $(PROTOUSRSHAREMAN1MDIR)
$(PROTOMAN3FILES): $(PROTOUSRSHAREMAN3DIR)
$(PROTOMAN4FILES): $(PROTOUSRSHAREMAN4DIR)

View file

@ -1,246 +0,0 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
#
#
# Rules and Macros for building opens source software that uses the waf
# build system from https://waf.io/
#
# To use these rules, include $(WS_MAKE_RULES)/waf.mk in your Makefile
# and define "build", "install" targets appropriate to building your component.
# Ex:
#
# build: $(BUILD_32) \
# $(BUILD_64)
#
# install: $(INSTALL_32) \
# $(INSTALL_64)
#
# Any additional pre/post configure, build, or install actions can be specified
# in your Makefile by setting them in on of the following macros:
# COMPONENT_PRE_BUILD_ACTION, COMPONENT_POST_BUILD_ACTION
# COMPONENT_PRE_INSTALL_ACTION, COMPONENT_POST_INSTALL_ACTION
#
# If component specific make targets need to be used for build or install, they
# can be specified in
# COMPONENT_BUILD_TARGETS, COMPONENT_INSTALL_TARGETS
#
# Defaults to looking for waf script in top level of cloned source
WAF = $(PYTHON) waf
CONFIGURE_PREFIX = /usr
ifeq ($(strip $(PREFERRED_BITS)),64)
CONFIGURE_BINDIR.32 = $(CONFIGURE_PREFIX)/bin/$(MACH32)
CONFIGURE_BINDIR.64 = $(CONFIGURE_PREFIX)/bin
CONFIGURE_SBINDIR.32 = $(CONFIGURE_PREFIX)/sbin/$(MACH32)
CONFIGURE_SBINDIR.64 = $(CONFIGURE_PREFIX)/sbin
else
CONFIGURE_BINDIR.32 = $(CONFIGURE_PREFIX)/bin
CONFIGURE_BINDIR.64 = $(CONFIGURE_PREFIX)/bin/$(MACH64)
CONFIGURE_SBINDIR.32 = $(CONFIGURE_PREFIX)/sbin
CONFIGURE_SBINDIR.64 = $(CONFIGURE_PREFIX)/sbin/$(MACH64)
endif
CONFIGURE_LIBDIR.32 = $(CONFIGURE_PREFIX)/lib
CONFIGURE_LIBDIR.64 = $(CONFIGURE_PREFIX)/lib/$(MACH64)
CONFIGURE_MANDIR = $(CONFIGURE_PREFIX)/share/man
CONFIGURE_LOCALEDIR = $(CONFIGURE_PREFIX)/share/locale
CONFIGURE_DEFAULT_DIRS?=yes
CONFIGURE_OPTIONS += --prefix=$(CONFIGURE_PREFIX)
ifeq ($(CONFIGURE_DEFAULT_DIRS),yes)
CONFIGURE_OPTIONS += --mandir=$(CONFIGURE_MANDIR)
ifeq ($(INITIAL_BITS),64)
CONFIGURE_OPTIONS += --bindir=$(CONFIGURE_BINDIR.32)
CONFIGURE_OPTIONS += --sbindir=$(CONFIGURE_SBINDIR.32)
else
CONFIGURE_OPTIONS += --bindir=$(CONFIGURE_BINDIR.$(BITS))
CONFIGURE_OPTIONS += --sbindir=$(CONFIGURE_SBINDIR.$(BITS))
endif
CONFIGURE_OPTIONS += --libdir=$(CONFIGURE_LIBDIR.$(BITS))
endif
CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.$(BITS))
CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.$(MACH))
CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.$(MACH).$(BITS))
CONFIGURE_ENV += CC="$(CC) $(CC_BITS)"
CONFIGURE_ENV += CFLAGS="$(CFLAGS)"
CONFIGURE_ENV += CXX="$(CXX) $(CC_BITS)"
CONFIGURE_ENV += CXXFLAGS="$(CXXFLAGS)"
CONFIGURE_ENV += LDFLAGS="$(LDFLAGS)"
CONFIGURE_ENV += PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)"
CONFIGURE_ENV += PYTHON="$(PYTHON)"
CONFIGURE_ENV += PYTHONDIR="$(PYTHON_LIB)"
CONFIGURE_ENV += PYTHONARCHDIR="$(PYTHON_VENDOR_PACKAGES)"
# configure the unpacked source
COMPONENT_CONFIGURE_TARGETS ?= configure
$(BUILD_DIR_32)/.configured: BITS=32
$(BUILD_DIR_64)/.configured: BITS=64
$(BUILD_DIR)/$(MACH32)-%/.configured: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.configured: BITS=64
$(foreach pyver, $(PYTHON_VERSIONS), \
$(eval $(BUILD_DIR)/%-$(pyver)/.configured: PYTHON_VERSION=$(pyver)) \
)
$(BUILD_DIR)/%/.configured: $(SOURCE_DIR)/.prep
$(RM) -r $(@D) ; $(MKDIR) $(@D)
$(CLONEY) $(SOURCE_DIR) $(@D)
$(COMPONENT_PRE_CONFIGURE_ACTION)
(cd $(@D) ; $(ENV) $(CONFIGURE_ENV) \
$(WAF) $(COMPONENT_CONFIGURE_TARGETS) $(CONFIGURE_OPTIONS))
$(COMPONENT_POST_CONFIGURE_ACTION)
$(TOUCH) $@
# build the configured source
COMPONENT_BUILD_TARGETS ?= build
$(BUILD_DIR_32)/.built: BITS=32
$(BUILD_DIR_64)/.built: BITS=64
$(BUILD_DIR)/$(MACH32)-%/.built: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.built: BITS=64
$(foreach pyver, $(PYTHON_VERSIONS), \
$(eval $(BUILD_DIR)/%-$(pyver)/.built: PYTHON_VERSION=$(pyver)) \
)
$(BUILD_DIR)/%/.built: $(BUILD_DIR)/%/.configured
$(COMPONENT_PRE_BUILD_ACTION)
(cd $(@D) ; $(ENV) $(COMPONENT_BUILD_ENV) \
$(WAF) $(COMPONENT_BUILD_TARGETS) $(COMPONENT_BUILD_ARGS))
$(COMPONENT_POST_BUILD_ACTION)
ifeq ($(strip $(PARFAIT_BUILD)),yes)
-$(PARFAIT) $(@D)
endif
$(TOUCH) $@
# If BUILD_STYLE is set, provide a default configure target.
ifeq ($(strip $(BUILD_STYLE)),waf)
configure: $(CONFIGURE_$(MK_BITS))
endif
# install the built source into a prototype area
COMPONENT_INSTALL_ARGS += --destdir=$(PROTO_DIR)
COMPONENT_INSTALL_ARGS += $(COMPONENT_INSTALL_ARGS.$(BITS))
$(BUILD_DIR_32)/.installed: BITS=32
$(BUILD_DIR_64)/.installed: BITS=64
$(BUILD_DIR)/$(MACH32)-%/.installed: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.installed: BITS=64
$(foreach pyver, $(PYTHON_VERSIONS), \
$(eval $(BUILD_DIR)/%-$(pyver)/.installed: PYTHON_VERSION=$(pyver)) \
)
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_INSTALL_ACTION)
(cd $(@D) ; $(ENV) $(COMPONENT_INSTALL_ENV) \
$(WAF) $(COMPONENT_INSTALL_TARGETS) $(COMPONENT_INSTALL_ARGS))
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
# test the built source
COMPONENT_TEST_CMD = $(WAF)
COMPONENT_TEST_TARGETS = test
$(BUILD_DIR_32)/.tested-and-compared: BITS=32
$(BUILD_DIR_64)/.tested-and-compared: BITS=64
$(BUILD_DIR)/$(MACH32)-%/.tested-and-compared: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.tested-and-compared: BITS=64
$(foreach pyver, $(PYTHON_VERSIONS), \
$(eval $(BUILD_DIR)/%-$(pyver)/.tested-and-compared: PYTHON_VERSION=$(pyver)) \
)
$(BUILD_DIR)/%/.tested-and-compared: $(BUILD_DIR)/%/.built
$(RM) -rf $(COMPONENT_TEST_BUILD_DIR)
$(MKDIR) $(COMPONENT_TEST_BUILD_DIR)
$(COMPONENT_PRE_TEST_ACTION)
-(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_TARGETS) $(COMPONENT_TEST_ARGS)) \
&> $(COMPONENT_TEST_OUTPUT)
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CREATE_TRANSFORMS)
$(COMPONENT_TEST_PERFORM_TRANSFORM)
$(COMPONENT_TEST_COMPARE)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
$(BUILD_DIR_32)/.tested: BITS=32
$(BUILD_DIR_64)/.tested: BITS=64
$(BUILD_DIR)/$(MACH32)-%/.tested: BITS=32
$(BUILD_DIR)/$(MACH64)-%/.tested: BITS=64
$(foreach pyver, $(PYTHON_VERSIONS), \
$(eval $(BUILD_DIR)/%-$(pyver)/.tested: PYTHON_VERSION=$(pyver)) \
)
$(BUILD_DIR)/%/.tested: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_TEST_ACTION)
(cd $(COMPONENT_TEST_DIR) ; \
$(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \
$(COMPONENT_TEST_CMD) \
$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS))
$(COMPONENT_POST_TEST_ACTION)
$(COMPONENT_TEST_CLEANUP)
$(TOUCH) $@
# Test the installed packages. The targets above depend on .built which
# means $(CLONEY) has already run. System-test needs cloning but not
# building; thus ideally, we would want to depend on .cloned here and below,
# but since we don't have that, we depend on .prep and run $(CLONEY) here.
$(BUILD_DIR)/%/.system-tested-and-compared: $(SOURCE_DIR)/.prep
$(RM) -rf $(COMPONENT_TEST_BUILD_DIR)
$(MKDIR) $(COMPONENT_TEST_BUILD_DIR)
$(CLONEY) $(SOURCE_DIR) $(@D)
$(COMPONENT_PRE_SYSTEM_TEST_ACTION)
-(cd $(COMPONENT_SYSTEM_TEST_DIR) ; \
$(COMPONENT_SYSTEM_TEST_ENV_CMD) $(COMPONENT_SYSTEM_TEST_ENV) \
$(COMPONENT_SYSTEM_TEST_CMD) \
$(COMPONENT_SYSTEM_TEST_ARGS) $(COMPONENT_SYSTEM_TEST_TARGETS)) \
&> $(COMPONENT_TEST_OUTPUT)
$(COMPONENT_POST_SYSTEM_TEST_ACTION)
$(COMPONENT_TEST_CREATE_TRANSFORMS)
$(COMPONENT_TEST_PERFORM_TRANSFORM)
$(COMPONENT_TEST_COMPARE)
$(COMPONENT_SYSTEM_TEST_CLEANUP)
$(TOUCH) $@
$(BUILD_DIR)/%/.system-tested: $(SOURCE_DIR)/.prep
$(CLONEY) $(SOURCE_DIR) $(@D)
$(COMPONENT_PRE_SYSTEM_TEST_ACTION)
(cd $(COMPONENT_SYSTEM_TEST_DIR) ; \
$(COMPONENT_SYSTEM_TEST_ENV_CMD) $(COMPONENT_SYSTEM_TEST_ENV) \
$(COMPONENT_SYSTEM_TEST_CMD) \
$(COMPONENT_SYSTEM_TEST_ARGS) $(COMPONENT_SYSTEM_TEST_TARGETS))
$(COMPONENT_POST_SYSTEM_TEST_ACTION)
$(COMPONENT_SYSTEM_TEST_CLEANUP)
$(TOUCH) $@
ifeq ($(strip $(PARFAIT_BUILD)),yes)
parfait: build
else
parfait:
$(MAKE) PARFAIT_BUILD=yes parfait
endif
clean::
$(RM) -r $(BUILD_DIR) $(PROTO_DIR)

View file

@ -1,145 +0,0 @@
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"). You may
# only use this file in accordance with the terms of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright (c) 2017, Aurelien Larcher. All rights reserved.
#
# All X11 components should now prefer 64-bits unless specified
PREFERRED_BITS=64
#
# General macros
#
PKG_X11_VERSION=7.7
X11_COMPONENTS_DIR = $(WS_COMPONENTS)/x11
#
# Provide macros for commonly used urls
#
XORG_PROJECT_URL = https://www.x.org/
XORG_BASE_URL = https://www.x.org/releases/individual
SOLARIS_XORG_URL = https://github.com/oracle/solaris-userland
XORG_APP_BASE_URL = $(XORG_BASE_URL)/app
XORG_DATA_BASE_URL = $(XORG_BASE_URL)/data
XORG_DOC_BASE_URL = $(XORG_BASE_URL)/doc
XORG_DRIVER_BASE_URL = $(XORG_BASE_URL)/driver
XORG_FONT_BASE_URL = $(XORG_BASE_URL)/font
XORG_LIB_BASE_URL = $(XORG_BASE_URL)/lib
XORG_PROTO_BASE_URL = $(XORG_BASE_URL)/proto
XORG_TEST_BASE_URL = $(XORG_BASE_URL)/test
XORG_UTIL_BASE_URL = $(XORG_BASE_URL)/util
XORG_XCB_BASE_URL = $(XORG_BASE_URL)/xcb
XORG_XSERVER_BASE_URL = $(XORG_BASE_URL)/xserver
#
# Default X11 component values
#
COMPONENT_X11_DEFAULTS?= yes
ifeq ($(COMPONENT_X11_DEFAULTS),yes)
COMPONENT_PROJECT_URL ?= $(XORG_PROJECT_URL)
COMPONENT_SRC ?= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE ?= $(COMPONENT_SRC).tar.bz2
ifneq ($(strip $(X11_CATEGORY)),)
COMPONENT_ARCHIVE_URL ?= $(XORG_$(X11_CATEGORY)_BASE_URL)/$(COMPONENT_ARCHIVE)
endif
endif
#
# Set defaults for X11 applications
#
ifeq ($(strip $(X11_CATEGORY)),APP)
BUILD_BITS = 64
PATH=$(PATH.gnu)
COMPONENT_CLASSIFICATION = System/X11
COMPONENT_LICENSE = MIT License
endif
#
# Set defaults for X11 libraries
#
ifeq ($(strip $(X11_CATEGORY)),LIB)
BUILD_BITS = 32_and_64
PATH=$(PATH.gnu)
COMPONENT_CLASSIFICATION = System/X11
COMPONENT_LICENSE = MIT License
endif
#
# Set defaults for X11 drivers
#
ifeq ($(strip $(X11_CATEGORY)),DRIVER)
BUILD_BITS = 64
PATH=$(PATH.gnu)
ifneq (,$(findstring video,$(COMPONENT_NAME)))
COMPONENT_CLASSIFICATION = Drivers/Display
else
COMPONENT_CLASSIFICATION = Drivers/Other Peripherals
endif
COMPONENT_LICENSE = MIT License
COMPONENT_LICENSE_FILE = COPYING
COMPONENT_PREP_ACTION = ( cd $(@D) && \
libtoolize --automake --copy --force && \
aclocal && \
autoheader && \
automake -a -f -c && \
autoconf )
endif
#
# Set no test target by default
#
TEST_TARGET = $(NO_TESTS)
#
# Define library and modules install paths
#
XORG_LIBDIR.32 = $(USRLIBDIR)/xorg
XORG_LIBDIR.64 = $(USRLIBDIR)/xorg/$(MACH64)
XORG_LIBDIR = $(XORG_LIBDIR.$(BITS))
X11_SERVERMOD_SUBDIR.32=
X11_SERVERMOD_SUBDIR.64=/$(MACH64)
X11_SERVERMOD_SUBDIR=$(X11_SERVERMOD_SUBDIR.$(BITS))
X11_SERVERLIBS_DIR = $(USRLIBDIR)/xorg$(X11_SERVERMOD_SUBDIR)
X11_SERVERMODS_DIR = $(USRLIBDIR)/xorg/modules$(X11_SERVERMOD_SUBDIR)
X11_SERVERMODS_DRI_DIR = $(USRLIBDIR)/xorg/modules/dri$(X11_SERVERMOD_SUBDIR)
X11_SERVERMODS_DRIVERS_DIR = $(USRLIBDIR)/xorg/modules/drivers$(X11_SERVERMOD_SUBDIR)
X11_SERVERMODS_EXTENSIONS_DIR = $(USRLIBDIR)/xorg/modules/extensions$(X11_SERVERMOD_SUBDIR)
x11_SERVERMODS_INPUT_DIR = $(USRLIBDIR)/xorg/modules/input$(X11_SERVERMOD_SUBDIR)
X11_SERVERMODS_MULTIMEDIA_DIR = $(USRLIBDIR)/xorg/modules/multimedia$(X11_SERVERMOD_SUBDIR)
#
# Define MESA paths
#
MESA_XSERVERLIBS_DIR = $(USRLIBDIR)/mesa$(X11_SERVERMOD_SUBDIR)
MESA_XSERVERMODS_DIR = $(USRLIBDIR)/mesa/modules$(X11_SERVERMOD_SUBDIR)
MESA_XSERVERMODS_EXTENSIONS_DIR = $(USRLIBDIR)/mesa/modules/extensions$(X11_SERVERMOD_SUBDIR)
#
# Define PKG macros
#
PKG_MACROS += X11PKGVERS=$(PKG_X11_VERSION)
#
# Default build dependencies
#
REQUIRED_PACKAGES += x11/header/x11-protocols
REQUIRED_PACKAGES += developer/build/autoconf/xorg-macros

View file

@ -2,7 +2,7 @@
name = "userland" name = "userland"
version = "0.1.1" version = "0.1.1"
authors = ["Till Wegmueller <toasterson@gmail.com>"] authors = ["Till Wegmueller <toasterson@gmail.com>"]
edition = "2018" edition = "2021"
license-file = "LICENSE" license-file = "LICENSE"
description = "Helper tool for IPS package development" description = "Helper tool for IPS package development"
@ -12,11 +12,16 @@ description = "Helper tool for IPS package development"
anyhow = "1.0.56" anyhow = "1.0.56"
thiserror = "1.0.30" thiserror = "1.0.30"
pest_derive = "2.1.0" pest_derive = "2.1.0"
maplit = "0.1.6" maplit = "1.0.2"
pest = "2.1.0" pest = "2.1.0"
reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls"] } reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls"] }
semver = "0.11.0" semver = "1.0.13"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0" serde_json = "1.0"
regex = "1" regex = "1"
lazy_static = "1" lazy_static = "1"
url = { version = "2.2.2", features = ["serde"] }
[dependencies.openssl]
version = "*"
features = ["vendored"]

120
userland/src/component.rs Normal file
View file

@ -0,0 +1,120 @@
use anyhow::{bail, Result};
use semver::Version;
use std::collections::HashMap;
use url::Url;
use crate::Makefile;
#[derive(Debug, Clone)]
pub struct Component {
pub version: Version,
pub revision: Option<i32>,
pub sources: HashMap<String, Source>,
pub options: Vec<ComponentOption>,
pub build_style: BuildStyle,
}
#[derive(Debug, Clone)]
pub enum BuildStyle {
Configure,
Cmake,
Make,
Meson,
Custom,
}
#[derive(Debug, Clone)]
pub struct ComponentOption {
pub platform: ComponentOptionPlatform,
pub opt: String,
}
#[derive(Debug, Clone)]
pub enum ComponentOptionPlatform {
All,
Intel,
Sparc,
Arm,
}
#[derive(Debug, Clone)]
pub enum Source {
GitSource {
url: Url,
},
ArchiveSource {
version: Version,
hash: Option<String>,
url: Url,
},
}
impl Component {
pub fn new_from_makefile(m: &Makefile) -> Result<Self> {
let opts = if let Some(opts) = m.variables.get("CONFIGURE_OPTIONS") {
opts.values
.clone()
.into_iter()
.map(|v| ComponentOption {
platform: ComponentOptionPlatform::All,
opt: v,
})
.collect()
} else {
vec![]
};
let ver = semver::Version::parse(
&m.get_first_value_of_variable_by_name("COMPONENT_VERSION")
.ok_or(anyhow::anyhow!("missing component version"))?,
)?;
let revision = m
.get_first_value_of_variable_by_name("COMPONENT_REVISION")
.map(|s| s.parse().unwrap_or(0));
let component_src = m.get_first_value_of_variable_by_name("COMPONENT_SRC");
let component_archive_url = m.get_first_value_of_variable_by_name("COMPONENT_ARCHIVE_URL");
let git_url = m.get_first_value_of_variable_by_name("GIT_URL");
let component_archive_hash =
m.get_first_value_of_variable_by_name("COMPONENT_ARCHIVE_HASH");
let build_style = if let Some(style) = m.get_first_value_of_variable_by_name("BUILD_STYLE")
{
let s = match style.as_str() {
"justmake" => BuildStyle::Make,
"cmake" => BuildStyle::Cmake,
"meson" => BuildStyle::Meson,
"custom" => BuildStyle::Custom,
"configure" | _ => BuildStyle::Configure,
};
//TODO: Custom build style variable checks
// something like guess_buildstyle_from_options
s
} else {
BuildStyle::Configure
};
let src = if let (Some(name), Some(url)) = (component_src.clone(), component_archive_url) {
(
name,
Source::ArchiveSource {
version: ver.clone(),
hash: component_archive_hash,
url: url.parse()?,
},
)
} else if let (Some(name), Some(url)) = (component_src, git_url) {
(name, Source::GitSource { url: url.parse()? })
} else {
bail!("no source found in makefile")
};
Ok(Self {
version: ver,
revision: revision,
sources: HashMap::from([src]),
options: opts,
build_style: build_style,
})
}
}

View file

@ -1,23 +1,20 @@
mod component;
pub mod repology; pub mod repology;
extern crate pest; use anyhow::{anyhow, Context, Result};
extern crate maplit;
#[macro_use]
extern crate pest_derive;
use anyhow::{anyhow, Result};
use std::collections::{HashMap};
use std::env;
use std::io::Error as IOError;
use std::fs::{read_to_string, canonicalize};
use pest::iterators::{Pairs};
use std::path::{Path, PathBuf};
use pest::Parser;
use thiserror::Error;
use lazy_static::lazy_static; use lazy_static::lazy_static;
use pest::iterators::Pairs;
use pest::Parser;
use pest_derive::Parser;
use regex::Regex; use regex::Regex;
use std::collections::HashMap;
use std::env;
use std::fs::{canonicalize, read_to_string};
use std::io::Error as IOError;
use std::path::{Path, PathBuf};
use thiserror::Error;
pub use component::*;
#[derive(Parser)] #[derive(Parser)]
#[grammar = "makefile.pest"] #[grammar = "makefile.pest"]
@ -41,7 +38,7 @@ pub struct MakefileVariable {
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
pub enum VariableMode { pub enum VariableMode {
Add, Add,
Set Set,
} }
impl Default for VariableMode { impl Default for VariableMode {
@ -63,10 +60,12 @@ pub enum ParserError {
impl Makefile { impl Makefile {
pub fn parse_single_file<P: AsRef<Path>>(path: P) -> Result<Self> { pub fn parse_single_file<P: AsRef<Path>>(path: P) -> Result<Self> {
let content = read_to_string(&path)?; let content = read_to_string(&path).context(format!(
let mut m = parse_string(content).map_err(|err| "cannot read {0} to string",
anyhow!(ParserError::MakefileReadError{file: path.as_ref().to_path_buf(), reason: anyhow!(err)}) path.as_ref().display()
)?; ))?;
let mut m =
parse_string(content).context(format!("cannot parse {0}", path.as_ref().display()))?;
m.path = path.as_ref().into(); m.path = path.as_ref().into();
Ok(m) Ok(m)
} }
@ -149,8 +148,8 @@ impl Makefile {
}; };
for incl in includes { for incl in includes {
let incl_path = canonicalize(&incl).map_err(|err| let incl_path = canonicalize(&incl)
anyhow!(ParserError::IncludeNotFound(incl, err)))?; .map_err(|err| anyhow!(ParserError::IncludeNotFound(incl, err)))?;
let m = Self::parse_single_file(incl_path)?; let m = Self::parse_single_file(incl_path)?;
included_makefiles.push(m); included_makefiles.push(m);
} }
@ -175,7 +174,8 @@ impl Makefile {
let nested_var_name = nested_var.as_str().replace("$(", "").replace(")", ""); let nested_var_name = nested_var.as_str().replace("$(", "").replace(")", "");
if let Some(resolved_nested_var) = self.get(&nested_var_name) { if let Some(resolved_nested_var) = self.get(&nested_var_name) {
let mut new_string = vars_copy[i].clone(); let mut new_string = vars_copy[i].clone();
new_string = new_string.replacen(nested_var.as_str(), &resolved_nested_var, 1); new_string =
new_string.replacen(nested_var.as_str(), &resolved_nested_var, 1);
vars_copy[i] = new_string; vars_copy[i] = new_string;
} }
} }
@ -214,7 +214,10 @@ fn parse_string(content: String) -> Result<Makefile> {
Rule::makefile => { Rule::makefile => {
parse_makefile(p.into_inner(), &mut m)?; parse_makefile(p.into_inner(), &mut m)?;
} }
_ => panic!("unexpected rule {:?} inside pair expected manifest", p.as_rule()), _ => panic!(
"unexpected rule {:?} inside pair expected manifest",
p.as_rule()
),
} }
} }
@ -249,7 +252,10 @@ fn parse_include(include_pair: Pairs<crate::Rule>, m: &mut Makefile) -> Result<(
Rule::variable_value => { Rule::variable_value => {
m.includes.push(p.as_str().to_string()); m.includes.push(p.as_str().to_string());
} }
_ => panic!("unexpected rule {:?} inside include rule expected variable_value", p.as_rule()) _ => panic!(
"unexpected rule {:?} inside include rule expected variable_value",
p.as_rule()
),
} }
} }
Ok(()) Ok(())
@ -265,7 +271,10 @@ fn parse_define(define_pair: Pairs<crate::Rule>, m: &mut Makefile) -> Result<()>
Rule::define_value => { Rule::define_value => {
var.1.values.push(p.as_str().to_string()); var.1.values.push(p.as_str().to_string());
} }
_ => panic!("unexpected rule {:?} inside define rule expected variable_name, define_value", p.as_rule()), _ => panic!(
"unexpected rule {:?} inside define rule expected variable_name, define_value",
p.as_rule()
),
} }
} }
m.variables.insert(var.0, var.1); m.variables.insert(var.0, var.1);

View file

@ -1,9 +1,9 @@
extern crate reqwest; extern crate reqwest;
use reqwest::*;
use anyhow::Result; use anyhow::Result;
use reqwest::*;
use semver::Version; use semver::Version;
use serde::{Serialize, Deserialize}; use serde::{Deserialize, Serialize};
const BASE_URL: &str = "https://repology.org/api/v1/"; const BASE_URL: &str = "https://repology.org/api/v1/";
@ -21,28 +21,29 @@ pub struct Package {
licenses: Option<Vec<String>>, licenses: Option<Vec<String>>,
maintainers: Option<Vec<String>>, maintainers: Option<Vec<String>>,
www: Option<Vec<String>>, www: Option<Vec<String>>,
downloads: Option<Vec<String>> downloads: Option<Vec<String>>,
} }
pub fn project(package: &str) -> Result<Vec<Package>> { pub fn project(package: &str) -> Result<Vec<Package>> {
let url = Url::parse(&format!("{}/project/{}", BASE_URL, package))?;
let url = Url::parse(&format!("{}/project/{}",BASE_URL, package))?; let json = reqwest::blocking::get(url)?.json::<Vec<Package>>()?;
let json = reqwest::blocking::get(url)?
.json::<Vec<Package>>()?;
return Ok(json); return Ok(json);
} }
pub fn find_newest_version(package: &str) -> Result<String> { pub fn find_newest_version(package: &str) -> Result<String> {
let pkgs = project(package)?; let pkgs = project(package)?;
let version_res: Result<Vec<Version>> = pkgs.iter().map(|p| -> Result<Version> { let version_res: Result<Vec<Version>> = pkgs
.iter()
.map(|p| -> Result<Version> {
let v = Version::parse(&p.version); let v = Version::parse(&p.version);
if v.is_ok() { if v.is_ok() {
return Ok(v?); return Ok(v?);
} }
Ok(Version::new(0,0,1)) Ok(Version::new(0, 0, 1))
}).collect(); })
.collect();
let mut versions = version_res?; let mut versions = version_res?;