Page 1 of 3 123 LastLast
Results 1 to 15 of 34

Thread: Contributors needed for wl500g packages

  1. #1
    Join Date
    Jul 2004
    Location
    near Lyon @ France
    Posts
    195

    Contributors needed for wl500g packages

    wl500g software packages are now growing through the unslung build system 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 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

  2. #2
    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.

  3. #3

    I'll happily give a hand...

    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 !
    macsat
    http://www.macsat.com - Tutorials and information on using ASUS WL-500G and family.

  4. #4
    Join Date
    Jul 2004
    Location
    near Lyon @ France
    Posts
    195
    You are both right macsat and barsju.

    Here are a few more informations (some are deducted) :
    The unslung build system is a set of makefiles, tools and directories, hosted at sourceforge, and used by the nslu2-linux.org developpers to improve the Linksys nslu2 (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 :
    1. 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 and last Oleg's toolchain installed.
    2. 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
      Code:
      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

    3. 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 :
    1. copying the provided make/template.mk to make/<your_package_name>.mk
    2. Edit this one to fit your package
    3. test it builds fine by running make <packagename>
    4. test your package creates fine by running make <packagename>-ipk
    5. 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
    6. 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


    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 :more detailed explanation on how to write your package
    • Packaging Best Practices : 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 : 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
    Last edited by Jean-Fabrice; 27-04-2005 at 14:44.

  5. #5
    Join Date
    Apr 2004
    Location
    Netherlands
    Posts
    1,306
    Nice HOWTO JF, good work !

  6. #6
    Very nice indeed! Now I just need some spare time! Let me know if you have some lying around!

  7. #7

    quagga + some questions

    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

  8. #8
    Join Date
    Jul 2004
    Location
    near Lyon @ France
    Posts
    195
    Hi llagendiijk.


    Quote Originally Posted by 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.
    Quote Originally Posted by llagendiijk
    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.
    Quote Originally Posted by llagendiijk
    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...)
    Quote Originally Posted by llagendiijk
    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 ?
    Quote Originally Posted by llagendiijk
    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
    Last edited by Jean-Fabrice; 01-05-2005 at 09:07.

  9. #9

    Smile

    Quote Originally Posted by Jean-Fabrice
    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

  10. #10

    More Step 4 Step guide

    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/
    macsat
    http://www.macsat.com - Tutorials and information on using ASUS WL-500G and family.

  11. #11

    newbie question?

    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)
    Last edited by cthings; 09-09-2005 at 21:00. Reason: Added pound.mk file

  12. #12
    Join Date
    Jul 2004
    Location
    near Lyon @ France
    Posts
    195
    Hi,

    could you please post your pound.mk here ?

    JF

  13. #13
    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)
    Last edited by cthings; 09-09-2005 at 22:27. Reason: stuck...

  14. #14
    Join Date
    Jul 2004
    Location
    near Lyon @ France
    Posts
    195

    a working one ;)

    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.
    Code:
    ###########################################################
    #
    # 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) :
    Code:
    --- 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
    Last edited by Jean-Fabrice; 11-09-2005 at 00:04.

  15. #15
    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

Page 1 of 3 123 LastLast

Similar Threads

  1. Unslung/WL500g packages available for Oleg's firmware
    By rwhitby in forum WL-500g Custom Development
    Replies: 136
    Last Post: 24-04-2009, 16:54
  2. Replies: 2
    Last Post: 16-04-2005, 11:57
  3. Some packages I compiled
    By Jean-Fabrice in forum WL-500g Custom Development
    Replies: 7
    Last Post: 23-03-2005, 13:29
  4. Additional packages and Asus fw 1.8.1.9
    By Spot in forum WL-500g Q&A
    Replies: 16
    Last Post: 04-10-2004, 19:49
  5. Help needed for WL500g...
    By Meuchi in forum WL-500g Q&A
    Replies: 1
    Last Post: 03-09-2004, 17:06

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •