# -*- mode: Makefile; -*- ## # B&I Makefile for CalendarServer # # This is only useful internally at Apple, probably. ## # Copyright (c) 2005-2009 Apple Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ## # Project info Project = CalendarServer ProjectName = CalendarServer UserType = Server ToolType = Applications # Include common makefile targets for B&I include $(MAKEFILEPATH)/CoreOS/ReleaseControl/Common.make PYTHON = /usr/bin/python PY_HOME = $(SHAREDIR)/caldavd PY_INSTALL_FLAGS = --root="$(DSTROOT)" --home="$(PY_HOME)" USER = calendar GROUP = calendar # # Build # .phony: $(Project) vobject Twisted build setup prep install install-ossfiles buildit CalDAVTester:: $(BuildDirectory)/CalDAVTester PyKerberos:: $(BuildDirectory)/PyKerberos PyOpenDirectory:: $(BuildDirectory)/PyOpenDirectory PyXML-0.8.4:: $(BuildDirectory)/PyXML-0.8.4 vobject:: $(BuildDirectory)/vobject Twisted:: $(BuildDirectory)/Twisted pydirector-1.0.0:: $(BuildDirectory)/pydirector-1.0.0 $(Project):: $(BuildDirectory)/$(Project) build:: PyKerberos PyOpenDirectory PyXML-0.8.4 pydirector-1.0.0 vobject Twisted $(Project) setup: $(_v) ./run -g prep:: setup CalDAVTester.tgz PyKerberos.tgz PyOpenDirectory.tgz PyXML-0.8.4.tgz pydirector-1.0.0.tgz vobject.tgz Twisted.tgz PyKerberos PyOpenDirectory PyXML-0.8.4 pydirector-1.0.0 vobject $(Project):: @echo "Building $@..." $(_v) cd $(BuildDirectory)/$@ && $(Environment) $(PYTHON) setup.py build TwistedSubEnvironment = $(Environment) PYTHONPATH="$(DSTROOT)$(PY_HOME)/lib/python" Twisted:: @echo "Building Twisted..." $(_v) cd $(BuildDirectory)/Twisted && $(Environment) $(PYTHON) twisted/topfiles/setup.py install $(PY_INSTALL_FLAGS) $(_v) cd $(BuildDirectory)/Twisted && $(Environment) $(PYTHON) twisted/runner/topfiles/setup.py build $(_v) cd $(BuildDirectory)/Twisted && $(TwistedSubEnvironment) $(PYTHON) twisted/mail/topfiles/setup.py build $(_v) cd $(BuildDirectory)/Twisted && $(TwistedSubEnvironment) $(PYTHON) twisted/web/topfiles/setup.py build $(_v) cd $(BuildDirectory)/Twisted && $(TwistedSubEnvironment) $(PYTHON) twisted/web2/topfiles/setup.py build $(_v) cd $(BuildDirectory)/Twisted && $(TwistedSubEnvironment) $(PYTHON) twisted/words/topfiles/setup.py build install:: build $(_v) cd $(BuildDirectory)/$(Project) && $(Environment) $(PYTHON) setup.py install \ $(PY_INSTALL_FLAGS) \ --install-scripts="$(USRSBINDIR)" \ --install-data="$(ETCDIR)" $(_v) cd $(BuildDirectory)/PyKerberos && $(Environment) $(PYTHON) setup.py install $(PY_INSTALL_FLAGS) $(_v) cd $(BuildDirectory)/PyOpenDirectory && $(Environment) $(PYTHON) setup.py install $(PY_INSTALL_FLAGS) $(_v) cd $(BuildDirectory)/pydirector-1.0.0 && $(Environment) $(PYTHON) setup.py install $(PY_INSTALL_FLAGS) $(_v) cd $(BuildDirectory)/PyXML-0.8.4 && $(Environment) $(PYTHON) setup.py install $(PY_INSTALL_FLAGS) $(_v) cd $(BuildDirectory)/vobject && $(Environment) $(PYTHON) setup.py install $(PY_INSTALL_FLAGS) $(_v) cd $(BuildDirectory)/Twisted && $(TwistedSubEnvironment) $(PYTHON) twisted/runner/topfiles/setup.py install $(PY_INSTALL_FLAGS) $(_v) cd $(BuildDirectory)/Twisted && $(TwistedSubEnvironment) $(PYTHON) twisted/mail/topfiles/setup.py install $(PY_INSTALL_FLAGS) $(_v) cd $(BuildDirectory)/Twisted && $(TwistedSubEnvironment) $(PYTHON) twisted/web/topfiles/setup.py install $(PY_INSTALL_FLAGS) $(_v) cd $(BuildDirectory)/Twisted && $(TwistedSubEnvironment) $(PYTHON) twisted/web2/topfiles/setup.py install $(PY_INSTALL_FLAGS) $(_v) cd $(BuildDirectory)/Twisted && $(TwistedSubEnvironment) $(PYTHON) twisted/words/topfiles/setup.py install $(PY_INSTALL_FLAGS) $(_v) for so in $$(find "$(DSTROOT)$(PY_HOME)/lib" -type f -name '*.so'); do $(STRIP) -Sx "$${so}"; done @echo "Removing plugins:" $(_v) find "$(DSTROOT)$(PY_HOME)/lib/python/twisted/plugins/" -type f ! -name 'caldav.*' ! -name 'twisted_reactors.*' ! -name 'twisted_trial.*' ! -name '__init__.*' ! -name 'kqueuereactor.*' -print -exec rm '{}' ';' $(_v) rm -fr "$(DSTROOT)$(PY_HOME)/lib/python/twisted/python/zsh" $(_v) rm -f "$(DSTROOT)$(PY_HOME)/lib/python/twisted/python/zshcomp.py" $(_v) rm -f "$(DSTROOT)$(PY_HOME)/lib/python/twisted/python/zshcomp.py" $(_v) rm -f "$(DSTROOT)$(PY_HOME)/lib/python/twisted/python/zshcomp.pyc" $(_v) rm -f "$(DSTROOT)$(PY_HOME)/lib/python/twisted/python/_twisted_zsh_stub" $(_v) $(INSTALL_FILE) "$(Sources)/conf/caldavd-apple.plist" "$(DSTROOT)$(ETCDIR)/caldavd/caldavd.plist" $(_v) chmod -R ugo+r "$(DSTROOT)$(PY_HOME)" $(_v) for f in $$(find "$(DSTROOT)$(ETCDIR)" -type f ! -name '*.default'); do cp "$${f}" "$${f}.default"; done install:: @echo "Installing manual pages..." $(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)$(MANDIR)/man8" $(_v) $(INSTALL_FILE) "$(Sources)/doc/caldavd.8" "$(DSTROOT)$(MANDIR)/man8" $(_v) $(INSTALL_FILE) "$(Sources)/doc/calendarserver_export.8" "$(DSTROOT)$(MANDIR)/man8" $(_v) $(INSTALL_FILE) "$(Sources)/doc/calendarserver_manage_principals.8" "$(DSTROOT)$(MANDIR)/man8" $(_v) gzip -9 -f "$(DSTROOT)$(MANDIR)/man8/"*.[0-9] @echo "Installing launchd config..." $(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)$(NSLOCALDIR)/$(NSLIBRARYSUBDIR)/$(Project)" $(_v) $(INSTALL_DIRECTORY) -m 0755 "$(DSTROOT)$(VARDIR)/log/caldavd" $(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)$(NSLIBRARYDIR)/LaunchDaemons" $(_v) $(INSTALL_FILE) "$(Sources)/contrib/launchd/calendarserver.plist" "$(DSTROOT)$(NSLIBRARYDIR)/LaunchDaemons/org.calendarserver.calendarserver.plist" @echo "Installing migration config..." $(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)/System/Library/ServerSetup/MigrationExtras" $(_v) $(INSTALL_FILE) "$(Sources)/contrib/migration/59_calendarmigrator.py" "$(DSTROOT)/System/Library/ServerSetup/MigrationExtras/59_calendarmigrator.py" $(_v) chmod ugo+x "$(DSTROOT)/System/Library/ServerSetup/MigrationExtras/59_calendarmigrator.py" @echo "Installing backup config..." $(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)$(ETCDIR)/server_backup/" $(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)$(LIBEXECDIR)/server_backup/" $(_v) $(INSTALL_FILE) "$(Sources)/contrib/SBS/conf/85-calendarServer.plist" "$(DSTROOT)$(ETCDIR)/server_backup/" $(_v) $(INSTALL_FILE) "$(Sources)/contrib/SBS/bin/calendarServer_restore" "$(DSTROOT)$(LIBEXECDIR)/server_backup/" install:: @echo "Installing CalDAVTester package..." $(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)/AppleInternal/ServerTools" $(_v) $(INSTALL_FILE) "$(Sources)/CalDAVTester.tgz" "$(DSTROOT)/AppleInternal/ServerTools/CalDAVTester.tgz" # # Automatic Extract # $(BuildDirectory)/$(Project): @echo "Copying source for $(Project)..." $(_v) $(MKDIR) -p "$@" $(_v) pax -rw bin conf Makefile lib-patches setup.py kqreactor.py memcacheclient.py calendarserver twistedcaldav twext twisted support "$@/" $(BuildDirectory)/%: %.tgz @echo "Extracting source for $(notdir $<)..." $(_v) $(MKDIR) -p "$(BuildDirectory)" $(_v) $(RMDIR) "$@" $(_v) $(TAR) -C "$(BuildDirectory)" -xzf $< %.tgz: ../% @echo "Archiving sources for $(notdir $<)..." $(_v) $(TAR) -C "$(dir $<)" \ --exclude=.svn \ --exclude=build \ --exclude=_trial_temp \ --exclude=dropin.cache \ -czf $@ "$(notdir $<)" # # Open Source Hooey # OSV = /usr/local/OpenSourceVersions OSL = /usr/local/OpenSourceLicenses #install:: install-ossfiles install-ossfiles:: $(_v) $(INSTALL_DIRECTORY) $(DSTROOT)/$(OSV) $(_v) $(INSTALL_FILE) $(Sources)/$(ProjectName).plist $(DSTROOT)/$(OSV)/$(ProjectName).plist $(_v) $(INSTALL_DIRECTORY) $(DSTROOT)/$(OSL) $(_v) $(INSTALL_FILE) $(BuildDirectory)/$(Project)/LICENSE $(DSTROOT)/$(OSL)/$(ProjectName).txt # # B&I Hooey # buildit: prep @echo "Running buildit..." $(_v) sudo ~rc/bin/buildit $(CC_Archs) $(Sources)