[Buildroot] [patch] qtopia4

Bernhard Fischer rep.nop at aon.at
Mon Dec 11 13:43:47 UTC 2006


On Mon, Dec 11, 2006 at 01:00:41PM +0100, Thomas Lundquist wrote:
>On Mon, Dec 11, 2006 at 11:24:08AM +0100, Bernhard Fischer wrote:
>> >+++ package/qtopia4/qconfig-myfile.h	(revision 0)
>> >@@ -0,0 +1,244 @@
>> >+/****************************************************************************
>> >+**
>> >+** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.
>> 
>> hm? buildroot is LGPL, AFAIK. I don't remember so have signed nor
>> received any license-agreement with trolltech.. Furthermore, i'm
>> convinced that i don't want to sign any license-agreement with trolltech
>> ;)
>
>Hmm, ok :=)

See comments below.
>
>(As you of course have guessed already; I didn't even think about that
>file having any weird license. it's meant to be tweaked by the
>licensee/user.)
>
>> So what's the deal with this header? Do you have written permission to
>> redistribute it under an LGPL compatible license?
>
>Well, it's the same header in the opensource version, so what they mean
>by it is something I just won't be bothered to check
>
>So, new patch applied, this time without the file and a little more
>describing comment around the use of the file.
>
>
>Thomas.

>Index: package/Config.in
>===================================================================
>--- package/Config.in	(revision 16845)
>+++ package/Config.in	(working copy)
>@@ -121,6 +121,7 @@
> source "package/psmisc/Config.in"
> source "package/python/Config.in"
> source "package/qte/Config.in"
>+source "package/qtopia4/Config.in"
> source "package/raidtools/Config.in"
> source "package/readline/Config.in"
> source "package/rsync/Config.in"
>Index: package/qtopia4/qtopia4.mk
>===================================================================
>--- package/qtopia4/qtopia4.mk	(revision 0)
>+++ package/qtopia4/qtopia4.mk	(revision 0)
>@@ -0,0 +1,278 @@
>+######################################################################
>+#
>+# qtopia4 (Qtopia Core 4)
>+# http://www.trolltech.com/
>+# 
>+# This makefile composed by Thomas Lundquist <thomasez at zelow.no>
>+#
>+# There is two versions built, one for the target and one for
>+# staging. The target version is built in the staging_dir and the
>+# staging version in the toolchain_dir.
>+#
>+# BTW, this uses alot of FPU calls and it's pretty slow if you use 
>+# the kernels FPU emulation so it's better to choose soft float in the 
>+# buildroot config (and uClibc.config of course, if you have your own.)
>+#
>+######################################################################
>+
>+QTOPIA4_VER:=4.2.2
>+QTOPIA4_CAT:=zcat

No. Some people who only have "gzip -d -c" but no zcat will stumble
across this. Please use $(ZCAT) -- or $(BZCAT) for bz2.
>+
>+BR2_PACKAGE_QTOPIA4_COMMERCIAL_USERNAME:=$(strip $(subst ",, $(BR2_PACKAGE_QTOPIA4_COMMERCIAL_USERNAME)))
>+#"

cosmetics, but looks like there are some closing parentheses missing to
make vi happy..
>+
>+# What to download, free or commercial version.
>+ifneq ($(BR2_PACKAGE_QTOPIA4_COMMERCIAL_USERNAME),)
>+
>+BR2_QTOPIA4_COMMERCIAL_PASSWORD:=$(shell echo $(BR2_PACKAGE_QTOPIA4_COMMERCIAL_PASSWORD)| sed -e 's/"//g')

Why spawn a subshell? Can't you just $(subst ",,$()) like for the
username?

>+QTOPIA4_SITE:=http://$(BR2_PACKAGE_QTOPIA4_COMMERCIAL_USERNAME):$(BR2_QTOPIA4_COMMERCIAL_PASSWORD)@dist.trolltech.com/$(BR2_PACKAGE_QTOPIA4_COMMERCIAL_USERNAME)
>+QTOPIA4_SOURCE:=qtopia-core-commercial-src-$(QTOPIA4_VER).tar.gz
>+QTOPIA4_TARGET_DIR:=$(BUILD_DIR)/qtopia-core-commercial-src-$(QTOPIA4_VER)
>+QTOPIA4_HOST_DIR:=$(TOOL_BUILD_DIR)/qtopia-core-commercial-src-$(QTOPIA4_VER)
>+
>+else
>+
>+# Good, good, we are free:
>+
>+QTOPIA4_SITE=ftp://ftp.trolltech.com/qt/source/
>+QTOPIA4_SOURCE:=qtopia-core-opensource-src-$(QTOPIA4_VER).tar.gz
>+QTOPIA4_TARGET_DIR:=$(BUILD_DIR)/qtopia-core-opensource-src-$(QTOPIA4_VER)
>+QTOPIA4_HOST_DIR:=$(TOOL_BUILD_DIR)/qtopia-core-opensource-src-$(QTOPIA4_VER)
>+
>+endif
>+
>+# If you want extra tweaking you can copy 
>+# $(QTOPIA4_TARGET_DIR)/src/corelib/global/qconfig-myfile.h
>+# to the qtopia4 packages directory (where this .mk file is) and 
>+# remove the comment.
>+# QTOPIA4_QCONFIG_COMMAND:=-qconfig myfile
>+#
>+# For the options you can set in this file, look at 
>+# $(QTOPIA4_TARGET_DIR)/src/corelib/global/qfeatures.txt
>+#
>+QTOPIA4_QCONFIG_FILE:=package/qtopia4/qconfig-myfile.h
>+QTOPIA4_QCONFIG_FILE_LOCATION:=/src/corelib/global/
>+
>+ifeq ($(BR2_LARGEFILE),y)
>+QTOPIA4_LARGEFILE=-no-largefile
>+else
>+QTOPIA4_LARGEFILE=-no-largefile
>+endif

No way to toggle largefile-support on, even if asked to?

>+ifeq ($(BR2_PACKAGE_QTOPIA4_QT3SUPPORT),y)
>+QTOPIA4_QT3SUPPORT=-qt3support
>+else
>+QTOPIA4_QT3SUPPORT=-no-qt3support
>+endif
>+ifeq ($(BR2_PACKAGE_TSLIB),y)
>+QTOPIA4_TSLIB=-qt-mouse-tslib
>+QTOPIA4_TSLIB_DEP=tslib
>+QTOPIA4_TSLIB_DEB="-D TSLIBMOUSEHANDLER_DEBUG"
>+QTOPIA4_TSLIB_DEB:=$(strip $(subst ",, $(QTOPIA4_TSLIB_DEB)))
>+#"

again,
#"))
or the like..
>+endif
>+ifeq ($(BR2_PACKAGE_QTOPIA4_DEBUG),y)
>+QTOPIA4_DEBUG="-debug-and-release $(QTOPIA4_TSLIB_DEB)"
>+else
>+QTOPIA4_DEBUG=-release
>+endif
>+ifeq ($(BR2_ENDIAN),"LITTLE")
>+QTOPIA4_ENDIAN=-little-endian
>+else
>+QTOPIA4_ENDIAN=-big-endian
>+endif
>+
>+QTOPIA4_DEBUG:=$(strip $(subst ",, $(QTOPIA4_DEBUG)))
>+#"

ditto.
>+BR2_PACKAGE_QTOPIA4_EMB_PLATFORM:=$(strip $(subst ",, $(BR2_PACKAGE_QTOPIA4_EMB_PLATFORM)))
>+#"

ditto.
>+
>+
>+# This is for staging.
>+QTOPIA4_STAGING_DIR:=$(STAGING_DIR)/usr/Trolltech
>+QTOPIA4_QMAKE=$(QTOPIA4_STAGING_DIR)/bin/qmake
>+
>+$(DL_DIR)/$(QTOPIA4_SOURCE):
>+	 $(WGET) -P $(DL_DIR) $(QTOPIA4_SITE)/$(QTOPIA4_SOURCE)
>+
>+qtopia4-source: $(DL_DIR)/$(QTOPIA4_SOURCE)
>+
>+#################################
>+#
>+# Target
>+#
>+#################################
>+
>+$(QTOPIA4_TARGET_DIR)/.unpacked: $(DL_DIR)/$(QTOPIA4_SOURCE)
>+	$(QTOPIA4_CAT) $(DL_DIR)/$(QTOPIA4_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
>+	touch $(QTOPIA4_TARGET_DIR)/.unpacked
>+
>+# This configure is very tailored towards my needs.
>+$(QTOPIA4_TARGET_DIR)/.configured: $(QTOPIA4_TARGET_DIR)/.unpacked
>+	# Patching configure to get rid of some feature I dont want.
>+	# (I don't want SQL either but there is no option for that at all. 
>+	# the SQL library will be built even without the plugins/drivers.
>+	$(SED) 's/^CFG_IPV6=auto/CFG_IPV6=no/;' $(QTOPIA4_TARGET_DIR)/configure
>+	$(SED) 's/^CFG_IPV6IFNAME=auto/CFG_IPV6IFNAME=no/;' $(QTOPIA4_TARGET_DIR)/configure
>+	$(SED) 's/^CFG_XINERAMA=auto/CFG_XINERAMA=no/;' $(QTOPIA4_TARGET_DIR)/configure
>+	$(SED) 's/-O2/-Os/;' $(QTOPIA4_TARGET_DIR)/mkspecs/qws/linux-$(BR2_PACKAGE_QTOPIA4_EMB_PLATFORM)-g++/qmake.conf

shouldn't this rather be
s/-O2/-Os $(TARGET_CFLAGS)/

Also, all trailing command separators (i.e. ';') in sed are superfluous.

>+	cp $(QTOPIA4_QCONFIG_FILE) \
>+	 	$(QTOPIA4_TARGET_DIR)/$(QTOPIA4_QCONFIG_FILE_LOCATION)
>+	(cd $(QTOPIA4_TARGET_DIR); rm -rf config.cache; \
>+		PATH=$(TARGET_PATH) \
>+		CFLAGS="$(TARGET_CFLAGS)" \
>+		CXXFLAGS="$(TARGET_CXXFLAGS)" \

Sounds like this is will break for anybody that doesn't have a plain
"gcc" nor "g++" binary. Honor the user's HOSTCC and HOSTCXX vars,
please.
>+		QPEHOME=/usr \
>+		QPEDIR=/usr \
>+		./configure \
>+		-v \
>+		-platform linux-g++ \
>+		-embedded $(BR2_PACKAGE_QTOPIA4_EMB_PLATFORM) \
>+		-xplatform qws/linux-$(BR2_PACKAGE_QTOPIA4_EMB_PLATFORM)-g++ \
>+		$(QTOPIA4_QCONFIG_COMMAND) \
>+		$(QTOPIA4_DEBUG) \
>+		-depths 8 \
>+		-no-cups \
>+		-no-nis \
>+		-no-freetype \
>+		-no-libmng \
>+		-no-sql-db2 \
>+		-no-sql-ibase \
>+		-no-sql-mysql \
>+		-no-sql-oci \
>+		-no-sql-odbc \
>+		-no-sql-psql \
>+		-no-sql-sqlite \
>+		-no-sql-sqlite2 \
>+		-no-sql-tds \
>+		-prefix /usr \
>+		-prefix-install \
>+		-L $(STAGING_DIR)/usr/lib \
>+		-I $(STAGING_DIR)/usr/include \
>+		$(QTOPIA4_QT3SUPPORT) \
>+		$(QTOPIA4_TSLIB) \
>+		$(QTOPIA4_LARGEFILE) \
>+		$(QTOPIA4_ENDIAN) \
>+	);
>+	touch $(QTOPIA4_TARGET_DIR)/.configured
>+
>+$(QTOPIA4_TARGET_DIR)/lib/libQtCore.so.$(QTOPIA4_VER): $(QTOPIA4_TARGET_DIR)/.configured
>+	# $(TARGET_CONFIGURE_OPTS) $(MAKE) PATH=$(STAGING_DIR)/bin:$(STAGING_DIR)/usr/bin:$$PATH CROSS_COMPILE=$(KERNEL_CROSS) CC=$(TARGET_CC) -C $(QTOPIA4_TARGET_DIR)
>+	$(TARGET_CONFIGURE_OPTS) $(MAKE) \
>+		-C $(QTOPIA4_TARGET_DIR) sub-src
>+	touch $(QTOPIA4_TARGET_DIR)/.compiled

Doesn't sound correct, or does QT create the .compiled file and you just
update it's timestamp here?

>+		# -C $(QTOPIA4_TARGET_DIR) sub-src
Please remove the above.
>+
>+$(STAGING_DIR)/usr/lib/libQtCore.so.$(QTOPIA4_VER): $(QTOPIA4_TARGET_DIR)/lib/libQtCore.so.$(QTOPIA4_VER)
>+	$(MAKE) $(TARGET_CONFIGURE_OPTS) \
>+		INSTALL_ROOT=$(STAGING_DIR) \
>+		-C $(QTOPIA4_TARGET_DIR) \
>+		sub-src-install_subtargets-ordered \
>+		install_qmake install_mkspecs
>+	# We don't need no stinking Sql libraries:
>+	-rm $(TARGET_DIR)/usr/lib/*Sql*
>+	# Nor Svg
>+	-rm $(TARGET_DIR)/usr/lib/*Svg*
>+
>+$(TARGET_DIR)/usr/lib/libQtCore.so.$(QTOPIA4_VER): $(STAGING_DIR)/usr/lib/libQtCore.so.$(QTOPIA4_VER)
>+	mkdir -p $(TARGET_DIR)/usr/lib/fonts
>+	touch $(TARGET_DIR)/usr/lib/fonts/fontdir
>+	# touch $(TARGET_DIR)/usr/lib/libQtCore.so.$(QTOPIA4_VER)
>+	cp -a $(STAGING_DIR)/usr/lib/fonts/helvetica*.qpf $(TARGET_DIR)/usr/lib/fonts
>+	cp -a $(STAGING_DIR)/usr/lib/fonts/fixed*.qpf $(TARGET_DIR)/usr/lib/fonts
>+	cp -a $(STAGING_DIR)/usr/lib/fonts/micro*.qpf $(TARGET_DIR)/usr/lib/fonts
>+	cp -a $(STAGING_DIR)/usr/lib/*.so.* $(TARGET_DIR)/usr/lib/

*.so.*, not *.so* ?
>+	-$(STRIP) --strip-unneeded $(TARGET_DIR)/usr/lib/*.so.$(QTOPIA4_VER)
>+
>+#################################
>+#
>+# Host/Staging
>+#
>+#################################
>+
>+$(QTOPIA4_HOST_DIR)/.unpacked: $(DL_DIR)/$(QTOPIA4_SOURCE)
>+	$(QTOPIA4_CAT) $(DL_DIR)/$(QTOPIA4_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
>+	touch $(QTOPIA4_HOST_DIR)/.unpacked
>+
>+# This configure is very tailored towards my needs.
>+$(QTOPIA4_HOST_DIR)/.configured: $(QTOPIA4_HOST_DIR)/.unpacked
>+	# Patching configure to get rid of some feature I dont want.
>+	# (I don't want SQL either but there is no option for that at all. 
>+	# the SQL library will be built even without the plugins/drivers.
>+	$(SED) 's/^CFG_IPV6=auto/CFG_IPV6=no/;' $(QTOPIA4_HOST_DIR)/configure
>+	$(SED) 's/^CFG_IPV6IFNAME=auto/CFG_IPV6IFNAME=no/;' $(QTOPIA4_HOST_DIR)/configure
>+	$(SED) 's/^CFG_XINERAMA=auto/CFG_XINERAMA=no/;' $(QTOPIA4_HOST_DIR)/configure
>+	$(SED) 's/-O2/-Os/;' $(QTOPIA4_HOST_DIR)/mkspecs/qws/linux-$(BR2_PACKAGE_QTOPIA4_EMB_PLATFORM)-g++/qmake.conf

s/;//g
>+	cp $(QTOPIA4_QCONFIG_FILE) \
>+	 	$(QTOPIA4_HOST_DIR)/$(QTOPIA4_QCONFIG_FILE_LOCATION)
>+	(cd $(QTOPIA4_HOST_DIR); rm -rf config.cache; \
>+		PATH=$(TARGET_PATH) \
>+		CFLAGS="$(TARGET_CFLAGS)" \
>+		CXXFLAGS="$(TARGET_CXXFLAGS)" \
>+		QPEHOME=/usr \
>+		QPEDIR=/usr \

See HOSTCC and HOSTCXX above.
>+		./configure \
>+		-v \
>+		-platform linux-g++ \
>+		-embedded $(BR2_PACKAGE_QTOPIA4_EMB_PLATFORM) \
>+		-xplatform qws/linux-$(BR2_PACKAGE_QTOPIA4_EMB_PLATFORM)-g++ \
>+		$(QTOPIA4_QCONFIG_COMMAND) \
>+		$(QTOPIA4_DEBUG) \
>+		-depths 8 \
>+		-no-cups \
>+		-no-nis \
>+		-no-freetype \
>+		-no-libmng \
>+		-no-sql-db2 \
>+		-no-sql-ibase \
>+		-no-sql-mysql \
>+		-no-sql-oci \
>+		-no-sql-odbc \
>+		-no-sql-psql \
>+		-no-sql-sqlite \
>+		-no-sql-sqlite2 \
>+		-no-sql-tds \
>+		-prefix $(QTOPIA4_STAGING_DIR) \
>+		-prefix-install \
>+		-L $(STAGING_DIR)/usr/lib \
>+		-I $(STAGING_DIR)/usr/include \
>+		$(QTOPIA4_QT3SUPPORT) \
>+		$(QTOPIA4_TSLIB) \
>+		$(QTOPIA4_LARGEFILE) \
>+		$(QTOPIA4_ENDIAN) \
>+	);
>+	touch $(QTOPIA4_HOST_DIR)/.configured
>+
>+$(QTOPIA4_HOST_DIR)/lib/libQtCore.so.$(QTOPIA4_VER): $(QTOPIA4_HOST_DIR)/.configured
>+	# $(TARGET_CONFIGURE_OPTS) $(MAKE) PATH=$(STAGING_DIR)/bin:$(STAGING_DIR)/usr/bin:$$PATH CROSS_COMPILE=$(KERNEL_CROSS) CC=$(TARGET_CC) -C $(QTOPIA4_HOST_DIR)
>+	$(TARGET_CONFIGURE_OPTS) $(MAKE) \
>+		-C $(QTOPIA4_HOST_DIR)
>+	touch $(QTOPIA4_HOST_DIR)/.compiled
>+		# -C $(QTOPIA4_HOST_DIR) sub-src
>+
>+$(QTOPIA4_STAGING_DIR)/lib/libQtCore.so.$(QTOPIA4_VER): $(QTOPIA4_HOST_DIR)/lib/libQtCore.so.$(QTOPIA4_VER)
>+	$(MAKE) $(TARGET_CONFIGURE_OPTS) \
>+		-C $(QTOPIA4_HOST_DIR) install \
>+		# sub-src-install_subtargets-ordered \
>+		# install_qmake install_mkspecs \
>+		#
>+
>+qtopia4: uclibc zlib $(QTOPIA4_TSLIB_DEP) \
>+		$(QTOPIA4_STAGING_DIR)/lib/libQtCore.so.$(QTOPIA4_VER) \
>+		$(TARGET_DIR)/usr/lib/libQtCore.so.$(QTOPIA4_VER)
>+
>+qtopia4-clean:
>+	-$(MAKE) -C $(QTOPIA4_HOST_DIR) clean
>+	-$(MAKE) -C $(QTOPIA4_TARGET_DIR) clean

can you please uninstall the files from the rootfs here?
>+
>+qtopia4-dirclean:
>+	rm -rf $(QTOPIA4_HOST_DIR)
>+	rm -rf $(QTOPIA4_TARGET_DIR)
>+
>+#############################################################
>+#
>+# Toplevel Makefile options
>+#
>+#############################################################
>+ifeq ($(strip $(BR2_PACKAGE_QTOPIA4)),y)
>+TARGETS+=qtopia4
>+endif
[snip]



More information about the buildroot mailing list