[Lazarus] Can't find unit Interfaces on launchpad's build farm - is Lazarus/FPC broken in Ubuntu 12.04?

Bernd prof7bit at gmail.com
Sun Sep 23 16:16:04 CEST 2012


2012/9/23 Mattias Gaertner <nc-gaertnma at netcologne.de>:

> Have you tried removing ~/.lazarus?

No, it always starts with a freshly bootstrapped clean and virgin
virtual ubuntu server, I have no other influence than specifying build
dependencies in the source package and maybe some ugly hackish
trickery in my "all" target. Here is the complete log:

https://launchpadlibrarian.net/117046564/buildlog_ubuntu-precise-i386.laz-launchpad-example_1.0.2-ppa1_FAILEDTOBUILD.txt.gz



here is my Makefile:


# this will be the name of our ubuntu package
PACKAGENAME = laz-launchpad-example

# you need a new UPSTREAMVERSION everytime you try a new upload to
# launchpad because this will be considered the version of the
# upstream .orig.tar.gz and since we basically *are* upstream and indeed
# have changed upstream sources we also need a new uptream version number
UPSTREAMVERSION = 1.0.2
FULLDEBVERSION = $(UPSTREAMVERSION)-ppa1
DESCRIPTION = demo package
EXDESCRIPTION = extended description may not be empty
AUTHOR = Bernd Kreuss
COPYRIGHT = 2012 $(AUTHOR)

# this must be the same email address used in launchpad AND in the gpg key!
# make ubuntu_upload will ask for passphrase to sign the source package
# and after uploading launchpad will check the signature to authenticate you
EMAIL = prof7bit at gmail.com
PPANAME = ppa:prof7bit/lazarus-ppa-skeleton


# some licenses need a second line referring to the license file
LICENSE = GPL-2
LICENSE2 = /usr/share/common-licenses/GPL-2

# more tweaking can be done by directly altering the code
# that creates the debian/* files near the end of this makefile

DISTRIBUTION = precise
BUILD_DEPENDS = lazarus, lcl-utils, debhelper (>= 8)
DEPENDS =

EXENAME = project1
LPINAME = project1.lpi

SRCDIRNAME = $(PACKAGENAME)-$(UPSTREAMVERSION)
TARBALLNAME = $(PACKAGENAME)_$(UPSTREAMVERSION).orig.tar.gz

# need bash with extglob for some of the synax in this makefile
SHELL = /bin/bash -O extglob

##########################################################
# all, clean and install are totally standard stuff and  #
# are supposed to work the same without debuild.         #
##########################################################

# all will build the entire project from source, using lazbuild,
# this assumes that there exists a build mode "Release"
all:
	#lazbuild --build-mode=Release $(LPINAME)
	lazbuild --build-mode=Debug $(LPINAME)


# clean will remove all compiled files
clean:
	$(RM) -r lib
	$(RM) $(EXENAME)
	$(RM) *.res

	$(RM) -r DEBUILD


# install all the files into their final destinations. This should
# work without debuild (for testing or normal install without .deb)
# and also work when called during debuild (debuild will also set
# the $(DESTDIR) variable to install into a fakeroot) so don't forget
# to prefix all destination paths with $(DESTDIR) and also don't forget
# to install with -D so that it will create missing directories.
install:
	install -D $(EXENAME) $(DESTDIR)/usr/bin/$(EXENAME)


# uninstall is not used for the packaging, or anywhere else, I only use
# it during development after testing the installer on my local machine
uninstall:
	$(RM) /usr/bin/$(EXENAME)



#########################################
# here comes the debian specific stuff. #
#########################################

# make ubuntu_src does everything needed to create a debian source package.
# It will create a BUILDEB directory, copy the entire source there,
# make the .orig.tar.gz tarball from it and then call itself again from
# within this new location to make the debian files and all the rest.
# after this has completed you can call make ubuntu_upload
ubuntu_src: _copyorig
	$(MAKE) -C DEBUILD/$(SRCDIRNAME) _ubuntu_src

# make ubuntu_bin is similar to ubuntu_src but it makes a binary package
# this should be used to debug the build proces, test the .deb but it
# can not be used to produce the source package. Use this only for
# debugging. Use ubuntu_src instead to produce the launchpad upload files.
ubuntu_bin: _copyorig
	$(MAKE) -C DEBUILD/$(SRCDIRNAME) _ubuntu_bin

# after you have run make ubuntu_src (and confirmed that all is ok)
# you call make ubuntu_upload which will then sign your source package
# and upload it to your ppa. It will first ask you for your gpg
# passphrase twice to sign the two files (.dsc and .changes) and then
# upload them using dput. You don't need your launchpad password,
# launchpad will authenticate you by your gpg signature, launchpad will
# send you a notification email to inform you about errors or success.
ubuntu_upload:
	cd DEBUILD/$(SRCDIRNAME); debsign -S
	dput $(PPANAME) DEBUILD/$(PACKAGENAME)_$(FULLDEBVERSION)_source.changes

_copyorig: clean
	mkdir -p DEBUILD/$(SRCDIRNAME)
	cp -r !(DEBUILD) DEBUILD/$(SRCDIRNAME)/
	cd DEBUILD; tar czf $(TARBALLNAME) $(SRCDIRNAME)



####################################################
# everything below happens when we are in the copy #
# of the source files inside the DEBUILD directory #
####################################################

_ubuntu_bin: _debfiles _package_bin
_ubuntu_src: _debfiles _package_src
_debfiles: _debdir _changelog _compat _control _copyright _rules

_debdir:
	mkdir debian

# this are the changes between upstream and deb. Since we always take
# the latest upstream and apply no changes other than debianizing it
# this change log will never contain more than one item"
_changelog:
	echo "$(PACKAGENAME) ($(FULLDEBVERSION)) $(DISTRIBUTION);
urgency=low" > debian/changelog
	echo "" >> debian/changelog
	echo "  * Upstream release." >> debian/changelog
	echo "" >> debian/changelog
	echo " -- $(AUTHOR) <$(EMAIL)>  `date -R`" >> debian/changelog

# compat contains only a magic number
_compat:
	echo 8 > debian/compat

# creates the control file. runtime dependencies will be
# automatically detected and inserted by debuild
_control:
	echo "Source: $(PACKAGENAME)" > debian/control
	echo "Maintainer: $(AUTHOR) <$(EMAIL)>" >> debian/control
	echo "Section: misc" >> debian/control
	echo "Priority: optional" >> debian/control
	echo "Standards-Version: 3.9.3" >> debian/control
	echo "Build-Depends: $(BUILD_DEPENDS)" >> debian/control
	echo "" >> debian/control
	echo "Package: $(PACKAGENAME)" >> debian/control
	echo "Architecture: any" >> debian/control
	echo "Depends: \$${shlibs:Depends}, \$${misc:Depends}, $(DEPENDS)" >>
debian/control
	echo "Description: $(DESCRIPTION)" >> debian/control
	echo " $(EXDESCRIPTION)" >> debian/control

# copyright file syntax is a bit tricky and and some licenses need
# to refer to their license text file or lintian will complain.
# see also the debian policy, there may be multiple paragraphs
# referrimg to different files having different licenses. The code
# below simply assumes all files have the same license.
_copyright:
	echo "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/"
> debian/copyright
	echo "" >> debian/copyright
	echo "Files: *" >> debian/copyright
	echo "Copyright: $(COPYRIGHT)" >> debian/copyright
	echo "License: $(LICENSE)" >> debian/copyright
	echo " $(LICENSE2)" >> debian/copyright
	echo "" >> debian/copyright

# rules file. This is a makefile wrapping some deep debian voodoo,
# can be used to override targets in the build process, we don't need
# to mess around with it, leave it as is.
_rules:
	echo "#!/usr/bin/make -f" > debian/rules
	echo "" >> debian/rules
	echo "%:" >> debian/rules
	echo "	dh \$$@" >> debian/rules

_package_src:
	debuild -S -d -us -uc

_package_bin:
	debuild -d -us -uc




More information about the Lazarus mailing list