From bdbfaad29772a37cdcad61885b8ab01d0828aa68 Mon Sep 17 00:00:00 2001 From: Rod Whitby Date: Sat, 30 Jul 2005 05:07:19 +0000 Subject: Revamped the ucslugc setup process, file structure and Makefile. --- Makefile | 26 +++++++++++++++------ common/Make.rules | 57 ----------------------------------------------- common/conf/site.conf | 2 +- common/env | 42 ---------------------------------- common/openembedded.mk | 57 +++++++++++++++++++++++++++++++++++++++++++++++ common/setup-openembedded | 47 ++++++++++++++++++++++++++++++++++++++ ucslugc/Makefile | 10 --------- ucslugc/conf/auto.conf | 1 + ucslugc/setup-env | 14 ------------ 9 files changed, 125 insertions(+), 131 deletions(-) delete mode 100644 common/Make.rules delete mode 100644 common/env create mode 100644 common/openembedded.mk create mode 100644 common/setup-openembedded delete mode 100644 ucslugc/Makefile delete mode 100644 ucslugc/setup-env diff --git a/Makefile b/Makefile index 169bbd6713..6e36e75a98 100644 --- a/Makefile +++ b/Makefile @@ -64,13 +64,13 @@ setup-monotone monotone/nslu2-linux.db: downloads: [ -e $@ ] || mkdir -p $@ -unslung/Makefile openslug/Makefile ucslugc/Makefile common/Make.rules MT/revision: +unslung/Makefile openslug/Makefile common/openembedded.mk common/setup-openembedded MT/revision: ${MAKE} downloads [ -e monotone/nslu2-linux.db ] || ( ${MAKE} monotone/nslu2-linux.db ) [ -e MT/revision ] || ( monotone -d monotone/nslu2-linux.db co -b org.nslu2-linux.dev . ) .PHONY: setup-master -setup-master: setup-monotone unslung/Makefile openslug/Makefile +setup-master: setup-monotone unslung/Makefile openslug/Makefile ucslugc/Makefile [ -e unslung/downloads ] || ( cd unslung ; ln -s ../downloads . ) [ -e openslug/downloads ] || ( cd openslug ; ln -s ../downloads . ) @@ -84,11 +84,6 @@ setup-openembedded openembedded/conf/machine/nslu2.conf: ${MAKE} MT/revision [ -e openembedded/conf/machine/nslu2.conf ] || monotone co -b org.openembedded.nslu2-linux openembedded -.PHONY: setup-optware -setup-optware optware/Makefile: - ${MAKE} downloads - [ -e optware/Makefile ] || ( cvs -q -d :pserver:anonymous@cvs.sf.net:/cvsroot/nslu co -d optware unslung ) - .PHONY: setup-openslug-2.3-beta setup-openslug-2.3-beta releases/OpenSlug-2.3-beta/Makefile: downloads [ ! -e releases/OpenSlug-2.3-beta ] || mkdir -p releases @@ -96,6 +91,23 @@ setup-openslug-2.3-beta releases/OpenSlug-2.3-beta/Makefile: downloads cd releases/OpenSlug-2.3-beta && ${MAKE} conf/local.conf setup-env ln -s ../../downloads releases/OpenSlug-2.3-beta/ +.PHONY: setup-ucslugc +setup-ucslugc ucslugc/Makefile: + ${MAKE} MT/revision + [ -d ucslugc ] || ( mkdir -p ucslugc ) + [ -e ucslugc/Makefile ] || ( cd ucslugc ; ln -s ../common/openembedded.mk Makefile ) + [ -e ucslugc/setup-openembedded ] || ( cd ucslugc ; ln -s ../common/setup-openembedded . ) + [ -e ucslugc/downloads ] || ( cd ucslugc ; ln -s ../downloads . ) + [ -e ucslugc/bitbake ] || ( cd ucslugc ; ln -s ../bitbake . ) + [ -e ucslugc/openembedded ] || ( cd ucslugc ; ln -s ../openembedded . ) + [ -d ucslugc/conf ] || ( mkdir -p ucslugc/conf ) + [ -e ucslugc/conf/site.conf ] || ( cd ucslugc/conf ; ln -s ../../common/conf/site.conf . ) + +.PHONY: setup-optware +setup-optware optware/Makefile: + ${MAKE} downloads + [ -e optware/Makefile ] || ( cvs -q -d :pserver:anonymous@cvs.sf.net:/cvsroot/nslu co -d optware unslung ) + optware/nslu2/Makefile: ${MAKE} optware/Makefile [ -e optware/nslu2/Makefile ] || ( \ diff --git a/common/Make.rules b/common/Make.rules deleted file mode 100644 index 1a32b364ba..0000000000 --- a/common/Make.rules +++ /dev/null @@ -1,57 +0,0 @@ -# Makefile for UcSlugC -# Licensed under the GPL v2 or later -# -# Define DISTRO and TARGET before including this in Makefile - -BUILD_DIRS = downloads home -REQUIRED_DIRS = bitbake openembedded common -FIRMWARE_DEPS = create-topdir $(BUILD_DIRS) $(REQUIRED_DIRS) - -# The default rule is to build the firmware in an unprotected environment. -$(DISTRO)-firmware: $(FIRMWARE_DEPS) - . common/env; exec bitbake $(TARGET) - -# This rule clobbers the environment (note that ccache uses '$HOME' by -# default, so the cache will end up there). -$(DISTRO)-safe: - env -i HOME="`pwd`/home" PATH="$${PATH}" $(MAKE) $(DISTRO)-firmware - -# topdir.conf is re-created automatically if the directory is -# moved - this will cause a full bitbake reparse -.PHONY: create-topdir -create-topdir: topdir.conf - . topdir.conf && test "`pwd`" = "$$TOPDIR" || echo "TOPDIR='`pwd`'" >topdir.conf - -topdir.conf: - echo "TOPDIR='`pwd`'" >$@ - -# rules for directories - if a symlink exists and the target does not -# exist something will go wrong in the build, therefore cause a failure -# here by the mkdir. -$(BUILD_DIRS): - test -d $@ || if test -d ../$@; then ln -s ../$@ .; else mkdir $@; fi - -# these directories must already exist - either in TOPDIR (here) or in .. -$(REQUIRED_DIRS): - test -d $@ || if test -d ../$@; then ln -s ../$@ .; else exit 1; fi - -.PHONY: clobber -clobber: - rm -rf tmp - -.PHONY: $(DISTRO)-source -$(DISTRO)-source: $(REQUIRED_DIRS) - tar zcf $@.tar.gz --exclude=MT Makefile conf/auto.conf conf/local.conf.sample $(REQUIRED_DIRS:=/.) - -# This target probably isn't important any longer, because the -source -# target above does the right thing -.PHONY: -distclean: clobber - rm -rf topdir.conf conf/local.conf common/conf/local.conf $(BUILD_DIRS) - -# This target is mainly for testing - it is intended to put the disto directory -# back to its original state, it will destroy a source-tarball system (because -# it removes directories from the tarball). -.PHONY: -really-clean: distclean - rm -rf $(REQUIRED_DIRS) $(DISTRO)-source.tar.gz diff --git a/common/conf/site.conf b/common/conf/site.conf index 45451253e7..f40ae58e3d 100644 --- a/common/conf/site.conf +++ b/common/conf/site.conf @@ -6,7 +6,7 @@ # # Each DISTRO must create a appropriate topdir file containing # (just) the definition of TOPDIR -include topdir.conf +include conf/topdir.conf # These definitions should be the same for every DISTRO - if # a change is necessary make it in the DISTRO auto.conf. The diff --git a/common/env b/common/env deleted file mode 100644 index 9cf757aa30..0000000000 --- a/common/env +++ /dev/null @@ -1,42 +0,0 @@ -# setup up the environment for a bitbake build. This is used -# by the makefile and may also be directly sourced from an -# interactive shell. The makefile uses 'env -i' to ensure -# no variables are inherited apart from CCACHE_DISABLE and -# CCACHE_DIR -# -# topdir must exist in the directory and define TOPDIR to -# the full path name of the working directory -. ./topdir.conf -test -n "$TOPDIR" -a -d "$TOPDIR" || { - echo "environment: TOPDIR not defined" >&2 - exit 1 -} -# -# the following must match the definitions in common/conf/site.conf -export PYTHONPATH="${TOPDIR}/bitbake/lib" -export BBPATH="${TOPDIR}:${TOPDIR}/common:${TOPDIR}/openembedded:${TOPDIR}/bitbake" -export PATH="${TOPDIR}/bitbake/bin:${PATH}" -export LD_LIBRARY_PATH= -export LANG=C -#NOTE: if you add export definitions here add them below too! -# -# unset the following (unnecessary for the makefile, but safe) -unset LC_CTYPE -unset CC -unset CXX -unset MFLAGS -unset MAKEFLAGS -# -# make bb into a 'safe' bitbake -alias bb-safe="env -i \ - HOME='${TOPDIR}/home' \ - PYTHONPATH='${PYTHONPATH}' \ - BBPATH='${BBPATH}' \ - PATH='${PATH}' \ - LD_LIBRARY_PATH='${LD_LIBRARY_PATH}' \ - LANG='${LANG}' \ - '${TOPDIR}/bitbake/bin/bitbake'" -alias bb="'${TOPDIR}/bitbake/bin/bitbake'" -# -# remove TOPDIR - not required -unset TOPDIR diff --git a/common/openembedded.mk b/common/openembedded.mk new file mode 100644 index 0000000000..e826f6e305 --- /dev/null +++ b/common/openembedded.mk @@ -0,0 +1,57 @@ +# Makefile for UcSlugC +# Licensed under the GPL v2 or later +# + +BUILD_DIRS = downloads +REQUIRED_DIRS = bitbake openembedded +FIRMWARE_DEPS = create-topdir $(BUILD_DIRS) $(REQUIRED_DIRS) + +# The default rule is to build the firmware in an unprotected environment. +firmware: $(FIRMWARE_DEPS) + . ./setup-openembedded; exec bitbake $${MAKE_TARGET} + +# This rule clobbers the environment (note that ccache uses '$HOME' by +# default, so the cache will end up there). +firmware-safe: + env -i HOME="$${HOME}" PATH="$${PATH}" $(MAKE) firmware + +# topdir.conf is re-created automatically if the directory is +# moved - this will cause a full bitbake reparse +.PHONY: create-topdir +create-topdir: conf/topdir.conf + . conf/topdir.conf && test "`pwd`" = "$$TOPDIR" || echo "TOPDIR='`pwd`'" > conf/topdir.conf + +conf/topdir.conf: + echo "TOPDIR='`pwd`'" >$@ + +# rules for directories - if a symlink exists and the target does not +# exist something will go wrong in the build, therefore cause a failure +# here by the mkdir. +$(BUILD_DIRS): + test -d $@ || if test -d ../$@; then ln -s ../$@ .; else mkdir $@; fi + +# these directories must already exist - either in TOPDIR (here) or in .. +$(REQUIRED_DIRS): + test -d $@ || if test -d ../$@; then ln -s ../$@ .; else exit 1; fi + +.PHONY: clobber +clobber: + rm -rf tmp + +.PHONY: source +source: $(REQUIRED_DIRS) + tar zcf $${DISTRO}.tar.gz --exclude=MT Makefile setup-openembedded conf/site.conf conf/auto.conf \ + conf/local.conf.sample $(REQUIRED_DIRS:=/.) + +# This target probably isn't important any longer, because the -source +# target above does the right thing +.PHONY: +distclean: clobber + rm -rf conf/topdir.conf conf/local.conf $(BUILD_DIRS) + +# This target is mainly for testing - it is intended to put the disto directory +# back to its original state, it will destroy a source-tarball system (because +# it removes directories from the tarball). +.PHONY: +really-clean: distclean + rm -rf $(REQUIRED_DIRS) $${DISTRO}-source.tar.gz diff --git a/common/setup-openembedded b/common/setup-openembedded new file mode 100644 index 0000000000..46151e5774 --- /dev/null +++ b/common/setup-openembedded @@ -0,0 +1,47 @@ +# setup up the environment for a bitbake build. This is used +# by the makefile and may also be directly sourced from an +# interactive shell. The makefile uses 'env -i' to ensure +# no variables are inherited apart from CCACHE_DISABLE and +# CCACHE_DIR +# +# topdir must exist in the directory and define TOPDIR to +# the full path name of the working directory +. ./conf/topdir.conf +test -n "$TOPDIR" -a -d "$TOPDIR" || { + echo "environment: TOPDIR not defined" >&2 + exit 1 +} + +. ./conf/auto.conf +export DISTRO +export MAKE_TARGET + +# +# the following must match the definitions in common/conf/site.conf +export PYTHONPATH="${TOPDIR}/bitbake/lib" +export BBPATH="${TOPDIR}:${TOPDIR}/openembedded:${TOPDIR}/bitbake" +export PATH="${TOPDIR}/bitbake/bin:${PATH}" +export LD_LIBRARY_PATH= +export LANG=C +#NOTE: if you add export definitions here add them below too! +# +# unset the following (unnecessary for the makefile, but safe) +unset LC_CTYPE +unset CC +unset CXX +unset MFLAGS +unset MAKEFLAGS +# +# make bb into a 'safe' bitbake +alias bb-safe="env -i \ + HOME='${TOPDIR}/home' \ + PYTHONPATH='${PYTHONPATH}' \ + BBPATH='${BBPATH}' \ + PATH='${PATH}' \ + LD_LIBRARY_PATH='${LD_LIBRARY_PATH}' \ + LANG='${LANG}' \ + '${TOPDIR}/bitbake/bin/bitbake'" +alias bb="'${TOPDIR}/bitbake/bin/bitbake'" +# +# remove TOPDIR - not required +unset TOPDIR diff --git a/ucslugc/Makefile b/ucslugc/Makefile deleted file mode 100644 index fdaab6fc1c..0000000000 --- a/ucslugc/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -# Makefile for UcSlugC -# Licensed under the GPL v2 or later -DISTRO=ucslugc -TARGET=openslug-packages - -include common/Make.rules - -# The following is required for bootstrapping -common/Make.rules: - $(MAKE) -f ../common/Make.rules common diff --git a/ucslugc/conf/auto.conf b/ucslugc/conf/auto.conf index 0c584f449e..b6a439982e 100644 --- a/ucslugc/conf/auto.conf +++ b/ucslugc/conf/auto.conf @@ -1,3 +1,4 @@ # UcSlugC bitbake configuration DISTRO="ucslugc" MACHINE="nslu2" +MAKE_TARGET="openslug-packages" \ No newline at end of file diff --git a/ucslugc/setup-env b/ucslugc/setup-env deleted file mode 100644 index 56f39fbe21..0000000000 --- a/ucslugc/setup-env +++ /dev/null @@ -1,14 +0,0 @@ -# set up an environment for building UcSlugC -# (it is sufficient to source common/env to do this, this -# script, which should be sourced, exists to mirror the old -# method). -test -d common || { - test -d ../common && ln -s ../common ./common -} -if test -r common/env -then - . common/env - echo 'Environment set up for UcSlugC development.' -else - echo "setup-env: 'common/env' script not found" >&2 -fi -- cgit v1.2.3