PDA

Bekijk de volledige versie : Contributors needed for wl500g packages



Jean-Fabrice
26-04-2005, 21:05
wl500g software packages are now growing through the unslung build system (http://wl500g.info/showthread.php?t=2036) provided by the nslu2-linux community (cvs, build machine, hosting and many help)
I'm experiencing the build system for a few weeks and found it's now time for a "help wanted" call ;)

So, I would like to know if any of you would be interested in contributing wl500g (and maybe so nslu2) packages using the unslung build system. That means, instead of asking for 'foo' or 'bar' packages at the wish list (http://wl500g.info/showthread.php?t=2087) you would like to have on your favorite Asus toy, make 'em ! ;)

I can share my personnal knowledge on the build system and would be happy to help anyone wanting to contribute on some packages.

No developper skill is really needed to create packages. At the beginning, you should just know a few linux command (like vi, cp, rm, mv, tar, gzip), and for the rest, the 'man' and Google are good places to look at.

I may have forgotten to say Linux is mandatory to test your package. As far as I'm concerned, my laptop is my everyday job's laptop running XP.... and running Colinux on top of it (XP service). Thus, I have either XP for work and Colinux for unslung running at the same time on the same machine.

Question is now open : Are there any volunteers ?

JF

barsju
27-04-2005, 07:48
Well follow up the question with a quick little howto get started, and I think it would be even more tempting for people to try it out. No need to make it too detailed, just some pointers. Like what is needed (including links), and the most basic commands to get started...

If this is already on the forum, you should link to it..

S.

macsat
27-04-2005, 09:11
Hi

I'll be happy to give a hand in converting UNSLUNG packages to the WL500 or even creating new packages.

But....

I will need some help in getting started.

I do know linux, and I do run linux, but some "getting started" instructions might be nice !

Jean-Fabrice
27-04-2005, 11:02
You are both right macsat and barsju.

Here are a few more informations (some are deducted) :
The unslung build system (http://sourceforge.net/projects/nslu/) is a set of makefiles, tools and directories, hosted at sourceforge, and used by the nslu2-linux.org (http://www.nslu2-linux.org/) developpers to improve the Linksys nslu2 (http://www.linksys.com/products/product.asp?grid=35&prid=640) (petname : slug) device : developping firmware and porting GPL softwares to it the industrialized way.

Recently, nslu2-linux.org ppl and Oleg (perhaps others) discussed together and in a joint effort, updated the original nslu2-targetted unslung build system to support our favorites toys from Asus : update of the main Makefile, make use of Oleg's provided toolchain for building Asus fw and so on.

That means that we (Asus fan guys) have now access to a powerfull build system with which we can create our packages (.ipk) and make them available for both communities (nslu2 and asus).

Now, in brief, how the unslung build system works :

You need, as I said previously, to have access to a x86 linux box (Colinux Debian is very convenient for me) with both original toolchain from Asus GPL tarball (http://www.asus.com.tw/support/download/selectftp.aspx?l1_id=11&l2_id=2&l3_id=0&m_id=4&f_name=GPL_1927.zip) and last Oleg's toolchain (http://wl500g.dyndns.org/uClibc-0.9.19/hndtools-mipsel-uclibc-3.2.3-full.tar.bz2) installed.
Once everything is correcly installed (Asus and Oleg's toolchain sit in /opt/brcm). The next step is to get your own copy of the unslung build system on your linux using cvs checkout. Create a directory on your linux box, say /home/slug and checkout the cvs tree by running


cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nslu co unslung

This will create a copy of the build system on your box, under /home/slug/unslung


Under /home/slug/unslung, you will find a bunch of directories plus a Makefile. Here is the usage of them :

CVS : use for CVS synchronisation with sourceforge repository. Not directly related to the build system
builds : where package are compiled/build/created
downloads : where original source files needed by packages are stored after being fetched from the Internet
make : the main directory for all the packages makefile. Files in this directory are included in the top Makefile making it know each of the existing package
packages : not use on your developper machine. Used on the official build system which create final package.
staging: use to compile depending packages when the one you are building have dependencies
toolchain : some tools
sources: if your package / makefile needs some patches or init script, you can place them here, in a subdirectory named sources/<packagename>
Makefile : the main Makefile where known packages are linked, where you can select your target device (nslu2 or wl500g). Usually no need to edit it very often



Creating a new package is then as simple as :

copying the provided make/template.mk to make/<your_package_name>.mk
Edit this one to fit your package
test it builds fine by running make <packagename>
test your package creates fine by running make <packagename>-ipk
Send me your .mk and associated sources/<packagename>/stuff for checkin in the cvs repository or create your own sourceforge id and ask rwhitby for write access to the cvs
Tell me when files have been checked in so I can launch a build on the official build machine which will then update wl500g packages feed (http://ipkg.nslu2-linux.org/feeds/unslung/wl500g/)


You will have understood that the most tricky part is editing you <packagename>.mk to draw the download/configure/build story of your package.
I'm still not very powerfull in that but looking at the existant makefile is a great help for tips and trick.

Now, some usefull link :

Add A Package To Unslung (http://www.nslu2-linux.org/wiki/Unslung/AddAPackageToUnslung) :more detailed explanation on how to write your package
Packaging Best Practices (http://www.nslu2-linux.org/wiki/Unslung/PackagingBestPractices) : best practices and rules for package creation
irc.freenode.net / channel #nslu2-linux : IRC channel of nslu2-linux developpers where you can request support for package creation
wl500 packages feeds (http://ipkg.nslu2-linux.org/feeds/unslung/wl500g/) : where wl500 packages are stored after having been built on the official build machine.


And some tips (to be grown) :

Use the unslung build system on your linux with an unprivileged account. Creating and building a package should not require root rights. Building with a unprivilege account will show you when a software try to use root account, so you can patch it not to do so.
often run a 'cvs update -dP' to maintain your cvs tree up to date. A lot of developpers are using the sourceforge cvs so freshing your source tree is a good idea
for inspiration, take a look at make/nylon.mk which is my first and simple package
for a deep test of your <packagename>.mk, run 'make distclean directories ipkg-utils <packagename>'. Doing so will ensure that your package build fine without any forgotten dependency. 'make distclean' clean the entire unslung build system by deleting directories, 'make directories' will recreate directories listed at the beginning and make ipkg-utils will install ipkg stuff needed for ipkg creation of your package.

I hope this is pretty clear. Don't hesitate to ask for help.

See you soon on #nslu2-linux ;)

Styno
27-04-2005, 11:05
Nice HOWTO JF, good work !

barsju
27-04-2005, 13:13
Very nice indeed! Now I just need some spare time! Let me know if you have some lying around! :)

llagendiijk
30-04-2005, 21:15
Thanks for this great build tool guys. I have already quite a few packages installed.
I have myself built quagga (the routing suite) using the build system. How should I go about releasing it? I have only built it for the wl-500g and am using it with ospf. Works great.
Any suggestions on how to release this to the public? I can make it available on my own web-server if needed.

I am having a few issues with the released packages:
1) I would like to use man, but that depends on groff. Groff does however depend on libstdc++, and that is not available? The build system does not build it but tries to copy it from somewhere in the toolchain, but that fails. I have not yet had enough time to investigate this in more detail, any suggestion?

2) which does not work as it does not seem to be able to get the path from the environment. Did somebody solve this already, or should I debug myself?

regards, Louis

Jean-Fabrice
01-05-2005, 06:44
Hi llagendiijk.




I have myself built quagga (the routing suite) using the build system. How should I go about releasing it?


Well, you can either send me your .mk plus patches. I will commit your stuff to the CVS and build the official release or you can send your sf.net id to rwhitby who will give you write access to the cvs. Tell me when you're done commiting your work and I will buil the official release.


I have only built it for the wl-500g and am using it with ospf. Works great.
Any suggestions on how to release this to the public? I can make it available on my own web-server if needed.

nslu2 official feed is considered as a safe packages place. I invite you to publish your work in the sf CVS where the package managers can build the official ipk release of your package.


I am having a few issues with the released packages:
1) I would like to use man, but that depends on groff. Groff does however depend on libstdc++, and that is not available? The build system does not build it but tries to copy it from somewhere in the toolchain, but that fails. I have not yet had enough time to investigate this in more detail, any suggestion?

the libstdc++ package copy the libraries from the nslu2 toolchain. We don't have such library in the uclibc toolchain, that's why libstdc++ package were not released and depending packages not released too (mysql, groff, etc...)


2) which does not work as it does not seem to be able to get the path from the environment. Did somebody solve this already, or should I debug myself?

What path are you talking about ?


regards, Louis

Thank you very much Louis for using the unslung build system for your package. Don't hesitate to pm me for any other help.

Jean-Fabrice

llagendiijk
02-05-2005, 19:26
Hi llagendiijk.

the libstdc++ package copy the libraries from the nslu2 toolchain. We don't have such library in the uclibc toolchain, that's why libstdc++ package were not released and depending packages not released too (mysql, groff, etc...)

What path are you talking about ?

Thank you very much Louis for using the unslung build system for your package. Don't hesitate to pm me for any other help.

Jean-Fabrice
Please see PM for your offer to help getting quagga released.

Ok, thanks for the answer about lbstdc++ . I'll see whether I even get the time to work on porting lisbstdc++ properly then....

And about which: Which uses getenv to fetch the PATH shell variable, and that appears not to work. I did some testing and found that getenv("CWD") does not work either. It appears that getenv uclibc is broken

kind regards, Louis

macsat
11-05-2005, 22:19
Hi

I just wanted to inform that I have made a more step 4 step like-guide for people that might need that at : www.macsat.com/wlguide/

cthings
08-09-2005, 23:01
Hi,

I've followed Jean-Fabrice's howto and want to build some packages of my own. I've created a pound.mk file in the "make" directory of unslung.
When I try to make, using "make pound", from the unslung directory, I get "make: *** No rule to make target `pound'. Stop.".
Am I missing something ?

thanx in advance,

Niels


contents of pound.mk
----------------
################################################## #########
#
# Pound
#
################################################## #########

# You must replace "Pound" and "POUND" with the lower case name and
# upper case name of your new package. Some places below will say
# "Do not change this" - that does not include this global change,
# which must always be done to ensure we have unique names.

#
# POUND_VERSION, POUND_SITE and POUND_SOURCE define
# the upstream location of the source code for the package.
# POUND_DIR is the directory which is created when the source
# archive is unpacked.
# POUND_UNZIP is the command used to unzip the source.
# It is usually "zcat" (for .gz) or "bzcat" (for .bz2)
#
# You should change all these variables to suit your package.
# Please make sure that you add a description, and that you
# list all your packages' dependencies, seperated by commas.
#
# If you list yourself as MAINTAINER, please give a valid email
# address, and indicate your irc nick if it cannot be easily deduced
# from your name or email address. If you leave MAINTAINER set to
# "NSLU2 Linux" other developers will feel free to edit.
#
POUND_SITE=http://www.apsis.ch/pound/
POUND_VERSION=1.9.1
POUND_SOURCE=Pound-$(POUND_VERSION).tgz
POUND_DIR=Pound-$(POUND_VERSION)
POUND_UNZIP=zcat
POUND_MAINTAINER=NSLU2 Linux <nslu2-linux@yahoogroups.com>
POUND_DESCRIPTION=Describe Pound here.
POUND_SECTION=
POUND_PRIORITY=optional
POUND_DEPENDS=openssl
POUND_SUGGESTS=
POUND_CONFLICTS=

#
# POUND_IPK_VERSION should be incremented when the ipk changes.
#
POUND_IPK_VERSION=1

#
# POUND_CONFFILES should be a list of user-editable files
POUND_CONFFILES=/usr/local/etc/pound.cfg

#
# POUND_PATCHES should list any patches, in the the order in
# which they should be applied to the source code.
#
POUND_PATCHES=

#
# If the compilation of the package requires additional
# compilation or linking flags, then list them here.
#
POUND_CPPFLAGS=
POUND_LDFLAGS=

#
# POUND_BUILD_DIR is the directory in which the build is done.
# POUND_SOURCE_DIR is the directory which holds all the
# patches and ipkg control files.
# POUND_IPK_DIR is the directory in which the ipk is built.
# POUND_IPK is the name of the resulting ipk files.
#
# You should not change any of these variables.
#
POUND_BUILD_DIR=$(BUILD_DIR)/Pound
POUND_SOURCE_DIR=$(SOURCE_DIR)/Pound
POUND_IPK_DIR=$(BUILD_DIR)/Pound-$(POUND_VERSION)-ipk
POUND_IPK=$(BUILD_DIR)/Pound_$(POUND_VERSION)-$(POUND_IPK_VERSION)_$(TARGET_ARCH).ipk

#
# This is the dependency on the source code. If the source is missing,
# then it will be fetched from the site using wget.
#
$(DL_DIR)/$(POUND_SOURCE):
$(WGET) -P $(DL_DIR) $(POUND_SITE)/$(POUND_SOURCE)

#
# The source code depends on it existing within the download directory.
# This target will be called by the top level Makefile to download the
# source code's archive (.tar.gz, .bz2, etc.)
#
Pound-source: $(DL_DIR)/$(POUND_SOURCE) $(POUND_PATCHES)

#
# This target unpacks the source code in the build directory.
# If the source archive is not .tar.gz or .tar.bz2, then you will need
# to change the commands here. Patches to the source code are also
# applied in this target as required.
#
# This target also configures the build within the build directory.
# Flags such as LDFLAGS and CPPFLAGS should be passed into configure
# and NOT $(MAKE) below. Passing it to configure causes configure to
# correctly BUILD the Makefile with the right paths, where passing it
# to Make causes it to override the default search paths of the compiler.
#
# If the compilation of the package requires other packages to be staged
# first, then do that first (e.g. "$(MAKE) <bar>-stage <baz>-stage").
#
# If the package uses GNU libtool, you should invoke $(PATCH_LIBTOOL) as
# shown below to make various patches to it.
#
$(POUND_BUILD_DIR)/.configured: $(DL_DIR)/$(POUND_SOURCE) $(POUND_PATCHES)
$(MAKE) <bar>-stage <baz>-stage
rm -rf $(BUILD_DIR)/$(POUND_DIR) $(POUND_BUILD_DIR)
$(POUND_UNZIP) $(DL_DIR)/$(POUND_SOURCE) | tar -C $(BUILD_DIR) -xvf -
if test -n "$(POUND_PATCHES)" ; \
then cat $(POUND_PATCHES) | \
patch -d $(BUILD_DIR)/$(POUND_DIR) -p0 ; \
fi
if test "$(BUILD_DIR)/$(POUND_DIR)" != "$(POUND_BUILD_DIR)" ; \
then mv $(BUILD_DIR)/$(POUND_DIR) $(POUND_BUILD_DIR) ; \
fi
(cd $(POUND_BUILD_DIR); \
$(TARGET_CONFIGURE_OPTS) \
CPPFLAGS="$(STAGING_CPPFLAGS) $(POUND_CPPFLAGS)" \
LDFLAGS="$(STAGING_LDFLAGS) $(POUND_LDFLAGS)" \
./configure \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_TARGET_NAME) \
--target=$(GNU_TARGET_NAME) \
--prefix=/opt \
--disable-nls \
--disable-static \
)
$(PATCH_LIBTOOL) $(POUND_BUILD_DIR)/libtool
touch $(POUND_BUILD_DIR)/.configured

Pound-unpack: $(POUND_BUILD_DIR)/.configured

#
# This builds the actual binary.
#
$(POUND_BUILD_DIR)/.built: $(POUND_BUILD_DIR)/.configured
rm -f $(POUND_BUILD_DIR)/.built
$(MAKE) -C $(POUND_BUILD_DIR)
touch $(POUND_BUILD_DIR)/.built

#
# This is the build convenience target.
#
Pound: $(POUND_BUILD_DIR)/.built

#
# If you are building a library, then you need to stage it too.
#
$(POUND_BUILD_DIR)/.staged: $(POUND_BUILD_DIR)/.built
rm -f $(POUND_BUILD_DIR)/.staged
$(MAKE) -C $(POUND_BUILD_DIR) DESTDIR=$(STAGING_DIR) install
touch $(POUND_BUILD_DIR)/.staged

Pound-stage: $(POUND_BUILD_DIR)/.staged

#
# This rule creates a control file for ipkg. It is no longer
# necessary to create a seperate control file under sources/Pound
#
$(POUND_IPK_DIR)/CONTROL/control:
@install -d $(POUND_IPK_DIR)/CONTROL
@rm -f $@
@echo "Package: Pound" >>$@
@echo "Architecture: $(TARGET_ARCH)" >>$@
@echo "Priority: $(POUND_PRIORITY)" >>$@
@echo "Section: $(POUND_SECTION)" >>$@
@echo "Version: $(POUND_VERSION)-$(POUND_IPK_VERSION)" >>$@
@echo "Maintainer: $(POUND_MAINTAINER)" >>$@
@echo "Source: $(POUND_SITE)/$(POUND_SOURCE)" >>$@
@echo "Description: $(POUND_DESCRIPTION)" >>$@
@echo "Depends: $(POUND_DEPENDS)" >>$@
@echo "Suggests: $(POUND_SUGGESTS)" >>$@
@echo "Conflicts: $(POUND_CONFLICTS)" >>$@

#
# This builds the IPK file.
#
# Binaries should be installed into $(POUND_IPK_DIR)/opt/sbin or $(POUND_IPK_DIR)/opt/bin
# (use the location in a well-known Linux distro as a guide for choosing sbin or bin).
# Libraries and include files should be installed into $(POUND_IPK_DIR)/opt/{lib,include}
# Configuration files should be installed in $(POUND_IPK_DIR)/opt/etc/Pound/...
# Documentation files should be installed in $(POUND_IPK_DIR)/opt/doc/Pound/...
# Daemon startup scripts should be installed in $(POUND_IPK_DIR)/opt/etc/init.d/S??Pound
#
# You may need to patch your application to make it use these locations.
#
$(POUND_IPK): $(POUND_BUILD_DIR)/.built
rm -rf $(POUND_IPK_DIR) $(BUILD_DIR)/Pound_*_$(TARGET_ARCH).ipk
$(MAKE) -C $(POUND_BUILD_DIR) DESTDIR=$(POUND_IPK_DIR) install-strip
install -d $(POUND_IPK_DIR)/opt/etc/
install -m 644 $(POUND_SOURCE_DIR)/Pound.conf $(POUND_IPK_DIR)/opt/etc/Pound.conf
install -d $(POUND_IPK_DIR)/opt/etc/init.d
install -m 755 $(POUND_SOURCE_DIR)/rc.Pound $(POUND_IPK_DIR)/opt/etc/init.d/SXXPound
$(MAKE) $(POUND_IPK_DIR)/CONTROL/control
install -m 755 $(POUND_SOURCE_DIR)/postinst $(POUND_IPK_DIR)/CONTROL/postinst
install -m 755 $(POUND_SOURCE_DIR)/prerm $(POUND_IPK_DIR)/CONTROL/prerm
echo $(POUND_CONFFILES) | sed -e 's/ /\n/g' > $(POUND_IPK_DIR)/CONTROL/conffiles
cd $(BUILD_DIR); $(IPKG_BUILD) $(POUND_IPK_DIR)

#
# This is called from the top level makefile to create the IPK file.
#
Pound-ipk: $(POUND_IPK)

#
# This is called from the top level makefile to clean all of the built files.
#
Pound-clean:
rm -f $(POUND_BUILD_DIR)/.built
-$(MAKE) -C $(POUND_BUILD_DIR) clean

#
# This is called from the top level makefile to clean all dynamically created
# directories.
#
Pound-dirclean:
rm -rf $(BUILD_DIR)/$(POUND_DIR) $(POUND_BUILD_DIR) $(POUND_IPK_DIR) $(POUND_IPK)

Jean-Fabrice
08-09-2005, 23:15
Hi,

could you please post your pound.mk here ?

JF

cthings
09-09-2005, 20:05
Hello Jean-Fabrice,

thanx for responding so quickly.
I found out part of the problem myself already: As het program is named Pound(-x.y.tgz), I replaced all the <foo>'s with Pound in stead of pound, however the filename was still pound.mk, but I missed that one completely last night.
Making starts now and downloading goes well, and than a series of warnings etc. terminate the make proces. I'll check it out myself first before bothering you guys with it.
By the way, I have added pound.mk to my previous post. The config is not yet complient with the "PackagingBestPractices"..

regards,

Niels

22.20: Ok gotten a lot further, but stuck now :(

After adding opensll dep's, a lot of problem went away :)

however now I get :
checking for strtol... yes
checking for X509_STORE_set_flags... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
sed -i -e 's|^sys_lib_search_path_spec=.*|sys_lib_search_pat h_spec="/opt/brcm/hndtools-mipsel-uclibc/lib /home/niels/unslung/staging/opt/lib"|' -e 's|^sys_lib_dlsearch_path_spec=.*|sys_lib_dlsearch _path_spec=""|' /home/niels/unslung/builds/Pound/libtool
sed: can't read /home/niels/unslung/builds/Pound/libtool: No such file or directory
make: *** [/home/niels/unslung/builds/Pound/.configured] Error 2

At first I tough I'll just add libtool to the dep's, and now even though libtool ans openssl compile fine, the above error occures. All include paths in the Makefile seem ok, so whats going wrong?

I've include an modified Pound.mk file below
--------
################################################## #########
#
# Pound
#
################################################## #########

# You must replace "Pound" and "POUND" with the lower case name and
# upper case name of your new package. Some places below will say
# "Do not change this" - that does not include this global change,
# which must always be done to ensure we have unique names.

#
# POUND_VERSION, POUND_SITE and POUND_SOURCE define
# the upstream location of the source code for the package.
# POUND_DIR is the directory which is created when the source
# archive is unpacked.
# POUND_UNZIP is the command used to unzip the source.
# It is usually "zcat" (for .gz) or "bzcat" (for .bz2)
#
# You should change all these variables to suit your package.
# Please make sure that you add a description, and that you
# list all your packages' dependencies, seperated by commas.
#
# If you list yourself as MAINTAINER, please give a valid email
# address, and indicate your irc nick if it cannot be easily deduced
# from your name or email address. If you leave MAINTAINER set to
# "NSLU2 Linux" other developers will feel free to edit.
#
POUND_SITE=http://www.apsis.ch/pound/
POUND_VERSION=1.9.1
POUND_SOURCE=Pound-$(POUND_VERSION).tgz
POUND_DIR=Pound-$(POUND_VERSION)
POUND_UNZIP=zcat
POUND_MAINTAINER=NSLU2 Linux <nslu2-linux@yahoogroups.com>
POUND_DESCRIPTION=Describe Pound here.
POUND_SECTION=net
POUND_PRIORITY=optional
POUND_DEPENDS=openssl,libtool
POUND_SUGGESTS=
POUND_CONFLICTS=

#
# POUND_IPK_VERSION should be incremented when the ipk changes.
#
POUND_IPK_VERSION=1

#
# POUND_CONFFILES should be a list of user-editable files
POUND_CONFFILES=/usr/local/etc/pound.cfg

#
# POUND_PATCHES should list any patches, in the the order in
# which they should be applied to the source code.
#
POUND_PATCHES=

#
# If the compilation of the package requires additional
# compilation or linking flags, then list them here.
#
POUND_CPPFLAGS=-I$(STAGING_INCLUDE_DIR)/openssl -I$(STAGING_INCLUDE_DIR)/libtool
POUND_LDFLAGS=

#
# POUND_BUILD_DIR is the directory in which the build is done.
# POUND_SOURCE_DIR is the directory which holds all the
# patches and ipkg control files.
# POUND_IPK_DIR is the directory in which the ipk is built.
# POUND_IPK is the name of the resulting ipk files.
#
# You should not change any of these variables.
#
POUND_BUILD_DIR=$(BUILD_DIR)/Pound
POUND_SOURCE_DIR=$(SOURCE_DIR)/Pound
POUND_IPK_DIR=$(BUILD_DIR)/Pound-$(POUND_VERSION)-ipk
POUND_IPK=$(BUILD_DIR)/Pound_$(POUND_VERSION)-$(POUND_IPK_VERSION)_$(TARGET_ARCH).ipk

#
# This is the dependency on the source code. If the source is missing,
# then it will be fetched from the site using wget.
#
$(DL_DIR)/$(POUND_SOURCE):
$(WGET) -P $(DL_DIR) $(POUND_SITE)/$(POUND_SOURCE)

#
# The source code depends on it existing within the download directory.
# This target will be called by the top level Makefile to download the
# source code's archive (.tar.gz, .bz2, etc.)
#
Pound-source: $(DL_DIR)/$(POUND_SOURCE) $(POUND_PATCHES)

#
# This target unpacks the source code in the build directory.
# If the source archive is not .tar.gz or .tar.bz2, then you will need
# to change the commands here. Patches to the source code are also
# applied in this target as required.
#
# This target also configures the build within the build directory.
# Flags such as LDFLAGS and CPPFLAGS should be passed into configure
# and NOT $(MAKE) below. Passing it to configure causes configure to
# correctly BUILD the Makefile with the right paths, where passing it
# to Make causes it to override the default search paths of the compiler.
#
# If the compilation of the package requires other packages to be staged
# first, then do that first (e.g. "$(MAKE) <bar>-stage <baz>-stage").
#
# If the package uses GNU libtool, you should invoke $(PATCH_LIBTOOL) as
# shown below to make various patches to it.
#
$(POUND_BUILD_DIR)/.configured: $(DL_DIR)/$(POUND_SOURCE) $(POUND_PATCHES)
$(MAKE) libtool-stage openssl-stage
rm -rf $(BUILD_DIR)/$(POUND_DIR) $(POUND_BUILD_DIR)
$(POUND_UNZIP) $(DL_DIR)/$(POUND_SOURCE) | tar -C $(BUILD_DIR) -xvf -
if test -n "$(POUND_PATCHES)" ; \
then cat $(POUND_PATCHES) | \
patch -d $(BUILD_DIR)/$(POUND_DIR) -p0 ; \
fi
if test "$(BUILD_DIR)/$(POUND_DIR)" != "$(POUND_BUILD_DIR)" ; \
then mv $(BUILD_DIR)/$(POUND_DIR) $(POUND_BUILD_DIR) ; \
fi
(cd $(POUND_BUILD_DIR); \
$(TARGET_CONFIGURE_OPTS) \
CPPFLAGS="$(STAGING_CPPFLAGS) $(POUND_CPPFLAGS)" \
LDFLAGS="$(STAGING_LDFLAGS) $(POUND_LDFLAGS)" \
./configure \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_TARGET_NAME) \
--target=$(GNU_TARGET_NAME) \
--prefix=/opt \
--disable-nls \
--disable-static \
)
$(PATCH_LIBTOOL) $(POUND_BUILD_DIR)/libtool
touch $(POUND_BUILD_DIR)/.configured

Pound-unpack: $(POUND_BUILD_DIR)/.configured

#
# This builds the actual binary.
#
$(POUND_BUILD_DIR)/.built: $(POUND_BUILD_DIR)/.configured --with-ssl=$(STAGING_INCLUDE_DIR)/openssl
rm -f $(POUND_BUILD_DIR)/.built
$(MAKE) -C $(POUND_BUILD_DIR)
touch $(POUND_BUILD_DIR)/.built

#
# This is the build convenience target.
#
Pound: $(POUND_BUILD_DIR)/.built

#
# If you are building a library, then you need to stage it too.
#
$(POUND_BUILD_DIR)/.staged: $(POUND_BUILD_DIR)/.built
rm -f $(POUND_BUILD_DIR)/.staged
$(MAKE) -C $(POUND_BUILD_DIR) DESTDIR=$(STAGING_DIR) install
touch $(POUND_BUILD_DIR)/.staged

Pound-stage: $(POUND_BUILD_DIR)/.staged

#
# This rule creates a control file for ipkg. It is no longer
# necessary to create a seperate control file under sources/Pound
#
$(POUND_IPK_DIR)/CONTROL/control:
@install -d $(POUND_IPK_DIR)/CONTROL
@rm -f $@
@echo "Package: Pound" >>$@
@echo "Architecture: $(TARGET_ARCH)" >>$@
@echo "Priority: $(POUND_PRIORITY)" >>$@
@echo "Section: $(POUND_SECTION)" >>$@
@echo "Version: $(POUND_VERSION)-$(POUND_IPK_VERSION)" >>$@
@echo "Maintainer: $(POUND_MAINTAINER)" >>$@
@echo "Source: $(POUND_SITE)/$(POUND_SOURCE)" >>$@
@echo "Description: $(POUND_DESCRIPTION)" >>$@
@echo "Depends: $(POUND_DEPENDS)" >>$@
@echo "Suggests: $(POUND_SUGGESTS)" >>$@
@echo "Conflicts: $(POUND_CONFLICTS)" >>$@

#
# This builds the IPK file.
#
# Binaries should be installed into $(POUND_IPK_DIR)/opt/sbin or $(POUND_IPK_DIR)/opt/bin
# (use the location in a well-known Linux distro as a guide for choosing sbin or bin).
# Libraries and include files should be installed into $(POUND_IPK_DIR)/opt/{lib,include}
# Configuration files should be installed in $(POUND_IPK_DIR)/opt/etc/Pound/...
# Documentation files should be installed in $(POUND_IPK_DIR)/opt/doc/Pound/...
# Daemon startup scripts should be installed in $(POUND_IPK_DIR)/opt/etc/init.d/S??Pound
#
# You may need to patch your application to make it use these locations.
#
$(POUND_IPK): $(POUND_BUILD_DIR)/.built
rm -rf $(POUND_IPK_DIR) $(BUILD_DIR)/Pound_*_$(TARGET_ARCH).ipk
$(MAKE) -C $(POUND_BUILD_DIR) DESTDIR=$(POUND_IPK_DIR) install-strip
install -d $(POUND_IPK_DIR)/opt/etc/
install -m 644 $(POUND_SOURCE_DIR)/Pound.conf $(POUND_IPK_DIR)/opt/etc/Pound.conf
install -d $(POUND_IPK_DIR)/opt/etc/init.d
install -m 755 $(POUND_SOURCE_DIR)/rc.Pound $(POUND_IPK_DIR)/opt/etc/init.d/SXXPound
$(MAKE) $(POUND_IPK_DIR)/CONTROL/control
install -m 755 $(POUND_SOURCE_DIR)/postinst $(POUND_IPK_DIR)/CONTROL/postinst
install -m 755 $(POUND_SOURCE_DIR)/prerm $(POUND_IPK_DIR)/CONTROL/prerm
echo $(POUND_CONFFILES) | sed -e 's/ /\n/g' > $(POUND_IPK_DIR)/CONTROL/conffiles
cd $(BUILD_DIR); $(IPKG_BUILD) $(POUND_IPK_DIR)

#
# This is called from the top level makefile to create the IPK file.
#
Pound-ipk: $(POUND_IPK)

#
# This is called from the top level makefile to clean all of the built files.
#
Pound-clean:
rm -f $(POUND_BUILD_DIR)/.built
-$(MAKE) -C $(POUND_BUILD_DIR) clean

#
# This is called from the top level makefile to clean all dynamically created
# directories.
#
Pound-dirclean:
rm -rf $(BUILD_DIR)/$(POUND_DIR) $(POUND_BUILD_DIR) $(POUND_IPK_DIR) $(POUND_IPK)

Jean-Fabrice
10-09-2005, 22:59
Hi,
Here is a pound.mk which seems to work.
What I change is :
- disable libtool dependency as I do not know why you need it
- create a small patch for Makefile.in (see it at then end this post) since default generated Makefile wants to build objects using host cc.
- discard the use of the provided "install" macro in the Makefile since it does not support "prefix" properly

This pound builds correctly. Let me know if it is correct for you.


################################################## #########
#
# pound
#
################################################## #########

# You must replace "pound" and "POUND" with the lower case name and
# upper case name of your new package. Some places below will say
# "Do not change this" - that does not include this global change,
# which must always be done to ensure we have unique names.

#
# POUND_VERSION, POUND_SITE and POUND_SOURCE define
# the upstream location of the source code for the package.
# POUND_DIR is the directory which is created when the source
# archive is unpacked.
# POUND_UNZIP is the command used to unzip the source.
# It is usually "zcat" (for .gz) or "bzcat" (for .bz2)
#
# You should change all these variables to suit your package.
# Please make sure that you add a description, and that you
# list all your packages' dependencies, seperated by commas.
#
# If you list yourself as MAINTAINER, please give a valid email
# address, and indicate your irc nick if it cannot be easily deduced
# from your name or email address. If you leave MAINTAINER set to
# "NSLU2 Linux" other developers will feel free to edit.
#
POUND_SITE=http://www.apsis.ch/pound/
POUND_VERSION=1.9.1
POUND_SOURCE=Pound-$(POUND_VERSION).tgz
POUND_DIR=Pound-$(POUND_VERSION)
POUND_UNZIP=zcat
POUND_MAINTAINER=NSLU2 Linux <nslu2-linux@yahoogroups.com>
POUND_DESCRIPTION=Describe pound here.
POUND_SECTION=net
POUND_PRIORITY=optional
POUND_DEPENDS=openssl
POUND_SUGGESTS=
POUND_CONFLICTS=

#
# POUND_IPK_VERSION should be incremented when the ipk changes.
#
POUND_IPK_VERSION=1

#
# POUND_CONFFILES should be a list of user-editable files
POUND_CONFFILES=/opt/etc/pound.conf

#
# POUND_PATCHES should list any patches, in the the order in
# which they should be applied to the source code.
#
POUND_PATCHES=$(POUND_SOURCE_DIR)/Makefile.in.patch

#
# If the compilation of the package requires additional
# compilation or linking flags, then list them here.
#
POUND_CPPFLAGS=
POUND_LDFLAGS=

#
# POUND_BUILD_DIR is the directory in which the build is done.
# POUND_SOURCE_DIR is the directory which holds all the
# patches and ipkg control files.
# POUND_IPK_DIR is the directory in which the ipk is built.
# POUND_IPK is the name of the resulting ipk files.
#
# You should not change any of these variables.
#
POUND_BUILD_DIR=$(BUILD_DIR)/pound
POUND_SOURCE_DIR=$(SOURCE_DIR)/pound
POUND_IPK_DIR=$(BUILD_DIR)/pound-$(POUND_VERSION)-ipk
POUND_IPK=$(BUILD_DIR)/pound_$(POUND_VERSION)-$(POUND_IPK_VERSION)_$(TARGET_ARCH).ipk

#
# This is the dependency on the source code. If the source is missing,
# then it will be fetched from the site using wget.
#
$(DL_DIR)/$(POUND_SOURCE):
$(WGET) -P $(DL_DIR) $(POUND_SITE)/$(POUND_SOURCE)

#
# The source code depends on it existing within the download directory.
# This target will be called by the top level Makefile to download the
# source code's archive (.tar.gz, .bz2, etc.)
#
pound-source: $(DL_DIR)/$(POUND_SOURCE) $(POUND_PATCHES)

#
# This target unpacks the source code in the build directory.
# If the source archive is not .tar.gz or .tar.bz2, then you will need
# to change the commands here. Patches to the source code are also
# applied in this target as required.
#
# This target also configures the build within the build directory.
# Flags such as LDFLAGS and CPPFLAGS should be passed into configure
# and NOT $(MAKE) below. Passing it to configure causes configure to
# correctly BUILD the Makefile with the right paths, where passing it
# to Make causes it to override the default search paths of the compiler.
#
# If the compilation of the package requires other packages to be staged
# first, then do that first (e.g. "$(MAKE) <bar>-stage <baz>-stage").
#
$(POUND_BUILD_DIR)/.configured: $(DL_DIR)/$(POUND_SOURCE) $(POUND_PATCHES)
$(MAKE) openssl-stage
rm -rf $(BUILD_DIR)/$(POUND_DIR) $(POUND_BUILD_DIR)
$(POUND_UNZIP) $(DL_DIR)/$(POUND_SOURCE) | tar -C $(BUILD_DIR) -xvf -
cat $(POUND_PATCHES) | patch -d $(BUILD_DIR)/$(POUND_DIR) -p1
mv $(BUILD_DIR)/$(POUND_DIR) $(POUND_BUILD_DIR)
(cd $(POUND_BUILD_DIR); \
$(TARGET_CONFIGURE_OPTS) \
CPPFLAGS="$(STAGING_CPPFLAGS) $(POUND_CPPFLAGS)" \
LDFLAGS="$(STAGING_LDFLAGS) $(POUND_LDFLAGS)" \
./configure \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_TARGET_NAME) \
--target=$(GNU_TARGET_NAME) \
--with-ssl=$(STAGING_DIR)/opt \
--prefix=/opt \
--disable-nls \
--disable-static \
)
touch $(POUND_BUILD_DIR)/.configured

pound-unpack: $(POUND_BUILD_DIR)/.configured

#
# This builds the actual binary.
#
$(POUND_BUILD_DIR)/.built: $(POUND_BUILD_DIR)/.configured
rm -f $(POUND_BUILD_DIR)/.built
$(MAKE) -C $(POUND_BUILD_DIR)
touch $(POUND_BUILD_DIR)/.built

#
# This is the build convenience target.
#
pound: $(POUND_BUILD_DIR)/.built

#
# If you are building a library, then you need to stage it too.
#
$(POUND_BUILD_DIR)/.staged: $(POUND_BUILD_DIR)/.built
rm -f $(POUND_BUILD_DIR)/.staged
$(MAKE) -C $(POUND_BUILD_DIR) DESTDIR=$(STAGING_DIR) install
touch $(POUND_BUILD_DIR)/.staged

pound-stage: $(POUND_BUILD_DIR)/.staged

#
# This rule creates a control file for ipkg. It is no longer
# necessary to create a seperate control file under sources/pound
#
$(POUND_IPK_DIR)/CONTROL/control:
@install -d $(POUND_IPK_DIR)/CONTROL
@rm -f $@
@echo "Package: pound" >>$@
@echo "Architecture: $(TARGET_ARCH)" >>$@
@echo "Priority: $(POUND_PRIORITY)" >>$@
@echo "Section: $(POUND_SECTION)" >>$@
@echo "Version: $(POUND_VERSION)-$(POUND_IPK_VERSION)" >>$@
@echo "Maintainer: $(POUND_MAINTAINER)" >>$@
@echo "Source: $(POUND_SITE)/$(POUND_SOURCE)" >>$@
@echo "Description: $(POUND_DESCRIPTION)" >>$@
@echo "Depends: $(POUND_DEPENDS)" >>$@
@echo "Suggests: $(POUND_SUGGESTS)" >>$@
@echo "Conflicts: $(POUND_CONFLICTS)" >>$@

#
# This builds the IPK file.
#
# Binaries should be installed into $(POUND_IPK_DIR)/opt/sbin or $(POUND_IPK_DIR)/opt/bin
# (use the location in a well-known Linux distro as a guide for choosing sbin or bin).
# Libraries and include files should be installed into $(POUND_IPK_DIR)/opt/{lib,include}
# Configuration files should be installed in $(POUND_IPK_DIR)/opt/etc/pound/...
# Documentation files should be installed in $(POUND_IPK_DIR)/opt/doc/pound/...
# Daemon startup scripts should be installed in $(POUND_IPK_DIR)/opt/etc/init.d/S??pound
#
# You may need to patch your application to make it use these locations.
#
$(POUND_IPK): $(POUND_BUILD_DIR)/.built
rm -rf $(POUND_IPK_DIR) $(BUILD_DIR)/pound_*_$(TARGET_ARCH).ipk
install -d $(POUND_IPK_DIR)/opt/etc/
install -d $(POUND_IPK_DIR)/opt/sbin/
install -m 555 $(POUND_BUILD_DIR)/pound $(POUND_IPK_DIR)/opt/sbin/pound
$(STRIP_COMMAND) $(POUND_IPK_DIR)/opt/sbin/pound
install -d $(POUND_IPK_DIR)/opt/man/
install -d $(POUND_IPK_DIR)/opt/man/man8/
install -m 644 $(POUND_BUILD_DIR)/pound.8 $(POUND_IPK_DIR)/opt/man/man8/pound.8
install -m 644 $(POUND_SOURCE_DIR)/pound.conf $(POUND_IPK_DIR)/opt/etc/pound.conf
install -d $(POUND_IPK_DIR)/opt/etc/init.d
install -m 755 $(POUND_SOURCE_DIR)/rc.pound $(POUND_IPK_DIR)/opt/etc/init.d/SXXpound
$(MAKE) $(POUND_IPK_DIR)/CONTROL/control
install -m 755 $(POUND_SOURCE_DIR)/postinst $(POUND_IPK_DIR)/CONTROL/postinst
install -m 755 $(POUND_SOURCE_DIR)/prerm $(POUND_IPK_DIR)/CONTROL/prerm
echo $(POUND_CONFFILES) | sed -e 's/ /\n/g' > $(POUND_IPK_DIR)/CONTROL/conffiles
cd $(BUILD_DIR); $(IPKG_BUILD) $(POUND_IPK_DIR)

#
# This is called from the top level makefile to create the IPK file.
#
pound-ipk: $(POUND_IPK)

#
# This is called from the top level makefile to clean all of the built files.
#
pound-clean:
-$(MAKE) -C $(POUND_BUILD_DIR) clean

#
# This is called from the top level makefile to clean all dynamically created
# directories.
#
pound-dirclean:
rm -rf $(BUILD_DIR)/$(POUND_DIR) $(POUND_BUILD_DIR) $(POUND_IPK_DIR) $(POUND_IPK)


Makefile.in.patch (to be placed in sources/pound/Makefile.in.patch) :


--- Pound-1.9.1/Makefile.in.orig 2005-09-10 17:34:01.580000000 -0400
+++ Pound-1.9.1/Makefile.in 2005-09-10 18:03:58.840000000 -0400
@@ -25,6 +25,7 @@
# EMail: roseg@apsis.ch
#
# $Id: Makefile.in,v 1.9 2005/06/01 15:01:54 roseg Rel roseg $
+CC=@CC@

CFLAGS=-DF_CONF=\"$(F_CONF)\" @CFLAGS@ @CPPFLAGS@


JF

cthings
14-09-2005, 12:12
Thanx JF,

the Makefile.in.patch was not on my shortlist of solutions I would have tought of :)
I'll do a good test this weekend and will then send you the .mk files for addiotion to the official CVS.


