96 lines
2.6 KiB
Makefile
96 lines
2.6 KiB
Makefile
# This file is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License version 2 as
|
|
# published by the Free Software Foundation here:
|
|
# (http://www.gnu.org/licenses/gpl-2.0.html)
|
|
#
|
|
# 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.
|
|
|
|
PWD := $(shell pwd)
|
|
PACKAGE := $(shell echo $(PWD)|sed 's/.*\///')
|
|
SNAPDIR = $(PWD)/SNAP
|
|
ROOT = $(PWD)/ROOT
|
|
|
|
BYTES = 0
|
|
SNAP = $(PACKAGE)-$(VERSION).snap
|
|
SNAPINFO = $(SNAPDIR)/snapinfo
|
|
MANIFEST = $(SNAPDIR)/manifest
|
|
USHER = $(SNAPDIR)/usher
|
|
FILES = $(SNAPDIR)/files.tar.gz
|
|
|
|
# The following values must be set in the Makefile for the package
|
|
|
|
ifndef ARCHIVE
|
|
$(error ARCHIVE is not set)
|
|
endif
|
|
|
|
ifndef SRCDIR
|
|
$(error SRCDIR is not set)
|
|
endif
|
|
|
|
ifndef VERSION
|
|
$(error VERSION is not set)
|
|
endif
|
|
|
|
$(SNAP): $(SNAPINFO) $(FILES)
|
|
@if [ -f $(SNAP) ]; then \
|
|
rm -v $(SNAP); \
|
|
fi
|
|
|
|
@ar cvr $(SNAP) $(SNAPINFO) $(MANIFEST); \
|
|
if [ -f $(USHER) ]; then \
|
|
chmod +x $(USHER); \
|
|
ar cvr $(SNAP) $(USHER); \
|
|
fi; \
|
|
ar cvr $(SNAP) $(FILES)
|
|
|
|
@echo "Successfully built $(SNAP)"
|
|
|
|
$(SNAPINFO): $(MANIFEST)
|
|
@>$(SNAPINFO)
|
|
$(eval BYTES := $(shell du -sB1 $(ROOT)|awk '{print $$1}'))
|
|
|
|
@printf "package: $(PACKAGE)\nversion: $(VERSION)\n" > $(SNAPINFO); \
|
|
printf "depends: $(DEPENDS)\narch: $(ARCH)\nbytes: $(BYTES)\n" \
|
|
>> $(SNAPINFO); \
|
|
printf "url: $(URL)\ndescription: $(DESC)\n" >> $(SNAPINFO)
|
|
|
|
$(MANIFEST): $(FILES)
|
|
@>$(MANIFEST)
|
|
|
|
@bytes=0; \
|
|
rootfiles=`cd $(ROOT) && find ! -path .|sed 's/^\.\///'|sort -r`; \
|
|
while read -r file; do \
|
|
info=`ls -ld "$(ROOT)/$$file"`; \
|
|
perm=`echo $$info|awk '{print $$1}'`; \
|
|
type=`echo $$perm|head -c1`; \
|
|
sha='________________________________________'; \
|
|
if [ $$type = 'c' ]; then \
|
|
size=0; \
|
|
fi; \
|
|
if [ -f "$(ROOT)/$$file" ]; then \
|
|
sha=`sha1sum "$(ROOT)/$$file"|awk '{print $$1}'`; \
|
|
fi; \
|
|
printf "$$sha\t$$perm\t$$file\n" >> $(MANIFEST); \
|
|
done <<< "$$rootfiles"
|
|
|
|
$(FILES): $(ROOT)
|
|
# Remove any perllocal.pod to avoid conflicts
|
|
# Should try to properly fix this some time...
|
|
|
|
@find $(ROOT) -name perllocal.pod -exec rm {} \;
|
|
|
|
@files=`find $(ROOT) -type f -exec file -i '{}' \;| grep \
|
|
'application/x-\(executable\|object\|sharedlib\);' | \
|
|
grep ' charset=binary'`; \
|
|
while read -r line; do \
|
|
file=`echo $$line|sed 's/: application\/x-.*//'`; \
|
|
if [ "$$file" != '' ]; then \
|
|
strip --strip-unneeded $$file; \
|
|
fi; \
|
|
done <<< "$$files"
|
|
@cd $(ROOT) && tar cvzf $(FILES) *
|
|
|