Please provide some tips for creating a new "recipe" including a package from source

Chris Miller (MESL) chris.miller at mesl.co.uk
Tue Sep 2 19:46:02 CEST 2014


Thank you for the useful hints, Ronny - I should be able to crack it 
from that.
B/R,  Chris
-------- Original Message --------
*Subject: *Re: Please provide some tips for creating a new "recipe" 
including a package from source
*From: *Ronny Nilsson <rln-nard at arbetsmyra.dyndns.org>
*To: *chris.miller at mesl.co.uk
*CC: *nard at arbetsmyra.dyndns.org, "nf at file.mesl.co.uk" <nf at file.mesl.co.uk>
*Date: *01/09/2014 13:58
> Hi
> I will try to guide you through the process of adding a new package. This is
> still a TODO in the documentation. :-/
>
> Adding a new application requires some general knowledge about Make, shell
> scripts and gcc. However, have you ever written a Makefile you'll be fine.
> Start with creating a directory and download the package. It's advised to name
> the directory in same manner as the downloaded file:
> 	- cd nard/apps/
> 	- mkdir myapp
> 	- wget http://....myapp-1.0.tar.gz
>
> Extract your downloaded tarball and inspect how to build it. Does it have a
> "configure" script? Is there a Makefile already? Try building it for your
> local PC first! (If you can't build it for your host PC you won't be able to
> cross-compile it either.)
>
> When creating your custom cross-compile Makefile you might want to look at
> some existing ones first. Chances are you can reuse 90% of them.
> 	- nard/apps/ser2net/Makefile
> 	- nard/apps/wireless_tools/Makefile
> are good learn from.
>
>
> - cp nard/apps/wireless_tools/Makefile nard/apps/myapp
>
> Open the copied Makefile in a text editor and find the target
> 	"$(PKG_VER)/.nard-build"
>
> With the knowledge of how to build the application for your PC, add the
> necessery commands to the
> 	"$(PKG_VER)/.nard-build"
> target. For applications using autoconf something like this is a god start:
> 	cd $(dir $@) && env CFLAGS="$(CROSS_CFLAGS)" \
> 	./configure --sysconfdir=/etc --prefix=/usr \
> 	--host=$(CROSS_TUPLE)
> 	$(MAKE) -C "$(PKG_VER)"
>
> Next open the product recipe in a text editor:
> 	emacs nard/platform/skeleton/Rules.mk
>
> Add a line to the PKGS_APPS list. Note the format of the existing lines! First
> the application directory name, followed by a slash and last the application
> directory name again with a trailing version number. This should resolve to
> your downloaded tarball. For example, by adding:
> 	PKGS_APPS += myapp/myapp-1.0
> There should be a corresponding file:
> 	nard/apps/myapp/myapp-1.0.tar.gz
> which will be automatically extracted during the build.
>
> Now try building it:
> 	cd nard/apps/myapp/
> 	make
>
> /Ronny
>
>
>
> ------------------------------------
>> I tried to create a new recipe which comprised "skeleton" plus "linphonec":
>> - I used git to clone the source for linphone to apps/linphone
>> - I copied the whole of  platform/skeleton to a new folder
>> platform/christest
>> I then added the line
>> PKGS_APPS += linphone to /platform/christest/Rules.mk
>>
>> Then I returned to my nard folder and did
>> make christest
>>
>> But was told that Make does not know how to make christest.
>>
>> So I then simply edited platform/skeleton/Rules.mk in the same way.
>>
>> This time when I do "make skeleton", it enters the apps/linphone
>> folder.  This fails,  but I suspect that's my fault for now, (as
>> autogen.sh does not run cleanly - I need to fix that first)
>>
>> so two questions:
>>
>> 1) What is the correct way to create a new "product"
>> 2) Apart from knobbling Makefiles to use the correct (cross-) toolchain,
>> does anything else need to be done to incorporate a new package in to
>> the build?
>>
>> With thanks,
>>
>> Chris




More information about the Nard mailing list