# vim: sw=4:
# A wider view of where we are
SubDir AllP4 p4-python ;
# Import P4 rules
SubRules AllP4 p4 : P4 ;
# Import packaging rules
SubRules AllP4 packaging : PACKAGING ;
# Back to where we are
SubDir AllP4 p4-python ;
# We need pic builds of P4API on Linux x86_64
if $(OS) = LINUX && $(OSPLAT:L) = x86_64
{
TYPE = pic ;
}
# Default to standard builds
PKG_TYPE ?= standard ;
# Pick a python, any python
PYTHON ?= python ;
# Locate our API build
P4BINTOKENS = p4-bin bin.$(OS:L)$(OSVER:EL)$(OSPLAT:EL) $(TYPE) ;
P4BIN = [ FSubDirPath AllP4 $(P4BINTOKENS) ] ;
SEARCH on p4api.tgz = $(P4BIN) ;
ALL_LOCATE_TARGET = $(P4BIN) ;
rule P4Python
{
local _vtokens = $(RELEASE[1-2]) $(PATCHLEVEL) ;
local _version = $(_vtokens:J=.) ;
# p4python - Overall target
# p4python.tgz - Source distribution
local _target = $(<) ;
local _sources = [ FGristFiles $(>) ] ;
local _tgz = $(_target:S=.tgz) ;
Depends all : $(_target) ;
NotFile $(_target) ;
Depends $(_target) : $(_tgz) ;
Depends $(_tgz) : $(_sources) ;
Depends $(_tgz) : p4api.tgz ;
SEARCH on $(_sources) = $(SEARCH_SOURCE) ;
LOCATE on $(_tgz) = $(EXEC) ;
Clean clean : $(_tgz) ;
NAME on $(_tgz) = $(_target) ;
VERSION on $(_tgz) = $(_version) ;
DIST_NAME on $(_tgz) = $(_target)-$(_version).tar.gz ;
local _s ;
for _s in $(_sources)
{
if $(_s:BS) = setup.py
{
# This is the location we build from. Should be the current
# directory, but may not be if this is part of a larger build.
TOPDIR on $(_tgz) = $(SEARCH_SOURCE) ;
}
}
P4PythonSourceDist $(_tgz) : p4api.tgz ;
}
actions together P4PythonSourceDist
{
set -e
buildtop=`pwd`
cd $(TOPDIR)
rm -rf __p4api__
mkdir __p4api__
tar zxvf $(>) -C __p4api__ --strip-components=1
$(PYTHON) setup.py sdist --apidir __p4api__
rm -rf __p4api__
cd $buildtop
mv $(TOPDIR)/dist/$(DIST_NAME) $(<)
}