DIR_PATCHES = $(DIR_DL)/../patches
DIR_CONFIG = $(DIR_CONF)
DIR_SOURCE = $(DIR_SRC)/src
+DIR_PKG = $(LFS_BASEDIR)/lfs
+DIR_TARGET = $(LFS_BASEDIR)/target
VPATH = $(DIR_DL):$(DIR_PATCHES)
define DO_PKG_INFO
@## ALPHABETICAL ORDER ##
- @echo "DEBUG=\"$(DEBUG)\""
- @echo "DEPS=\"$(DEPS)\""
- @echo "DESC=\"$(value LONG_DESC)\""
- @echo "EXTRA=\"$(EXTRA)\""
- @echo "FILES=\"$(objects)\""
- @echo "GROUP=\"$(GROUP)\""
- @echo "LICENSE=\"$(LICENSE)\""
- @echo "MAINTAINER=\"$(MAINTAINER)\""
- @echo "NAME=\"$(PKG_NAME)\""
- @echo "VERSION=\"$(PKG_VER)\""
- @echo "RELEASE=\"$(PKG_REL)\""
- @echo "SHORT=\"$(value SHORT_DESC)\""
- @echo "URL=\"$(URL)\""
+ @echo "local DEBUG=\"$(DEBUG)\""
+ @echo "local DEPS=\"$(DEPS)\""
+ @echo "local DESC=\"$(value LONG_DESC)\""
+ @echo "local EXTRA=\"$(EXTRA)\""
+ @echo "local FILES=\"$(objects)\""
+ @echo "local GROUP=\"$(GROUP)\""
+ @echo "local LICENSE=\"$(LICENSE)\""
+ @echo "local MAINTAINER=\"$(MAINTAINER)\""
+ @echo "local NAME=\"$(PKG_NAME)\""
+ @echo "local VERSION=\"$(PKG_VER)\""
+ @echo "local RELEASE=\"$(PKG_REL)\""
+ @echo "local SHORT=\"$(value SHORT_DESC)\""
+ @echo "local URL=\"$(URL)\""
+endef
+
+define DO_PACKAGE
+ if [ -n "$$ROOTFILE" ]; then \
+ NAME=$(NAME) SNAME=$(SNAME) VERSION=$(VERSION) KVER=$(KVER) \
+ TARGET=$(TARGET) MACHINE=$(MACHINE) IFS_TARGET=$(IFS_TARGET) \
+ $(DIR_SOURCE)/pakfire/compressor $(PKG_NAME) $(PKG_VER) $(PKG_REL) $$ROOTFILE; \
+ fi
endef
# For each package we create a list of files that it installed under
pkg_list_packages > $BASEDIR/doc/packages-list.txt
beautify message DONE
+ # Build packages
+ #local package
+ #for package in $BASEDIR/lfs/*; do
+ # package_make $(basename $package)
+ #done
+
if [ ${EMB} -eq 0 ]; then
ipfire_make initramfs
ipfire_make images
fi
fi
- # Build packages
- for i in $(ls -1 $BASEDIR/src/rootfiles/extras); do
- package=$(cut -d. -f2 <<< $i)
- if [ -e $BASEDIR/lfs/$package ]; then
- echo -n $package
- beautify message SKIP
- else
- echo -n $package
- beautify message SKIP
- fi
- done
-
# Cleanup
stdumount
rm -rf $LFS/tmp/*
-
+
cd $PWD
}
--- /dev/null
+#!/bin/bash
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2007, 2008, 2009 Michael Tremer & Christian Schmidt #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+PKG_NAME=$1
+PKG_VER=$2
+PKG_REL=$3
+ROOTFILE=$4
+
+if [ -z "$TARGET" ]; then
+ echo "TARGET is not set. Cannot continue." >&2
+ exit 1
+fi
+
+if [ ! -e "$ROOTFILE" ]; then
+ echo "Rootfile does not exist." >&2
+ exit 1
+fi
+
+PKG_LIST="normal"
+# Checking for a devel package
+grep -q "^D" $ROOTFILE && PKG_LIST="$PKG_LIST devel"
+
+for PKG_EXTRA in $PKG_LIST; do
+ # Prepare target name.
+ PKG_TARGET=${PKG_NAME}-${PKG_VER}-${SNAME}-${PKG_REL}
+ if [ "$PKG_EXTRA" != "normal" ]; then
+ PKG_TARGET="$PKG_TARGET-$PKG_EXTRA"
+ fi
+ PKG_TARGET="$PKG_TARGET.$SNAME"
+
+ echo "Running for $PKG_TARGET..."
+
+ ARCHIEVE=$(mktemp)
+
+ # Remove unused files from filelist
+ FILELIST=$(grep -v "^#" $ROOTFILE)
+
+ if [ "$PKG_EXTRA" = "devel" ]; then
+ FILELIST=$(echo "$FILELIST" | grep "^D" | sed -e "s/^D//g")
+ else
+ FILELIST=$(echo "$FILELIST" | grep -v "^D")
+ fi
+
+ FILELIST=$(echo "$FILELIST" | sed \
+ -e "s/KVER/$KVER/g" \
+ -e "s/IFS_TARGET/$IFS_TARGET/g")
+
+ if [ -z "$FILELIST" ]; then
+ rm -f $ARCHIEVE
+ continue
+ fi
+
+ # Changing to root
+ cd /
+
+ echo "$FILELIST" | cpio -o | lzma -czv - > $ARCHIEVE
+
+ cat $ARCHIEVE > /tmp/$PKG_TARGET
+
+ rm -f $ARCHIEVE
+done
################################################################################
lfsmakecommoncheck()
{
+ unset NAME VERSION
+ eval $(pkg_info $1)
+
logger "Building $*"
build_spy package $1
exiterror "No such file or directory: $BASEDIR/lfs/$1"
fi
- local PKG_VER=$(get_pkg_ver $BASEDIR/lfs/$1)
- beautify make_pkg "$PKG_VER $*"
+ beautify make_pkg "$VERSION $*"
# Script slipped?
local i
return 0
} # End of ipfire_make()
+
+################################################################################
+# This is the function that compresses every package #
+################################################################################
+package_make() {
+ SKIP_PACKAGE_LIST="SKIP_PACKAGE_LIST Config adjust-toolchain cdrom images pxe test-toolchain usb-key usb-stick" \
+ lfsmakecommoncheck $*
+ [ $? == 1 ] && return 0
+
+ local PKG_VER=$(get_pkg_ver $BASEDIR/lfs/$1)
+
+ local PKG_TIME_START=$(date +%s)
+ chroot $LFS $TOOLS_DIR/bin/env -i \
+ HOME=/root \
+ TERM=$TERM \
+ PS1='\u:\w\$ ' \
+ PATH=$PATH \
+ CONFIG_ROOT=${CONFIG_ROOT} \
+ VERSION=${VERSION} \
+ NAME=${NAME} \
+ SNAME=${SNAME} \
+ SLOGAN="$SLOGAN" \
+ LINKER=$LINKER \
+ TOOLS_DIR=$TOOLS_DIR \
+ INSTALLER_DIR=$INSTALLER_DIR \
+ CDROM_DIR=$CDROM_DIR \
+ IMAGES_DIR=$IMAGES_DIR \
+ MACHINE="$MACHINE" \
+ MACHINE_REAL="$MACHINE_REAL" \
+ IFS_HOST="$IFS_HOST" \
+ IFS_TARGET="$IFS_TARGET" \
+ TARGET="$TARGET" \
+ BUILD_DEBUG=$BUILD_DEBUG \
+ BUILD_EXTRAS=$BUILD_EXTRAS \
+ KVER=$KVER \
+ EMB=$EMB \
+ IMAGENAME=$IMAGENAME \
+ ROOTFILE=$(rootfiles_findone $1 | sed "s,$BASEDIR,/usr/src,g") \
+ LOGFILE=$(echo $LOGFILE | sed "s,$BASEDIR,/usr/src,g") \
+ bash -x -c "cd /usr/src/lfs && \
+ $EXTRA_MAKE make -f $* LFS_BASEDIR=/usr/src package" >>$LOGFILE 2>&1
+
+ local COMPILE_SUCCESS=$?
+ local PKG_TIME_END=$(date +%s)
+
+ if [ $COMPILE_SUCCESS -ne 0 ]; then
+ beautify result FAIL $[ $PKG_TIME_END - $PKG_TIME_START ] $1 $PKG_VER $STAGE_ORDER $STAGE
+ exiterror "Packageing $*"
+ else
+ beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ] $1 $PKG_VER $STAGE_ORDER $STAGE
+ PACKAGES_DONE="$PACKAGES_DONE $1"
+ fi
+
+ return 0
+} # End of package_make()
+
################################################################################
# This prepares the build environment #
################################################################################