~n3npq/lsb/printing-test

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# XXX We should play the usual tricks defining stuff here and building
# XXX a specfile from this info, but not yet: for now keep in sync
PACKAGE=lsb-test-printing
VERSION=5.0.1
BUILDNO=4

# CUPS version, tarball
CUPSVER=1.1.23
CUPS_TARBALL=cups-$(CUPSVER)-source.tar.bz2

# opvpnull driver
OPVPVER=0.0.1
OPVP_TARBALL=opvpnull-$(OPVPVER).tar.gz

# hplip (hpijs)
HPLIPVER=2.8.12
HPLIP_TARBALL=hplip-$(HPLIPVER).tar.gz

# for pkgchk
DEPS=-d lsb-tet3-lite

# Derive date string for daily snapshots
ISO_DATE=$(shell date +"%Y%m%d")
PWD=$(shell pwd)

TARBALL=$(PACKAGE)-$(VERSION).tar.gz
FULL_PACKAGE_NAME=$(PACKAGE)-$(VERSION)
RPM_BINARY_NAME=$(FULL_PACKAGE_NAME)-$(RELEASE).$(RPM_BUILD_ARCH).rpm
RPM_SOURCE_NAME=$(FULL_PACKAGE_NAME)-$(RELEASE).src.rpm

# Temporary build directory
TMP_BUILD_DIR=/tmp/$(FULL_PACKAGE_NAME)

# Handle different version generation for snapshots than for official builds
# OFFICIAL_RELEASE should be set to the tag to extract from CVS
ifdef OFFICIAL_RELEASE
# EXPORT_TAG should be set to the bzr revisionspec to use
RELEASE=$(BUILDNO)
EXPORT_TAG=--revision=$(OFFICIAL_RELEASE)
else
RELEASE=0.$(ISO_DATE).$(BUILDNO)
EXPORT_TAG=
endif

# Determine whether to use rpm or rpmbuild to build the packages
ifeq ($(wildcard /usr/bin/rpmbuild),)
	RPM_BUILD_CMD=rpm
else
	RPM_BUILD_CMD=rpmbuild 
endif

# Get RPM configuration information
# NOTE THAT RPM_TMP_BUILD_DIR IS DELETED AFTER THE RPM BUILD IS COMPLETED
# The rpmrc file translates targets where there are multiple choices per
# architecture. On build, the derived RPM_BUILD_ARCH is given as the target
RCFILELIST="/usr/lib/rpm/rpmrc:./rpmrc"
MACROFILELIST="/usr/lib/rpm/macros:/etc/rpm:~/.rpmmacros:./rpmmacros"
RPM_TMP_BUILD_DIR=$(HOME)/tmp/rpm-build
RPM_BUILD_ARCH=$(shell rpm --rcfile ${RCFILELIST} --eval=%{_target_cpu})
RPM_BINARY_DIR=$(RPM_TMP_BUILD_DIR)/RPMS/$(RPM_BUILD_ARCH)
RPM_SRPM_DIR=$(RPM_TMP_BUILD_DIR)/SRPMS

# Override this on the command line to use a different repo
BZRTREES?=http://bzr.linuxfoundation.org/lsb/devel
BZR_MODULE=printing-test
BZR_USE_LOCAL?=no
ifeq ($(BZR_USE_LOCAL),yes)
BZR_MODULE_PATH=$(shell pwd)/../..
else
BZR_MODULE_PATH=$(BZRTREES)/$(BZR_MODULE)
endif

# Default target
ifndef BUILD_NO_DEB
all: rpm_package deb_package
else
all: rpm_package
endif

clean:
	@rm -f *.rpm *.deb $(TARBALL) $(PACKAGE).spec journal.*

tarball: $(TARBALL) $(CUPS_TARBALL) $(OPVP_TARBALL) $(HPLIP_TARBALL)

# Specfile generation rule
%.spec : %.spec.sed
	sed -e "s#@CUPSVER@#`echo $(CUPSVER)`#" -e "s#@OPVPVER@#`echo $(OPVPVER)`#" -e "s#@HPLIPVER@#`echo $(HPLIPVER)`#" -e "s#@VERSION@#`echo $(VERSION)`#" -e "s#@RELEASE@#`echo $(RELEASE)`#" < $< > $@

deb_package: rpm_package
	@fakeroot alien -cdk $(RPM_BINARY_NAME)

rpm_package: tarball $(RPM_BINARY_NAME) $(RPM_SOURCE_NAME) 

list_uploadable:
	@echo $(RPM_BINARY_NAME)
