Custom application cannot be compiled

FAUX Manuel Manuel.FAUX at frequentis.com
Thu Nov 12 17:03:47 CET 2015


Hi Ronny,

Finally got Python 3 running...

Here my commit based on git tag v0.03:

commit c3262a74125e5c17f9eb654212245cc4bf5bdace
Author: Manuel Faux <manuel.faux at frequentis.com>
Date:   Thu Nov 12 18:38:11 2015 +0100

    Added Python 3.5.0 to apps

diff --git a/apps/Python/Makefile b/apps/Python/Makefile
new file mode 100644
index 0000000..150a0a7
--- /dev/null
+++ b/apps/Python/Makefile
@@ -0,0 +1,64 @@
+
+# Nard Linux SDK
+# http://www.arbetsmyra.dyndns.org/nard
+# Copyright (C) 2014 Ronny Nilsson
+# 
+# Python3 app by Manuel Faux
+
+
+include ../../Rules.mk															# Common used stuff
+
+
+#-----------------------------													# Standard targets
+.PHONY: all $(PKG_VER)
+all: $(PATH_FS)/.nard-$(PKG_NAME)
+$(PKG_VER): $(PATH_FS)/.nard-$(PKG_NAME)
+
+
+.PHONY: install
+install: $(PATH_FS)/.nard-$(PKG_NAME)
+$(PATH_FS)/.nard-$(PKG_NAME): $(PKG_VER)/.nard-build
+	$(MAKE) -C "$(PKG_VER)" DESTDIR="$(PATH_FS)" commoninstall bininstall
+	touch "$@"
+
+
+$(PKG_VER)/.nard-prebuild: $(std-deps)
+	$(MAKE) -C "$(PKG_VER)" distclean || true
+	cd $(dir $@) && ./configure
+	$(MAKE) -C "$(PKG_VER)" python Parser/pgen Programs/_freeze_importlib
+	cp "$(dir $@)/python" "$(dir $@)/python_host"
+	cp "$(dir $@)/Parser/pgen" "$(dir $@)/Parser/pgen_host"
+	cp "$(dir $@)/Programs/_freeze_importlib" "$(dir $@)/Programs/_freeze_importlib_host"
+	touch "$@"
+
+
+$(PKG_VER)/.nard-build: $(PKG_VER)/.nard-prebuild $(std-deps)
+	#tar xzf "$(PKG_VER).tar.gz" -C "$(PKG_VER)" --strip-components=1 -- $(PKG_VER)/configure $(PKG_VER)/Makefile.pre.in
+	cd $(dir $@) && patch -N -p1 < ../$(PKG_VER).patch || true
+	$(MAKE) -C "$(PKG_VER)" distclean
+	cd $(dir $@) && ./configure \
+		CFLAGS="$(CROSS_CFLAGS)" \
+		CPPFLAGS="$(CROSS_CFLAGS)" \
+		--prefix=/ \
+		--host=$(CROSS_TUPLE) \
+		--build=x86_64-linux-gnu \
+		--disable-ipv6 \
+		ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no ac_cv_have_long_long_format=yes
+	$(MAKE) -C "$(PKG_VER)" -j $(CPUS)
+	touch "$@"
+
+
+$(PKG_VER)/.nard-extract: $(PKG_VER).tar.*
+	$(std-extract)
+
+
+
+#----------------------------													# Cleaning	
+.PHONY: clean		
+clean:
+	$(std-clean)
+
+.PHONY: distclean
+distclean:
+	$(std-distclean)
+
diff --git a/apps/Python/Python-3.5.0.patch b/apps/Python/Python-3.5.0.patch
new file mode 100644
index 0000000..aa367f4
--- /dev/null
+++ b/apps/Python/Python-3.5.0.patch
@@ -0,0 +1,81 @@
+--- Python-3.5.0/Makefile.pre.in	2015-09-13 13:41:23.000000000 +0200
++++ Python-3.5.0_test/Makefile.pre.in	2015-11-12 16:32:42.871870307 +0100
+@@ -272,6 +272,7 @@
+ ##########################################################################
+ # Parser
+ PGEN=		Parser/pgen$(EXE)
++PGEN_FOR_BUILD=	Parser/pgen_host
+ 
+ PSRCS=		\
+ 		Parser/acceler.c \
+@@ -582,6 +583,7 @@
+ 	esac; \
+ 	$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
+ 		_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
++		PYTHONXCPREFIX='$(DESTDIR)$(prefix)' \
+ 		$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
+ 
+ # Build static library
+@@ -697,11 +699,11 @@
+ 	$(LINKCC) $(PY_LDFLAGS) -o $@ Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
+ 
+ Python/importlib_external.h: $(srcdir)/Lib/importlib/_bootstrap_external.py Programs/_freeze_importlib
+-	./Programs/_freeze_importlib \
++	./Programs/_freeze_importlib_host \
+ 		$(srcdir)/Lib/importlib/_bootstrap_external.py Python/importlib_external.h
+ 
+ Python/importlib.h: $(srcdir)/Lib/importlib/_bootstrap.py Programs/_freeze_importlib
+-	./Programs/_freeze_importlib \
++	./Programs/_freeze_importlib_host \
+ 		$(srcdir)/Lib/importlib/_bootstrap.py Python/importlib.h
+ 
+ 
+@@ -764,7 +766,7 @@
+ 
+ $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGEN)
+ 		@$(MKDIR_P) Include
+-		$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
++		$(PGEN_FOR_BUILD) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
+ $(GRAMMAR_C): $(GRAMMAR_H)
+ 		touch $(GRAMMAR_C)
+ 
+@@ -1401,10 +1403,11 @@
+ # This goes into $(exec_prefix)
+ sharedinstall: sharedmods
+ 	$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
++		--skip-build \
+ 	   	--prefix=$(prefix) \
+-		--install-scripts=$(BINDIR) \
+-		--install-platlib=$(DESTSHARED) \
+-		--root=$(DESTDIR)/
++		--install-scripts=$(DESTDIR)$(BINDIR) \
++		--install-platlib=$(DESTDIR)$(DESTSHARED) \
++		--root=/
+ 	-rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata.py
+ 	-rm -r $(DESTDIR)$(DESTSHARED)/__pycache__
+ 
+--- Python-3.5.0/configure	2015-09-13 13:41:26.000000000 +0200
++++ Python-3.5.0_test/configure	2015-11-12 12:59:51.181964531 +0100
+@@ -2972,21 +2972,7 @@
+ if test "$cross_compiling" = yes; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python interpreter for cross build" >&5
+ $as_echo_n "checking for python interpreter for cross build... " >&6; }
+-    if test -z "$PYTHON_FOR_BUILD"; then
+-        for interp in python$PACKAGE_VERSION python3 python; do
+-	    which $interp >/dev/null 2>&1 || continue
+-	    if $interp -c 'import sys;sys.exit(not sys.version_info[:2] >= (3,3))'; then
+-	        break
+-	    fi
+-            interp=
+-	done
+-        if test x$interp = x; then
+-	    as_fn_error $? "python$PACKAGE_VERSION interpreter not found" "$LINENO" 5
+-	fi
+-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $interp" >&5
+-$as_echo "$interp" >&6; }
+-	PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp
+-    fi
++    PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) $(srcdir)/$(BUILDPYTHON)_host'
+ elif test "$cross_compiling" = maybe; then
+     as_fn_error $? "Cross compiling required --host=HOST-TUPLE and --build=ARCH" "$LINENO" 5
+ else
diff --git a/apps/Python/Python-3.5.0.tar.gz b/apps/Python/Python-3.5.0.tar.gz
new file mode 100644
index 0000000..5872c26
Binary files /dev/null and b/apps/Python/Python-3.5.0.tar.gz differ

