mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-11-25 23:11:33 +02:00
Improve scalability by splitting the distributor cache. Additional cleanup and
generalizations. - boom/Makefile, dist/dk/Makefile: the "files with everything" are now called dist/db/all.* instead of dist/db/digi-key.* - boom/manu/panasonic/Makefile, boom/manu/stackpole/Makefile, boom/manu/yageo/Makefile: changed digi-key.equ to all.equ - boom/Makefile: there can now be a list of distributors - boom/Makefile (tar): new target to generate a snapshot of the database - boom/Makefile (PHONY): added "spotless" - boom/dist/dk/Makefile: do not merge catalog listings so that we don't have to search a huge cache with O(n^2) - boom/dist/dk/Makefile (clean, rebuild, update, spotless): targets for different degrees of rebuilding - boom/dist/dk/dk-db.pl: added progress report output
This commit is contained in:
parent
f0519fcb56
commit
57fc0bd84e
@ -2,13 +2,20 @@ BOOM=PATH=/home/moko/svn.openmoko.org/trunk/eda/boom:../boom:$$PATH boom
|
|||||||
|
|
||||||
KITS = 1
|
KITS = 1
|
||||||
|
|
||||||
INV = dist/dk/db/digi-key.inv
|
DIST = dk
|
||||||
EQU = dist/dk/db/digi-key.equ
|
EQU = $(DIST:%=dist/%/db/all.equ)
|
||||||
DSC = dist/dk/db/digi-key.dsc
|
INV = $(DIST:%=dist/%/db/all.inv)
|
||||||
|
DSC = $(DIST:%=dist/%/db/all.dsc)
|
||||||
CHR = manu/panasonic/panasonic.chr manu/stackpole/stackpole.chr \
|
CHR = manu/panasonic/panasonic.chr manu/stackpole/stackpole.chr \
|
||||||
manu/yageo/yageo.chr
|
manu/yageo/yageo.chr
|
||||||
|
|
||||||
.PHONY: all show again
|
DB = $(CHR) \
|
||||||
|
$(DIST:%=dist/%/db/*.equ) \
|
||||||
|
$(DIST:%=dist/%/db/*.inv) \
|
||||||
|
$(DIST:%=dist/%/db/*.dsc)
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: all show again spotless tar
|
||||||
|
|
||||||
all: show
|
all: show
|
||||||
|
|
||||||
@ -30,3 +37,7 @@ test.lst: test.mbq
|
|||||||
|
|
||||||
spotless:
|
spotless:
|
||||||
rm -f test.lst test.par test.ord
|
rm -f test.lst test.par test.ord
|
||||||
|
|
||||||
|
tar:
|
||||||
|
tar cfj boom-db.tar.bz2 $(DB)
|
||||||
|
|
||||||
|
80
boom/dist/dk/Makefile
vendored
80
boom/dist/dk/Makefile
vendored
@ -1,27 +1,75 @@
|
|||||||
CACHE = query.data
|
MASTER = db/all.equ db/all.dsc db/all.inv
|
||||||
EQUS = panasonic-erj stackpole-rmcf yageo-rc
|
PARTS = panasonic-erj stackpole-rmcf yageo-rc
|
||||||
|
|
||||||
.PHONY: all
|
.SECONDARY: # prevent *.cache from being automatically deleted
|
||||||
|
|
||||||
all: db/digi-key.dsc db/digi-key.inv
|
.PHONY: all clean rebuild update spotless
|
||||||
|
|
||||||
$(CACHE): db/digi-key.equ
|
all: $(MASTER) \
|
||||||
|
$(PARTS:%=db/%.equ) \
|
||||||
|
$(PARTS:%=db/%.inv) \
|
||||||
|
$(PARTS:%=db/%.dsc)
|
||||||
|
|
||||||
|
db/%.cache: db/%.equ
|
||||||
awk '/^#END/ { exit } /^DIGI-KEY / { print $$2 }' $< | \
|
awk '/^#END/ { exit } /^DIGI-KEY / { print $$2 }' $< | \
|
||||||
perl ./dk-db.pl query \
|
perl ./dk-db.pl query \
|
||||||
`[ -r $(CACHE) ] && echo '' -i $(CACHE)` >_$@ || \
|
`[ -r $@ ] && echo '' -i $@` >$(@)_ || \
|
||||||
{ rm -f $@ _$@; exit 1; }
|
{ rm -f $@ $(@)_; exit 1; }
|
||||||
mv _$@ $@
|
mv $(@)_ $@
|
||||||
|
|
||||||
db/digi-key.equ: $(EQUS:%=db/%.equ)
|
db:
|
||||||
cat $^ >$@ || { rm -rf $@; exit 1; }
|
mkdir -p db
|
||||||
|
|
||||||
db/digi-key.dsc: $(CACHE)
|
#
|
||||||
perl ./dk-db.pl dsc $< >$@ || \
|
# We need "db" to create the directory. However, this also means that any
|
||||||
{ rm -f $@; exit 1; }
|
# change in the db/ directory triggers a rebuild of all.equ. This is cheap, so
|
||||||
|
# this is nothing but a small cosmetic issue.
|
||||||
|
#
|
||||||
|
|
||||||
db/digi-key.inv: $(CACHE)
|
db/all.equ: db Makefile
|
||||||
perl ./dk-db.pl inv $< >$@ || \
|
for n in $(PARTS); do echo "include $$n.equ"; done >$@
|
||||||
{ rm -f $@; exit 1; }
|
|
||||||
|
db/all.inv: Makefile
|
||||||
|
for n in $(PARTS); do echo "include $$n.inv"; done >$@
|
||||||
|
|
||||||
|
db/all.dsc: Makefile
|
||||||
|
for n in $(PARTS); do echo "include $$n.dsc"; done >$@
|
||||||
|
|
||||||
db/%.equ: %.catq
|
db/%.equ: %.catq
|
||||||
perl ./dk-catq.pl $< >$@ || { rm -rf $@; exit 1; }
|
perl ./dk-catq.pl $< >$@ || { rm -rf $@; exit 1; }
|
||||||
|
|
||||||
|
db/%.inv: db/%.cache
|
||||||
|
perl ./dk-db.pl inv $< >$@ || { rm -f $@; exit 1; }
|
||||||
|
|
||||||
|
db/%.dsc: db/%.cache
|
||||||
|
perl ./dk-db.pl dsc $< >$@ || { rm -f $@; exit 1; }
|
||||||
|
|
||||||
|
|
||||||
|
# --- Cleanup -----------------------------------------------------------------
|
||||||
|
|
||||||
|
#
|
||||||
|
# We have various levels of cleanup:
|
||||||
|
#
|
||||||
|
# - clean: remove left-over temporary files
|
||||||
|
# - rebuild: remove everything that can be rebuilt from cached data
|
||||||
|
# - update: remove the short-lived inventory and pricing cache too
|
||||||
|
# - again: remove also the long-lived equivalences cache
|
||||||
|
#
|
||||||
|
# "clean" does not disturb use of the database. The run-time cost of recovering
|
||||||
|
# from "rebuild" is small. What takes a lot of time is "update". The additional
|
||||||
|
# cost of "spotless" is small again.
|
||||||
|
#
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(PARTS:%=db/%.cache_)
|
||||||
|
|
||||||
|
rebuild: clean
|
||||||
|
rm -f $(MASTER)
|
||||||
|
rm -f $(PARTS:%=db/%.inv)
|
||||||
|
rm -f $(PARTS:%=db/%.dsc)
|
||||||
|
|
||||||
|
update: rebuild
|
||||||
|
rm -f $(PARTS:%=db/%.cache)
|
||||||
|
|
||||||
|
spotless: update
|
||||||
|
rm -f $(PARTS:%=db/%.equ)
|
||||||
|
4
boom/dist/dk/dk-db.pl
vendored
4
boom/dist/dk/dk-db.pl
vendored
@ -63,6 +63,10 @@ if ($mode eq "query") {
|
|||||||
next if /^\s*$/;
|
next if /^\s*$/;
|
||||||
next if /^\s/;
|
next if /^\s/;
|
||||||
s/\s.*//;
|
s/\s.*//;
|
||||||
|
|
||||||
|
$n++;
|
||||||
|
print STDERR "$n\r" unless $n % 100;
|
||||||
|
|
||||||
next if $old =~ m#align=right>Digi-Key Part Number</th><td>$_</td#;
|
next if $old =~ m#align=right>Digi-Key Part Number</th><td>$_</td#;
|
||||||
push(@pn, $_);
|
push(@pn, $_);
|
||||||
&flush if @pn > 1000;
|
&flush if @pn > 1000;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
BOOM=PATH=/home/moko/svn.openmoko.org/trunk/eda/boom:../boom:$$PATH boom
|
BOOM=PATH=/home/moko/svn.openmoko.org/trunk/eda/boom:../boom:$$PATH boom
|
||||||
|
|
||||||
panasonic.chr: ../../dist/dk/db/digi-key.equ panasonic.gen
|
panasonic.chr: ../../dist/dk/db/all.equ panasonic.gen
|
||||||
$(BOOM) gen2chr PANASONIC $^ >$@ || { rm -rf $@; exit 1; }
|
$(BOOM) gen2chr PANASONIC $^ >$@ || { rm -rf $@; exit 1; }
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
BOOM=PATH=/home/moko/svn.openmoko.org/trunk/eda/boom:../boom:$$PATH boom
|
BOOM=PATH=/home/moko/svn.openmoko.org/trunk/eda/boom:../boom:$$PATH boom
|
||||||
|
|
||||||
stackpole.chr: ../../dist/dk/db/digi-key.equ stackpole.gen
|
stackpole.chr: ../../dist/dk/db/all.equ stackpole.gen
|
||||||
$(BOOM) gen2chr STACKPOLE $^ >$@ || { rm -rf $@; exit 1; }
|
$(BOOM) gen2chr STACKPOLE $^ >$@ || { rm -rf $@; exit 1; }
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
BOOM=PATH=/home/moko/svn.openmoko.org/trunk/eda/boom:../boom:$$PATH boom
|
BOOM=PATH=/home/moko/svn.openmoko.org/trunk/eda/boom:../boom:$$PATH boom
|
||||||
|
|
||||||
yageo.chr: ../../dist/dk/db/digi-key.equ yageo.gen
|
yageo.chr: ../../dist/dk/db/all.equ yageo.gen
|
||||||
$(BOOM) gen2chr YAGEO $^ >$@ || { rm -rf $@; exit 1; }
|
$(BOOM) gen2chr YAGEO $^ >$@ || { rm -rf $@; exit 1; }
|
||||||
|
Loading…
Reference in New Issue
Block a user