regards,
Niels

Jean-Fabrice
14-09-2005, 13:18
Thanx JF,
I'll do a good test this weekend and will then send you the .mk files for addiotion to the official CVS.

Feel free to open a sourceforge account and I'll add you to the optware developpers community. You will then be able to maintain your pound optware and many others if you like ;)

JF

digimic
18-11-2005, 00:17
can we have a package for mysql extension which works on OLEG's firmware?

Jean-Fabrice
18-11-2005, 09:47
can we have a package for mysql extension which works on OLEG's firmware?
see http://wl500g.info/showpost.php?p=14559&postcount=9

oleo
12-12-2005, 19:55
Why there are so many broken download links in the unslung CVS when I issue
make source for nslu2 target?

Is the cause change to monotone or just nobody tracks the changes?

rwhitby
23-12-2005, 00:02
It's just that no-one has time to track all the sources for all the packages. Once they are built and in the feeds, then it's up to individual package contributors (or users) to notice that there is a new version and update to it.

BTW, we have re-arranged the optware makefile so that new packages by default attempt to be built for wl500g. This means that new packages may appear by magic without any intervention by JF or myself.

In doing so, we worked out how to build a whole lot more wl500g packages. In particular, those who have been looking for MySQL might find a Christmas present in the feed ...

http://ipkg.nslu2-linux.org/feeds/optware/wl500g/cross/unstable/