BR,
Manuel

-----Original Message-----
From: nard-bounces at arbetsmyra.dyndns.org [mailto:nard-bounces at arbetsmyra.dyndns.org] On Behalf Of Ronny Nilsson
Sent: Mittwoch, 11. November 2015 20:10
To: Nard SDK mailing list
Subject: Re: Custom application cannot be compiled

Hi Manuel
You are correct, the tarfile should have the same name as the directory. In 
your case it would be /apps/python3/python3-3.5.0.tar.gz where
	PKG_VER = python3-3.5.0
	PKG_NAME = python3
By using a common scheme all Makefiles can share large parts (which are in the 
top Rules.mk as a lib).

I hope you get it to work. However, should you not I can reveal that there is 
help on the way. I've created a Raspbian compatibility layer which enables to 
pull in small pieces from Raspbian Wheezy and put it "on top" of Nard. It 
will act as a complement if one need something specific which is not yet 
available in Nard. I'm doing testing of it now and hope to release it in a 
few weeks. Python 2.7 is tested and works, haven't tried Python 3 yet though.

BR
/Ronny



---------------------------------------------------
> Hi,
>
> After struggling very much time, I found the error: the tar.* file
> containing the sources is required to contain the *complete* name of the
> application directory. I created a directory called "ptyhon3" and the tar.*
> file was called Python-3.5.0.tar.gz.
>
> What's actually the content of $(PKG_VER)?
>
> BR,
> Manuel
>
> -----Original Message-----
> From: nard-bounces at arbetsmyra.dyndns.org
> [mailto:nard-bounces at arbetsmyra.dyndns.org] On Behalf Of FAUX Manuel Sent:
> Mittwoch, 11. November 2015 16:57
> To: nard at arbetsmyra.dyndns.org
> Subject: Custom application cannot be compiled
>
> Hi,
>
> I'm trying to add a customized application to nard, but my Makefile always
> fails with "No rule to make taget Python-3.5.0", even I've defined the
> target as mentioned in the example on the nard webpage:
>
> .PHONY: all $(PKG_VER)
> all: $(PATH_FS)/usr/sbin/$(PKG_NAME)
> $(PKG_VER): $(PATH_FS)/usr/sbin/$(PKG_NAME)
>
>
> .PHONY: install
> install: $(PATH_FS)/usr/sbin/$(PKG_NAME)
> $(PATH_FS)/usr/sbin/$(PKG_NAME): $(PKG_VER)/.nard-build
>         install -m 0755 -d "$(dir $@)"
>         $(CP) -uavf "$(PKG_VER)/$(PKG_NAME)" "$@"
>
>
> $(PKG_VER)/.nard-build: $(std-deps)
>         cd $(dir $@) && ./configure CFLAGS="$(CROSS_CFLAGS)" \
>                 --prefix=/usr --host=$(CROSS_TUPLE)
>         $(MAKE) -C "$(PKG_VER)"
>         touch "$@"
>
> Without diving too deep into the Rules.mk provided by nard, I guess
> $(PKG_VER) is being set to the second part of PKGS_APPS after the slash; so
> I've set
> PKGS_APPS += python3/Python-3.5.0 and so there should be a rule for
> $(PKG_VER), which is some lines below...
>
> What am I missing?
>
>
> Thanks,
> Manuel





More information about the Nard mailing list