ifndef BUILD_NO_DEB
	@ls *.deb
endif

$(RPM_BINARY_NAME) $(RPM_SOURCE_NAME): $(PACKAGE).spec
	@mkdir -p $(RPM_TMP_BUILD_DIR)/BUILD
	@mkdir -p $(RPM_TMP_BUILD_DIR)/RPMS
	@mkdir -p $(RPM_TMP_BUILD_DIR)/SRPMS
ifdef SIGN_PACKAGES
	@expect -c 'set timeout -1' -c 'spawn $(RPM_BUILD_CMD) --sign --rcfile ${RCFILELIST} --macros=$(MACROFILELIST) --define=_sourcedir\ $(PWD) --define=_topdir\ $(RPM_TMP_BUILD_DIR) --define=_target_cpu\ $(RPM_BUILD_ARCH) -ba $(PACKAGE).spec' -c 'expect -ex "Enter pass phrase:"' -c 'send "\n"' -c 'expect "Executing(%clean)"' -c 'expect "exit 0"' -c 'send "\n"'
else
	@$(RPM_BUILD_CMD) --rcfile ${RCFILELIST} --macros=$(MACROFILELIST) --define="_sourcedir $(PWD)" --define="_topdir $(RPM_TMP_BUILD_DIR)" --define="_target_cpu $(RPM_BUILD_ARCH)" -ba $(PACKAGE).spec
endif
	@mv $(RPM_SRPM_DIR)/$(RPM_SOURCE_NAME) .
	@mv $(RPM_BINARY_DIR)/$(RPM_BINARY_NAME) .
	@rm -rf $(RPM_TMP_BUILD_DIR)
	@rm -f ../../sources/*.patch

pkgchk: $(RPM_BINARY_NAME)
	/opt/lsb/bin/lsbpkgchk -L lsb $(DEPS) -t $(RPM_BINARY_NAME)

$(TARBALL):
	if [ -e $(TMP_BUILD_DIR) ]; then rm -rf $(TMP_BUILD_DIR); fi
	bzr export $(EXPORT_TAG) $(TMP_BUILD_DIR) $(BZR_MODULE_PATH)
	# these 2 are from runtime test, no need to duplicate in this tree
	( cd $(TMP_BUILD_DIR)/sources/printing-test/LIB && bzr cat $(BZRTREES)/runtime-test/modules/lsb-fhs/SRC/common/lsblib/lsbfuncs.sh > lsbfuncs.sh )
	( cd $(TMP_BUILD_DIR)/sources/printing-test/LIB && bzr cat $(BZRTREES)/runtime-test/modules/lsb-fhs/SRC/common/lsblib/shfuncs.sh > shfuncs.sh )
	# need lsb_issymlink for the fhs /usr/share/ppd test
	( cd $(TMP_BUILD_DIR)/sources/printing-test/BIN && bzr cat $(BZRTREES)/runtime-test/modules/lsb-fhs/SRC/common/lsbutils/lsb_issymlink.c > lsb_issymlink.c )
	( cd $(TMP_BUILD_DIR)/sources/printing-test/BIN && bzr cat $(BZRTREES)/runtime-test/modules/lsb-fhs/SRC/common/lsbutils/lsb-fhs-ts.h > lsb-fhs-ts.h )
	( cd $(TMP_BUILD_DIR)/sources && tar -czf $(PWD)/$(PACKAGE)-$(VERSION).tar.gz printing-test )
	rm -rf $(TMP_BUILD_DIR)

$(CUPS_TARBALL):
	# get the upstream CUPS tarball
	wget -O $@ https://github.com/apple/cups/releases/download/release-$(CUPSVER)/$(CUPS_TARBALL) || \
	  wget -O $@ http://ftp.linuxfoundation.org/pub/lsb/impl/packages/$(CUPS_TARBALL)
$(OPVP_TARBALL):
	# and the opvpnull driver
	wget -O $@ http://osdn.dl.sourceforge.jp/opfc/18974/$(OPVP_TARBALL) || \
	  wget -O $@ http://ftp.linuxfoundation.org/pub/lsb/impl/packages/$(OPVP_TARBALL)
$(HPLIP_TARBALL):
	# and the hplip tarball
	wget -O $@ http://downloads.sourceforge.net/project/hplip/hplip/2.8.12/$(HPLIP_TARBALL)?use_mirror=voxel || \
	  wget -O $@ http://ftp.linuxfoundation.org/pub/lsb/impl/packages/$(HPLIP_TARBALL)

.PHONY : tarball rpm_package