-- Rod (nslu2-linux project lead, and Optware infrastructure developer)

oleo
23-12-2005, 10:11
I mean that old download sources are lagging in download directory of the build machine. There is no instrument to check if the file is available for download or not. This introduces a big problem for newcomers as a lot of packages are deleted with a new version. And this is not tracked by Makefile. Such packages should be tagged somehow in Makefile. Or erase the download dir from time to time to look for NEED_TO_BE_FIXED packages!

______________________________
waiting for uclibc-stdlibc++

rwhitby
17-06-2006, 23:09
We have moved the Optware source code repository from sourceforge.net to our new svn.nslu2-linux.org site.

http://svn.nslu2-linux.org/svnroot/optware

You can also browse the source with the nice Trac interface at:

http://trac.nslu2-linux.org/optware

If you are an Optware developer, you need an NSLU2-Linux SSL client certficate to write to the new repository. All sourceforge.net write access has been disabled. Contact me if you need a certificate.

There is no change to the feed contents or location.

-- Rod

6610i
29-01-2007, 19:31
Please,need counsel:
Shall I WL- 500G Deluxe V and interface ADSL ( 2 conductor ) and WL- 500G has interface WAN,how gear connector ADSL 6 PIN to the WAN 8 PIN connector.
Thank you

Gerdi
23-06-2007, 23:14
Hello. I've got an Asus Wl500gp and a computer with openSuse 10.2.
I use Olegs feed. I've downloaded everything, to compile the kernel.
It works well !!!
Can I contribute? (But I'm not using UNSLUNG but Olegs feed. Is this a problem?)
Can I use Your advises to compile for Olegs feed or is it completely different?
Am I far from compiling ipkg packages?

oleo
24-06-2007, 00:27
Follow instructions on Optware packages at www.nslu2-linux.org.
If you are able to rebuild the whole oleg|wl500g|openwrt-brcm24 package feed on your machine, then
you are right for the job and can contact us at #nslu2-linux IRC channel.

acidbao
17-07-2007, 09:33
Hello,

I've tried many time to compile additional optware packages for my wl500g but i can't generate the ipkg file.

Here the result of:


make tinyproxy-ipk


/bin/sh ../libtool --mode=install /usr/bin/install -c -s tinyproxy /home/manu/optware/builds/tinyproxy-1.6.3-ipk/opt/sbin/mipsel-linux-tinyproxy
/usr/bin/install -c -s tinyproxy /home/manu/optware/builds/tinyproxy-1.6.3-ipk/opt/sbin/mipsel-linux-tinyproxy
strip: Unable to recognise the format of the input file `/home/manu/optware/builds/tinyproxy-1.6.3-ipk/opt/sbin/mipsel-linux-tinyproxy'
/usr/bin/install: strip failed
make[4]: *** [install-sbinPROGRAMS] Erreur 1
make[4]: quittant le répertoire « /home/manu/optware/builds/tinyproxy/src »
make[3]: *** [install-am] Erreur 2
make[3]: quittant le répertoire « /home/manu/optware/builds/tinyproxy/src »
make[2]: *** [install-recursive] Erreur 1
make[2]: quittant le répertoire « /home/manu/optware/builds/tinyproxy »
make[1]: *** [install-strip] Erreur 2
make[1]: quittant le répertoire « /home/manu/optware/builds/tinyproxy »
make: *** [/home/manu/optware/builds/tinyproxy_1.6.3-1_mipsel.ipk] Erreur 2
manu@debian:~/optware$

acidbao
17-07-2007, 09:35
Here is tinyproxy.mk : (sorry for the split but the post was too long)



################################################## #########
#
# tinyproxy
#
################################################## #########

# You must replace "tinyproxy" and "TINYPROXY" with the lower case name and
# upper case name of your new package. Some places below will say
# "Do not change this" - that does not include this global change,
# which must always be done to ensure we have unique names.

#
# TINYPROXY_VERSION, TINYPROXY_SITE and TINYPROXY_SOURCE define
# the upstream location of the source code for the package.
# TINYPROXY_DIR is the directory which is created when the source
# archive is unpacked.
# TINYPROXY_UNZIP is the command used to unzip the source.
# It is usually "zcat" (for .gz) or "bzcat" (for .bz2)
#
# You should change all these variables to suit your package.
# Please make sure that you add a description, and that you
# list all your packages' dependencies, seperated by commas.
#
# If you list yourself as MAINTAINER, please give a valid email
# address, and indicate your irc nick if it cannot be easily deduced
# from your name or email address. If you leave MAINTAINER set to
# "NSLU2 Linux" other developers will feel free to edit.
#
TINYPROXY_SITE=http://$(SOURCEFORGE_MIRROR)/sourceforge/tinyproxy
TINYPROXY_VERSION=1.6.3
TINYPROXY_SOURCE=tinyproxy-$(TINYPROXY_VERSION).tar.gz
TINYPROXY_DIR=tinyproxy-$(TINYPROXY_VERSION)
TINYPROXY_UNZIP=zcat
TINYPROXY_MAINTAINER=NSLU2 Linux <nslu2-linux@yahoogroups.com>
TINYPROXY_DESCRIPTION=Describe tinyproxy here.
TINYPROXY_SECTION=
TINYPROXY_PRIORITY=optional
TINYPROXY_DEPENDS=
TINYPROXY_SUGGESTS=
TINYPROXY_CONFLICTS=
TINYPROXY_CONFIGURE_ENV=ac_cv_header_libintl_h=no

#
# TINYPROXY_IPK_VERSION should be incremented when the ipk changes.
#
TINYPROXY_IPK_VERSION=1

#
# TINYPROXY_CONFFILES should be a list of user-editable files
TINYPROXY_CONFFILES=/opt/etc/tinyproxy.conf /opt/etc/init.d/SXXtinyproxy

#
# TINYPROXY_PATCHES should list any patches, in the the order in
# which they should be applied to the source code.
#
#TINYPROXY_PATCHES=$(TINYPROXY_SOURCE_DIR)/configure.patch

#
# If the compilation of the package requires additional
# compilation or linking flags, then list them here.
#
TINYPROXY_CPPFLAGS=
TINYPROXY_LDFLAGS=

#
# TINYPROXY_BUILD_DIR is the directory in which the build is done.
# TINYPROXY_SOURCE_DIR is the directory which holds all the
# patches and ipkg control files.
# TINYPROXY_IPK_DIR is the directory in which the ipk is built.
# TINYPROXY_IPK is the name of the resulting ipk files.
#
# You should not change any of these variables.
#
TINYPROXY_BUILD_DIR=$(BUILD_DIR)/tinyproxy
TINYPROXY_SOURCE_DIR=$(SOURCE_DIR)/tinyproxy
TINYPROXY_IPK_DIR=$(BUILD_DIR)/tinyproxy-$(TINYPROXY_VERSION)-ipk
TINYPROXY_IPK=$(BUILD_DIR)/tinyproxy_$(TINYPROXY_VERSION)-$(TINYPROXY_IPK_VERSION)_$(TARGET_ARCH).ipk

.PHONY: tinyproxy-source tinyproxy-unpack tinyproxy tinyproxy-stage tinyproxy-ipk tinyproxy-clean tinyproxy-dirclean tinyproxy-check

#
# This is the dependency on the source code. If the source is missing,
# then it will be fetched from the site using wget.
#
$(DL_DIR)/$(TINYPROXY_SOURCE):
$(WGET) -P $(DL_DIR) $(TINYPROXY_SITE)/$(TINYPROXY_SOURCE) || \
$(WGET) -P $(DL_DIR) $(SOURCES_NLO_SITE)/$(TINYPROXY_SOURCE)

#
# The source code depends on it existing within the download directory.
# This target will be called by the top level Makefile to download the
# source code's archive (.tar.gz, .bz2, etc.)
#
tinyproxy-source: $(DL_DIR)/$(TINYPROXY_SOURCE) $(TINYPROXY_PATCHES)

#
# This target unpacks the source code in the build directory.
# If the source archive is not .tar.gz or .tar.bz2, then you will need
# to change the commands here. Patches to the source code are also
# applied in this target as required.
#
# This target also configures the build within the build directory.
# Flags such as LDFLAGS and CPPFLAGS should be passed into configure
# and NOT $(MAKE) below. Passing it to configure causes configure to
# correctly BUILD the Makefile with the right paths, where passing it
# to Make causes it to override the default search paths of the compiler.
#
# If the compilation of the package requires other packages to be staged
# first, then do that first (e.g. "$(MAKE) <bar>-stage <baz>-stage").
#
# If the package uses GNU libtool, you should invoke $(PATCH_LIBTOOL) as
# shown below to make various patches to it.
#
$(TINYPROXY_BUILD_DIR)/.configured: $(DL_DIR)/$(TINYPROXY_SOURCE) $(TINYPROXY_PATCHES) make/tinyproxy.mk
rm -rf $(BUILD_DIR)/$(TINYPROXY_DIR) $(TINYPROXY_BUILD_DIR)
$(TINYPROXY_UNZIP) $(DL_DIR)/$(TINYPROXY_SOURCE) | tar -C $(BUILD_DIR) -xvf -
if test -n "$(TINYPROXY_PATCHES)" ; \
then cat $(TINYPROXY_PATCHES) | \
patch -d $(BUILD_DIR)/$(TINYPROXY_DIR) -p0 ; \
fi
if test "$(BUILD_DIR)/$(TINYPROXY_DIR)" != "$(TINYPROXY_BUILD_DIR)" ; \
then mv $(BUILD_DIR)/$(TINYPROXY_DIR) $(TINYPROXY_BUILD_DIR) ; \
fi
(cd $(TINYPROXY_BUILD_DIR); \
$(TARGET_CONFIGURE_OPTS) \
$(TINYPROXY_CONFIGURE_ENV) \
CPPFLAGS="$(STAGING_CPPFLAGS) $(TINYPROXY_CPPFLAGS)" \
LDFLAGS="$(STAGING_LDFLAGS) $(TINYPROXY_LDFLAGS)" \
./configure \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_TARGET_NAME) \
--target=$(GNU_TARGET_NAME) \
--prefix=/opt \
--disable-nls \
--disable-static \
)
$(PATCH_LIBTOOL) $(TINYPROXY_BUILD_DIR)/libtool
touch $@

tinyproxy-unpack: $(TINYPROXY_BUILD_DIR)/.configured

#
# This builds the actual binary.
#
$(TINYPROXY_BUILD_DIR)/.built: $(TINYPROXY_BUILD_DIR)/.configured
rm -f $@
$(MAKE) -C $(TINYPROXY_BUILD_DIR)
touch $@

#
# This is the build convenience target.
#
tinyproxy: $(TINYPROXY_BUILD_DIR)/.built

#
# If you are building a library, then you need to stage it too.
#
$(TINYPROXY_BUILD_DIR)/.staged: $(TINYPROXY_BUILD_DIR)/.built
rm -f $@
$(MAKE) -C $(TINYPROXY_BUILD_DIR) DESTDIR=$(STAGING_DIR) install
touch $@

tinyproxy-stage: $(TINYPROXY_BUILD_DIR)/.staged

#
# This rule creates a control file for ipkg. It is no longer
# necessary to create a seperate control file under sources/tinyproxy
#
$(TINYPROXY_IPK_DIR)/CONTROL/control:
@install -d $(@D)
@rm -f $@
@echo "Package: tinyproxy" >>$@
@echo "Architecture: $(TARGET_ARCH)" >>$@
@echo "Priority: $(TINYPROXY_PRIORITY)" >>$@
@echo "Section: $(TINYPROXY_SECTION)" >>$@
@echo "Version: $(TINYPROXY_VERSION)-$(TINYPROXY_IPK_VERSION)" >>$@
@echo "Maintainer: $(TINYPROXY_MAINTAINER)" >>$@
@echo "Source: $(TINYPROXY_SITE)/$(TINYPROXY_SOURCE)" >>$@
@echo "Description: $(TINYPROXY_DESCRIPTION)" >>$@
@echo "Depends: $(TINYPROXY_DEPENDS)" >>$@
@echo "Suggests: $(TINYPROXY_SUGGESTS)" >>$@
@echo "Conflicts: $(TINYPROXY_CONFLICTS)" >>$@

#
# This builds the IPK file.
#
# Binaries should be installed into $(TINYPROXY_IPK_DIR)/opt/sbin or $(TINYPROXY_IPK_DIR)/opt/bin
# (use the location in a well-known Linux distro as a guide for choosing sbin or bin).
# Libraries and include files should be installed into $(TINYPROXY_IPK_DIR)/opt/{lib,include}
# Configuration files should be installed in $(TINYPROXY_IPK_DIR)/opt/etc/tinyproxy/...
# Documentation files should be installed in $(TINYPROXY_IPK_DIR)/opt/doc/tinyproxy/...
# Daemon startup scripts should be installed in $(TINYPROXY_IPK_DIR)/opt/etc/init.d/S??tinyproxy
#
# You may need to patch your application to make it use these locations.
#
$(TINYPROXY_IPK): $(TINYPROXY_BUILD_DIR)/.built
rm -rf $(TINYPROXY_IPK_DIR) $(BUILD_DIR)/tinyproxy_*_$(TARGET_ARCH).ipk
$(MAKE) -C $(TINYPROXY_BUILD_DIR) DESTDIR=$(TINYPROXY_IPK_DIR) install-strip
install -d $(TINYPROXY_IPK_DIR)/opt/etc/
install -m 644 $(TINYPROXY_SOURCE_DIR)/tinyproxy.conf $(TINYPROXY_IPK_DIR)/opt/etc/tinyproxy.conf
install -d $(TINYPROXY_IPK_DIR)/opt/etc/init.d
install -m 755 $(TINYPROXY_SOURCE_DIR)/rc.tinyproxy $(TINYPROXY_IPK_DIR)/opt/etc/init.d/SXXtinyproxy
sed -i -e '/^#!/aOPTWARE_TARGET=${OPTWARE_TARGET}' $(TINYPROXY_IPK_DIR)/opt/etc/init.d/SXXtinyproxy
$(MAKE) $(TINYPROXY_IPK_DIR)/CONTROL/control
install -m 755 $(TINYPROXY_SOURCE_DIR)/postinst $(TINYPROXY_IPK_DIR)/CONTROL/postinst
sed -i -e '/^#!/aOPTWARE_TARGET=${OPTWARE_TARGET}' $(TINYPROXY_IPK_DIR)/CONTROL/postinst
install -m 755 $(TINYPROXY_SOURCE_DIR)/prerm $(TINYPROXY_IPK_DIR)/CONTROL/prerm
sed -i -e '/^#!/aOPTWARE_TARGET=${OPTWARE_TARGET}' $(TINYPROXY_IPK_DIR)/CONTROL/prerm
echo $(TINYPROXY_CONFFILES) | sed -e 's/ /\n/g' > $(TINYPROXY_IPK_DIR)/CONTROL/conffiles
cd $(BUILD_DIR); $(IPKG_BUILD) $(TINYPROXY_IPK_DIR)

#
# This is called from the top level makefile to create the IPK file.
#
tinyproxy-ipk: $(TINYPROXY_IPK)

#
# This is called from the top level makefile to clean all of the built files.
#
tinyproxy-clean:
rm -f $(TINYPROXY_BUILD_DIR)/.built
-$(MAKE) -C $(TINYPROXY_BUILD_DIR) clean

#
# This is called from the top level makefile to clean all dynamically created
# directories.
#
tinyproxy-dirclean:
rm -rf $(BUILD_DIR)/$(TINYPROXY_DIR) $(TINYPROXY_BUILD_DIR) $(TINYPROXY_IPK_DIR) $(TINYPROXY_IPK)
#
#
# Some sanity check for the package.
#
tinyproxy-check: $(TINYPROXY_IPK)
perl scripts/optware-check-package.pl --target=$(OPTWARE_TARGET) $(TINYPROXY_IPK)

rwhitby
18-07-2007, 00:26
Use 'install' instead of 'install-strip', and then use ${STRIP} to strip the binary afterwards.

-- Rod

DrChair
04-10-2007, 13:27
I've managed to make a few packages, and fixed a few errors in some other ones.

new: sabnzbd.mk and py-yenc.mk
fixed : py-elementtree.mk, py-cherrypy.mk and automake.mk

What is easiest way to get them into the feed?

btw the only thing I changed in py-elementtree and py-cherrypy is the staging part. There was none, but needed for sabnzbd.mk.
Should the ipkg version be increased for that??

rwhitby
06-10-2007, 05:29
I've managed to make a few packages, and fixed a few errors in some other ones.

new: sabnzbd.mk and py-yenc.mk
fixed : py-elementtree.mk, py-cherrypy.mk and automake.mk

What is easiest way to get them into the feed?

btw the only thing I changed in py-elementtree and py-cherrypy is the staging part. There was none, but needed for sabnzbd.mk.
Should the ipkg version be increased for that??

The easiest way is to follow the instructions at http://www.nslu2-linux.org/wiki/Optware/AddAPackageToOptware, and then we'll be happy to give you write access to the repository.

It is always a good idea to change the ipkg version for any change in the build.

-- Rod

Oyabun
06-10-2007, 20:07
Hello folks.
I was thinking about to offer my help, but I'm not a linux whit. To be more exact I can get along with the wl500, following the guides - and make some educated guesses along the way to make it better suited to my needs - but I consider myself more of a power user than a programmer or sysadmin.
I've started to install a colinux on my notebook - but I have no experience with it so far.
So until I can get to a point to be able to compile my own packages I ask someone of you to go and take a look here please: help to compile esniper (http://www.wl500g.info/showthread.php?t=7035)
Thank you in advance
Oya

rwhitby
06-10-2007, 23:17
I've started to install a colinux on my notebook - but I have no experience with it so far.


I would suggest using VMware server (which is now free) and ubuntu instead of CoLinux.

-- Rod

Oyabun
08-10-2007, 13:31
Thank you. I'll check VM server during weekend.

shantanugoel
13-07-2009, 22:20
I compiled the latest firefly (mt-daapd) server and made the package as well, how do i get it uploaded?