202 lines
6.7 KiB
Makefile
202 lines
6.7 KiB
Makefile
#!smake
|
|
# ident "$Header: /proj/irix6.5.7m/isms/eoe/sa/RCS/Makefile,v 1.70 1999/11/06 00:52:59 sherwood Exp $"
|
|
#
|
|
# This makefile generates the files that make up a distribution. It uses
|
|
# the following items:
|
|
#
|
|
# $DIST the directory in which to generate products.
|
|
#
|
|
|
|
include $(ROOT)/usr/include/make/ismcommondefs
|
|
include $(ROOT)/usr/include/make/kcommondefs
|
|
.NOTPARALLEL:
|
|
|
|
#
|
|
# Various Directories
|
|
#
|
|
SA_DIR=$(WORKAREA)/eoe/sa
|
|
IDB_DIR=$(SA_DIR)/idbs
|
|
DIST=$(SA_DIR)/sa_dir
|
|
|
|
# directory where we link all the files going into sa,
|
|
# the tape filesystem image
|
|
STMP=sa_tmp
|
|
|
|
LD_LIBRARY_PATH=$(ROOT)/lib:$(ROOT)/usr/lib
|
|
LD_LIBRARYN32_PATH=$(ROOT)/lib32:$(ROOT)/usr/lib32
|
|
|
|
MKFS_XFS=LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
|
|
$(WORKAREA)/irix/cmd/xfs/mkfs/n32ns/mrmkfs_xfs
|
|
|
|
#
|
|
# $PROTO_MR - is the check-in proto type file
|
|
# $PROTO_NEW - is the new proto type file that was just created
|
|
#
|
|
PROTO_MR=$(SA_DIR)/proto.mr
|
|
PROTO_NEW=$(SA_DIR)/proto.new
|
|
SA_WORKAREA=$(SA_DIR)/mrtree
|
|
|
|
IDB_MR_FILE=$(IDB_DIR)/idb.new
|
|
IDB_SASH=$(WORKAREA)/stand/build/finalidb
|
|
IDB_FX=$(WORKAREA)/irix/build/finalidb
|
|
|
|
TARGETS=sa
|
|
|
|
IDBINSTOPTS=-xvS
|
|
|
|
|
|
#
|
|
# The miniroot file system size, which must be less than or equal to
|
|
# the swaplo setting in the miniroot kernel, defined by the second
|
|
# parameter to the "SWAPDEV:" statement in irix/kern/master.d/system.gen
|
|
# (check to make sure it is "if" defined with "mr") and
|
|
# eoe/cmd/initpkg/brc-mr.sh.
|
|
# The miniroot filesystem is xfs_growfs-ed in place (in
|
|
# eoe/cmd/initpkg/bcheckrc-mr.sh), so it needs to be just
|
|
# larger than it's contents, and smaller than the swaplow value.
|
|
# These values will need to change as the contents change size.
|
|
# The file are (again) :
|
|
# eoe/cmd/initpkg/brc-mr.sh
|
|
# eoe/cmd/initpkg/bcheckrc-mr.sh
|
|
# irix/kern/master.d/system.gen
|
|
#
|
|
# Size is in 512-byte blocks for the variables MRSIZE, and MRCHK.
|
|
# There is no need to change the MRSIZE in this file any
|
|
# longer when the swap space size is changed for the SA.
|
|
#
|
|
|
|
MRSIZE = 36500
|
|
MRCHK = 36200
|
|
|
|
default:$(TARGETS)
|
|
|
|
# build the standalone tools - in order
|
|
#
|
|
# 1) mkmrunix - create the unix mini-root kernel for $PRODUCT.
|
|
# 2) mkmr - Combine the mrtree into the "mini-root" file.
|
|
# 3) proto - Create a proto file and copy all the sash and fx's
|
|
# to a tmp dir, build the miniroot EFS image, and then build
|
|
# the sa tape filesystem image
|
|
#
|
|
|
|
sa: mkmrunix mkmr proto
|
|
|
|
include $(ISMCOMMONRULES)
|
|
|
|
#
|
|
# Create all the unix kernels
|
|
mkmrunix:
|
|
@rm -rf $(DIST)/miniroot
|
|
#if defined(PRODUCT) && !empty(PRODUCT)
|
|
@echo "PRODUCT=$$PRODUCT $(MAKE) unix.mr"
|
|
cd $(WORKAREA)/irix/kern; $(MAKE) unix.mr
|
|
cp $(ROOT)/$(CPUINSTDIR)/unix.mr $(SA_WORKAREA)/unix.$(CPUBOARD)$(SUBPRODUCT)
|
|
#else
|
|
@rm -rf $(SA_WORKAREA) ; mkdir $(SA_WORKAREA)
|
|
@for p in $(EVERYPRODUCT) ; do \
|
|
PRODUCT=$$p; export PRODUCT ;\
|
|
echo "PRODUCT=$$p $(MAKE) unix.mr" ;\
|
|
cd $(WORKAREA)/irix/kern; $(MAKE) unix.mr ;\
|
|
done
|
|
#endif
|
|
|
|
# Move all the files and kernels to the mrtree
|
|
# HUGE ASSUMPTION: any file that is not user writable is not
|
|
# writable by everyone. see the chmod a+w and chmod a-w.
|
|
#
|
|
mkmr:
|
|
cd idbs; $(MAKE) idb
|
|
-find ${SA_WORKAREA}/ -type f | xargs strip -flsk 2>&1 | grep -v '^strip: .*: not an Elf file$$' > strip.errors
|
|
sed -e 's/^strip: \(.*\): cannot open file/\1/' strip.errors | grep '^strip' >strip.realerrors || /bin/true
|
|
if [ -s strip.realerrors ] ; then echo "ERRORS:" ; cat strip.realerrors ; exit 77; fi
|
|
sed -e 's/^strip: \(.*\): cannot open file/\1/' strip.errors | grep -v '^strip' | while read file ; do chmod a+w $$file ; strip -fslk $$file ; chmod a-w $$file ; done 2>&1 | grep -v '^strip: .*: not an Elf file$$' >strip.realerrors || /bin/true
|
|
if [ -s strip.realerrors ] ; then echo "ERRORS:" ; cat strip.realerrors ; exit 88; fi
|
|
rm strip.realerrors strip.errors
|
|
@if [ ! -d $(DIST)/miniroot ] ; then \
|
|
mkdir -p $(DIST)/miniroot ;\
|
|
fi
|
|
@for i in $(EVERYPRODUCT); do \
|
|
ipxx=`sed -n 's/^CPUBOARD *= *//p' $(ROOT)/usr/include/make/$$i""defs`; \
|
|
ipsp=`sed -n 's/^SUBPRODUCT *= *//p' $(ROOT)/usr/include/make/$$i""defs`; \
|
|
cp $(ROOT)/usr/sysgen/$$ipxx$$ipsp"boot/unix.mr" $(DIST)/miniroot/unix.$$ipxx$$ipsp ;\
|
|
done
|
|
sort -u +4 -5 $(IDB_MR_FILE) > finalidb
|
|
|
|
# Build the miniroot xfs image, then the sa tape filesystem. Check the
|
|
# generated mkfs proto file against the checked in version for errors.
|
|
proto:
|
|
@if [ -r proto_NEW ] ; then \
|
|
rm -f proto_NEW ;\
|
|
fi
|
|
@if [ ! -s $(PROTO_NEW) ] ; then \
|
|
$(IDBPROTO) -d -r mrtree -i finalidb MR > $(PROTO_NEW) ;\
|
|
fi
|
|
@if test "`diff -w $(PROTO_NEW) $(PROTO_MR) | wc -l`" -ne 0 ; then \
|
|
echo "***** Stand Alone Error : 'proto_NEW' and 'proto_mr'" ;\
|
|
echo " are different. Diff, Merge and Check-in new 'proto_mr' file." ;\
|
|
echo " To continue building SA - make proto" ;\
|
|
mv $(PROTO_NEW) proto_NEW ;\
|
|
exit 1 ;\
|
|
fi
|
|
@if test "`/usr/bin/du -s mrtree | cut -f1`" -gt $(MRCHK) ; then \
|
|
echo "***** Stand Alone Error : mrtree size is greater that $(MRCHK) ****" ;\
|
|
exit 1 ;\
|
|
fi
|
|
# Create actual mr file system from proto.mr file
|
|
rm -rf $(STMP) ; mkdir $(STMP)
|
|
$(MKFS_XFS) -b size=512 -d name=$(STMP)/mr,file,size=$(MRSIZE)b -l internal,size=1000b -p $(PROTO_MR)
|
|
|
|
# If using mkfs uncomment these three lines.
|
|
# @touch mr
|
|
# /etc/mkfs mr $(MRSIZE) 6144 10 32 4900 32 32 $(PROTO_MR)
|
|
# @mv -f mr $(STMP)/mr
|
|
|
|
@cd $(STMP) ; ln -s mr 20mr
|
|
@if [ ! -d $(DIST) ] ; then \
|
|
rm -f $(DIST) ; \
|
|
mkdir -p $(DIST) ; \
|
|
fi
|
|
@if [ ! -s $(IDB_SASH) ] ; then \
|
|
echo "***** Stand Alone Error : Missing $(IDB_SASH) file ****" ;\
|
|
fi
|
|
@if [ ! -s $(IDB_FX) ] ; then \
|
|
echo "***** Stand Alone Error : Missing $(IDB_FX) file ****" ;\
|
|
fi
|
|
( $(IDBINST) $(IDBINSTOPTS) -s $(WORKAREA)/irix -r $(STMP) -i $(IDB_FX) SA ; \
|
|
$(IDBINST) $(IDBINSTOPTS) -s $(WORKAREA)/stand -r $(STMP) -i $(IDB_SASH) MR ) | \
|
|
( cd $(STMP) > /dev/null ; echo 20mr mr ; \
|
|
while read fname ; \
|
|
do \
|
|
bname=`expr "$$fname" : '[0-9][0-9]\(.*\)'` ; \
|
|
rm -f $$bname ; \
|
|
mv -f $$fname $$bname ; \
|
|
ln -sf $$bname $$fname ; \
|
|
echo $$fname $$bname ; \
|
|
done \
|
|
) | sort -u | sed 's:.* ::' | \
|
|
( cd $(STMP) ; xargs -t mkboottape -f $(DIST)/sa )
|
|
|
|
# fastsa assumes that all the sash/fx/unix.IP* are in the sash/miniroot directory
|
|
# and are ready to go, (for use after patching up failures in proto?)
|
|
fastsa:
|
|
@rm -f $(STMP)/mr
|
|
$(MKFS_XFS) -b size=512 -d name=$(STMP)/mr,file,size=$(MRSIZE)b -l internal,size=1000b -p $(PROTO_MR)
|
|
|
|
# If using mkfs uncomment these three lines.
|
|
# @rm -f mr $(STMP)/mr ; touch mr
|
|
# /etc/mkfs mr $(MRSIZE) 6144 10 32 4900 32 32 $(PROTO_MR)
|
|
# @mv -f mr $(STMP)/mr
|
|
|
|
@if [ ! -d $(DIST) ] ; then \
|
|
rm -f $(DIST) ; \
|
|
mkdir -p $(DIST) ; \
|
|
fi
|
|
cd $(STMP) ; /sbin/ls [0-9][0-9]* | \
|
|
( while read fname ;\
|
|
do \
|
|
bname=`expr "$$fname" : '[0-9][0-9]\(.*\)'` ; \
|
|
echo $$fname $$bname ; \
|
|
done \
|
|
) | sort -u | sed 's:.* ::' | \
|
|
( xargs -t mkboottape -f $(DIST)/sa )
|