From 2ac5deca3a5972291a323e46a0ebe9fbba78086e Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 15 Jan 2013 14:30:08 -0800 Subject: [PATCH] Update to shared scheme files Signed-off-by: Keith Packard --- Makefile | 35 ++++++++----- gnet-partslist-bom.scm | 107 -------------------------------------- gnet-partslist-csv.scm | 86 ------------------------------ gnet-partslist-keithp.scm | 86 ------------------------------ retab | 58 --------------------- 5 files changed, 21 insertions(+), 351 deletions(-) delete mode 100644 gnet-partslist-bom.scm delete mode 100644 gnet-partslist-csv.scm delete mode 100644 gnet-partslist-keithp.scm delete mode 100644 retab diff --git a/Makefile b/Makefile index 7d9f2e0..3df154e 100644 --- a/Makefile +++ b/Makefile @@ -1,24 +1,31 @@ PROJECT=mpserial +AM=../altusmetrum +SCHEME=$(AM)/scheme +NICKLE=$(AM)/nickle +RETAB=nickle $(NICKLE)/retab # intentionally want to rebuild drc and bom on every invocation -all: drc pcb partslist partslist.csv partslist.dk zip +all: drc pcb partslist partslist.csv partslist.dk muffin-5267.pdf -drc: $(PROJECT).sch Makefile - -gnetlist -g drc2 $(PROJECT).sch -o $(PROJECT).drc +drc: $(PROJECT).sch + gnetlist -L $(SCHEME) -g drc2 $(PROJECT).sch -o $(PROJECT).drc -partslist: $(PROJECT).sch Makefile - gnetlist -g bom -o $(PROJECT)-bom.unsorted $(PROJECT).sch - (head -n1 $(PROJECT)-bom.unsorted && tail -n+2 $(PROJECT)-bom.unsorted | sort) | nickle ./retab > partslist - rm -f $(PROJECT)-bom.unsorted +partslist: $(PROJECT).sch + gnetlist -L $(SCHEME) -g bom -o $(PROJECT).tabtmp $(PROJECT).sch + (head -n1 $(PROJECT).tabtmp; tail -n+2 $(PROJECT).tabtmp | sort) | $(RETAB) > $@ && rm -f $(PROJECT).tabtmp -partslist.csv: $(PROJECT).sch Makefile gnet-partslist-csv.scm - gnetlist -l gnet-partslist-csv.scm -g partslist-csv -o $@ $(PROJECT).sch +partslist.csv: $(PROJECT).sch Makefile + gnetlist -L $(SCHEME) -g partslistgag -o $(PROJECT).csvtmp $(PROJECT).sch + (head -n1 $(PROJECT).csvtmp; tail -n+2 $(PROJECT).csvtmp | sort -t \, -k 8) > $@ && rm -f $(PROJECT).csvtmp -partslist.dk: $(PROJECT).sch Makefile gnet-partslist-bom.scm - gnetlist -m ./gnet-partslist-bom.scm -g partslist-bom -Ovendor=digikey -o $@ $(PROJECT).sch +partslist.dk: $(PROJECT).sch Makefile $(SCHEME)/gnet-partslist-bom.scm + gnetlist -L $(SCHEME) -g partslist-bom -Ovendor=digikey -o $@ $(PROJECT).sch -partslist.pdf: partslist.csv smt-labels.glabels - glabels-3-batch smt-labels.glabels -i partslist.csv -o partslist.ps && ps2pdf partslist.ps +partslist.mouser: $(PROJECT).sch Makefile $(SCHEME)/gnet-partslist-bom.scm + gnetlist -L $(SCHEME) -g partslist-bom -Ovendor=mouser -o $@ $(PROJECT).sch + +muffin-5267.pdf: partslist.csv $(AM)/glabels/muffin-5267.glabels + glabels-3-batch $(AM)/glabels/muffin-5267.glabels -i partslist.csv -o muffin-5267.ps && ps2pdf muffin-5267.ps && rm muffin-5267.ps pcb: $(PROJECT).sch project Makefile gsch2pcb project @@ -57,5 +64,5 @@ stencil: $(PROJECT).gerb clean: rm -f *.bom *.drc *.log *~ $(PROJECT).ps *.gbr $(PROJECT).gerb *.cnc *bak* *- *.zip - rm -f *.net *.xy *.cmd *.png partslist partslist.csv + rm -f *.net *.xy *.cmd *.png partslist partslist.csv partslist.dk partslist.mouser muffin-5267.pdf rm -f *.partslist *.new.pcb *.unsorted $(PROJECT).xls diff --git a/gnet-partslist-bom.scm b/gnet-partslist-bom.scm deleted file mode 100644 index 0793bc4..0000000 --- a/gnet-partslist-bom.scm +++ /dev/null @@ -1,107 +0,0 @@ -; Copyright © 2012 Keith Packard -; gnet-partslist-bom.scm -; -; 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 2 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, write to the Free Software -; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -; The /'s may not work on win32 -(load (string-append gedadata "/scheme/gnet-partslist-common.scm")) - -(define (caddddddr s) - (car (cdr (cdr (cdr (cdr (cdr (cdr s)))))))) - -(define (cadddddr s) - (car (cdr (cdr (cdr (cdr (cdr s))))))) - -(define (caddddr s) - (car (cdr (cdr (cdr (cdr s)))))) - -(define multiplier 1) - -(define (partslist-bom:write-part s port) - (let ((quantity (caddddddr s)) - (part (cadddddr s)) - (device (cadr s)) - (value (caddr s))) - (display (* multiplier quantity) port) - (display "," port) - (display part port) - (display "," port) - (display device port) - (display " " port) - (display value port) - (display "\n" port))) - -(define (partslist-bom:write-partslist ls port) - (if (null? ls) - '() - (begin (partslist-bom:write-part (car ls) port) - (partslist-bom:write-partslist (cdr ls) port)))) - -(define (count-same-parts ls) - (if (null? ls) - (append ls) - (let* ((parts-table-no-uref (let ((result '())) - (for-each (lambda (l) (set! result (cons (cdr l) result))) (reverse ls)) - (append result))) - (first-ls (car parts-table-no-uref)) - (match-length (length (member first-ls (reverse parts-table-no-uref)))) - (rest-ls (list-tail ls match-length)) - (match-ls (list-tail (reverse ls) (- (length ls) match-length))) - (uref-ls (let ((result '())) - (for-each (lambda (l) (set! result (cons (car l) result))) match-ls) - (append result)))) - (cons (cons uref-ls (append first-ls (list match-length))) (count-same-parts rest-ls))))) - -(define get-vendor - (lambda (package) - (gnetlist:get-package-attribute package "vendor"))) - -(define get-vendor-part-number - (lambda (package) - (gnetlist:get-package-attribute package "vendor_part_number"))) - -(define get-footprint - (lambda (package) - (gnetlist:get-package-attribute package "footprint"))) - -(define (get-parts-table-bom packages vendor) - (if (null? packages) - '() - (let ((package (car packages))) - (if (string=? (get-vendor package) vendor) - (if (string=? (get-device package) "include") - (get-parts-table-bom (cdr packages) vendor) - (cons (list package - (get-device package) - (get-value package) - (get-footprint package) - (get-vendor package) - (get-vendor-part-number package)) ;; sdb change - (get-parts-table-bom (cdr packages) vendor))) - (get-parts-table-bom (cdr packages) vendor))))) - - -(define (get-vendor-match) - (let ((vendor-param (calling-flag? "vendor" (gnetlist:get-calling-flags)))) - (if vendor-param - (cdr vendor-param) - "digikey"))) - -(define (partslist-bom output-filename) - (let ((port (open-output-file output-filename)) - (parts-table (marge-sort-with-multikey (get-parts-table-bom packages (get-vendor-match)) '(1 2 3 0)))) - (set! parts-table (count-same-parts parts-table)) - (partslist-bom:write-partslist parts-table port) - (close-output-port port))) diff --git a/gnet-partslist-csv.scm b/gnet-partslist-csv.scm deleted file mode 100644 index 291bb0a..0000000 --- a/gnet-partslist-csv.scm +++ /dev/null @@ -1,86 +0,0 @@ -; Copyright (C) 2001-2010 MIYAMOTO Takanori -; gnet-partslist-csv.scm -; -; 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 2 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, write to the Free Software -; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -; The /'s may not work on win32 -(load (string-append gedadata "/scheme/gnet-partslist-common.scm")) - -(define partslist-csv:write-top-header - (lambda (port) - (display "device,value,footprint,vendor,vendor_part_number,quantity,refdes\n" port))) - -(define (partslist-csv:write-partslist ls port) - (if (null? ls) - '() - (begin (write-one-row (cdar ls) "," "," port) - (write-one-row (caar ls) " " "\n" port) - (partslist-csv:write-partslist (cdr ls) port)))) - -(define (count-same-parts ls) - (if (null? ls) - (append ls) - (let* ((parts-table-no-uref (let ((result '())) - (for-each (lambda (l) (set! result (cons (cdr l) result))) (reverse ls)) - (append result))) - (first-ls (car parts-table-no-uref)) - (match-length (length (member first-ls (reverse parts-table-no-uref)))) - (rest-ls (list-tail ls match-length)) - (match-ls (list-tail (reverse ls) (- (length ls) match-length))) - (uref-ls (let ((result '())) - (for-each (lambda (l) (set! result (cons (car l) result))) match-ls) - (append result)))) - (cons (cons uref-ls (append first-ls (list match-length))) (count-same-parts rest-ls))))) - -(define get-vendor - (lambda (package) - (gnetlist:get-package-attribute package "vendor"))) - -(define get-vendor-part-number - (lambda (package) - (gnetlist:get-package-attribute package "vendor_part_number"))) - -(define get-footprint - (lambda (package) - (gnetlist:get-package-attribute package "footprint"))) - -(define get-loadstatus - (lambda (package) - (gnetlist:get-package-attribute package "loadstatus"))) - -(define (get-parts-table-csv packages) - (if (null? packages) - '() - (let ((package (car packages))) - (if (string=? (get-device package) "include") - (get-parts-table-csv (cdr packages)) - (if (string=? (get-loadstatus package) "smt") - (cons (list package - (get-device package) - (get-value package) - (get-footprint package) - (get-vendor package) - (get-vendor-part-number package)) ;; sdb change - (get-parts-table-csv (cdr packages))) - (get-parts-table-csv (cdr packages))))))) - -(define partslist-csv - (lambda (output-filename) - (let ((port (open-output-file output-filename)) - (parts-table (marge-sort-with-multikey (get-parts-table-csv packages) '(1 2 3 0)))) - (set! parts-table (count-same-parts parts-table)) - (partslist-csv:write-top-header port) - (partslist-csv:write-partslist parts-table port) - (close-output-port port)))) diff --git a/gnet-partslist-keithp.scm b/gnet-partslist-keithp.scm deleted file mode 100644 index 2d01305..0000000 --- a/gnet-partslist-keithp.scm +++ /dev/null @@ -1,86 +0,0 @@ -; Copyright (C) 2001-2010 MIYAMOTO Takanori -; gnet-partslist-keithp.scm -; -; 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 2 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, write to the Free Software -; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -; The /'s may not work on win32 -(load (string-append gedadata "/scheme/gnet-partslist-common.scm")) - -(define partslist-keithp:write-top-header - (lambda (port) - (display ".START\n" port) - (display "..device\tvalue\tfootprint\t\tvendor\tvendor_part_number\tquantity\trefdes\n" port))) - -(define (partslist-keithp:write-partslist ls port) - (if (null? ls) - '() - (begin (write-one-row (cdar ls) "\t" "\t" port) - (write-one-row (caar ls) " " "\n" port) - (partslist-keithp:write-partslist (cdr ls) port)))) - -(define partslist-keithp:write-bottom-footer - (lambda (port) - (display ".END" port) - (newline port))) - -(define (count-same-parts ls) - (if (null? ls) - (append ls) - (let* ((parts-table-no-uref (let ((result '())) - (for-each (lambda (l) (set! result (cons (cdr l) result))) (reverse ls)) - (append result))) - (first-ls (car parts-table-no-uref)) - (match-length (length (member first-ls (reverse parts-table-no-uref)))) - (rest-ls (list-tail ls match-length)) - (match-ls (list-tail (reverse ls) (- (length ls) match-length))) - (uref-ls (let ((result '())) - (for-each (lambda (l) (set! result (cons (car l) result))) match-ls) - (append result)))) - (cons (cons uref-ls (append first-ls (list match-length))) (count-same-parts rest-ls))))) - -(define get-vendor - (lambda (package) - (gnetlist:get-package-attribute package "vendor"))) - -(define get-vendor-part-number - (lambda (package) - (gnetlist:get-package-attribute package "vendor_part_number"))) - -(define get-footprint - (lambda (package) - (gnetlist:get-package-attribute package "footprint"))) - -(define (get-parts-table-keithp packages) - (if (null? packages) - '() - (let ((package (car packages))) - (if (string=? (get-device package) "include") - (get-parts-table-keithp (cdr packages)) - (cons (list package - (get-device package) - (get-value package) - (get-footprint package) - (get-vendor package) - (get-vendor-part-number package)) ;; sdb change - (get-parts-table-keithp (cdr packages))))))) - -(define partslist-keithp - (lambda (output-filename) - (let ((port (open-output-file output-filename)) - (parts-table (marge-sort-with-multikey (get-parts-table-keithp packages) '(1 2 3 0)))) - (set! parts-table (count-same-parts parts-table)) - (partslist-keithp:write-top-header port) - (partslist-keithp:write-partslist parts-table port) - (close-output-port port)))) diff --git a/retab b/retab deleted file mode 100644 index b04ee10..0000000 --- a/retab +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/nickle - -string[*][*] lines; -int[*] widths; - -string[*] get_one(file in) { - string l = File::fgets(in); - return String::wordsplit(l, "\t"); -} - -string[*][*] get_all(file in) { - string[...][*] l = {}; - while (!File::end(in)) - l[dim(l)] = get_one(in); - return l; -} - -int[*] find_widths(string[*][*] lines) { - int[...] w = {}; - for (int r = 0; r < dim(lines); r++) { - for (int c = 0; c < dim(lines[r]); c++) { - int len = String::length(lines[r][c]); - if (c >= dim(w)) - w[c] = len; - else - w[c] = max(w[c], len); - } - } - return w; -} - -void print_one(string s, int w) { - int l = String::length(s); - printf ("%s ", s); - while (l < w) { - putchar(' '); - l++; - } -} - -void print_line(string[*] line) { - for (int c = 0; c < dim(line); c++) - print_one(line[c], widths[c]); - putchar('\n'); -} - -void print_all() { - for (int r = 0; r < dim(lines); r++) - print_line(lines[r]); -} - -void doit () { - lines = get_all(stdin); - widths = find_widths(lines); - print_all(); -} - -doit(); -- 2.30.2