From 434c9d1997c6b4e8efff4755511f5430ba8f7efe Mon Sep 17 00:00:00 2001 From: Igor Pashev Date: Mon, 29 Oct 2012 15:36:38 +0400 Subject: Add support for creating deb packages --- rules/deb.mk | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++ rules/ips-manifest.mk | 24 ++++++++-------- 2 files changed, 92 insertions(+), 12 deletions(-) create mode 100644 rules/deb.mk (limited to 'rules') diff --git a/rules/deb.mk b/rules/deb.mk new file mode 100644 index 0000000..15053f5 --- /dev/null +++ b/rules/deb.mk @@ -0,0 +1,80 @@ +# +# 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 http://www.opensource.org/licenses/CDDL-1.0 +# 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. +# 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, Nexenta Systems, Inc. All rights reserved. +# + +# include guard: +ifeq (,$(__deb_mk)) + +include /usr/share/cibs/rules/ips-manifest.mk + +debmaker := /usr/share/cibs/scripts/debmaker.pl + +DEBVERSION ?= ips + +pkg-define += -D COMPONENT_VERSION="$(ips-version)" + +debsdir := ./debs + +deb-build-depends = \ + $(subst /,-, \ + $(subst pkg:/,,$(build-depends)) \ + ) + + +pre-deb: depend-stamp + +deb-stamp: pre-deb + [ -n "$(debsdir)" ] + [ -d "$(debsdir)" ] || mkdir -p "$(debsdir)" + $(root-cmd) $(debmaker) \ + -V "$(DEBVERSION)" \ + -S "$(name)" \ + -O "$(debsdir)" \ + $(pkg-define) \ + $(pkg-protos) \ + $(depend-manifests) \ + + touch $@ + +deb: deb-stamp + +check-build-dep-stamp: check-deb-build-dep-stamp + +# issue 'make d=' to skip dependency checking: +check-deb-build-dep-stamp: d=true +check-deb-build-dep-stamp: + @[ -z "$d" ] || [ -z "$(build-depends)" ] || dpkg -l $(deb-build-depends) || \ + (echo "type '$(MAKE) build-dep' to install build dependencies"; \ + echo "or add 'd=' to command, e. g. '$(MAKE) build d='"; \ + false) + touch $@ + + +# Install build dependencies: +build-dep: + $(root-cmd) apt-get install $(deb-build-depends) + +.PHONY: deb build-dep pre-deb + +__deb_mk := included +endif + diff --git a/rules/ips-manifest.mk b/rules/ips-manifest.mk index 3d20e1d..7eb9fdf 100644 --- a/rules/ips-manifest.mk +++ b/rules/ips-manifest.mk @@ -34,26 +34,26 @@ ips-version = $(version) # Substitutions in IPS manifest: makefile-vars := $(shell sed -n 's/^ *\([a-zA-Z][-_0-9a-zA-Z]*\) *[:?]*=.*$$/\1/p' Makefile | sort -u) -pkg-define = $(foreach _,$(makefile-vars),-D$(_)="$($(_))") -pkg-define += -Dips-version="$(ips-version)" +pkg-define = $(foreach _,$(makefile-vars),-D $(_)="$($(_))") +pkg-define += -D ips-version="$(ips-version)" pkg-define += \ --DMACH="$(mach)" \ --DMACH32="$(mach32)" \ --DMACH64="$(mach64)" \ --Dmach="$(mach)" \ --Dmach32="$(mach32)" \ --Dmach64="$(mach64)" \ --Dbuild32="$(build32)" \ --Dbuild64="$(build64)" \ +-D MACH="$(mach)" \ +-D MACH32="$(mach32)" \ +-D MACH64="$(mach64)" \ +-D mach="$(mach)" \ +-D mach32="$(mach32)" \ +-D mach64="$(mach64)" \ +-D build32="$(build32)" \ +-D build64="$(build64)" \ # Add $(protodir.) to use in manifest: # file $(protodir.64) path=usr/include/header.64.h -pkg-define += $(foreach _,$(variants),-Dprotodir.$(_)="$(protodir-base.$(_))") +pkg-define += $(foreach _,$(variants),-D protodir.$(_)="$(protodir-base.$(_))") # Same for $(builddir.xxx): -pkg-define += $(foreach _,$(variants),-Dbuilddir.$(_)="$(builddir-base.$(_))") +pkg-define += $(foreach _,$(variants),-D builddir.$(_)="$(builddir-base.$(_))") # Where to find files: pkg-protos = $(foreach _,$(variants),-d "$(protodir.$(_))") -- cgit v1.2.3