Add test that manifest (tar file) contains all files in repository

git-svn-id: file://localhost/svn/verilator/trunk/verilator@1058 77ca24e4-aefa-0310-84f0-b9a241c72d87
This commit is contained in:
Wilson Snyder 2008-05-08 14:38:07 +00:00
parent faad36a3ef
commit 4f30025aa0
4 changed files with 106 additions and 9 deletions

26
MANIFEST.SKIP Normal file
View File

@ -0,0 +1,26 @@
^CVS/
/CVS/
\.git/
\.svn/
\.(bak|old)/
\.(bak|old)$
\bMakefile$
\.tar\.
.*\.tgz
.*\.log
.*\.tmp
.*\.tex
.*\.key
.*\.vcd
/obj_dir/
/obj_dbg/
/obj_opt/
/logs/
Makefile
src/Makefile_obj
include/verilated.mk
config.cache
config.status
verilator_bin.*
autom4te\.cache/
nodist/

View File

@ -103,19 +103,25 @@ DISTBIN = $(wildcard bin/verilator-*)
DISTFILES_INC = $(INFOS) .cvsignore COPYING *.in *.ac \
Changes README TODO \
MANIFEST.SKIP \
bin/* \
install-sh configure mkinstalldirs *.texi \
include/verilated.[chv]* \
include/verilatedos.[chv]* \
include/*.in \
src/.cvsignore src/*.in src/*.cpp src/*.[chly] src/astgen src/*fix \
include/.*ignore \
.*attributes */.*attributes */*/.*attributes \
src/.*ignore src/*.in src/*.cpp src/*.[chly] src/astgen src/*fix \
src/*.pl \
test_*/.cvsignore test_*/Makefile* test_*/*.cpp \
test_*/.*ignore test_*/Makefile* test_*/*.cpp \
test_*/*.pl test_*/*.v test_*/*.vc test_*/vlint \
test_verilated/vgen*.pl \
test_regress/t/*.v* \
test_regress/t/*.pl \
test_regress/t/*.cpp \
test_regress/t/*.h \
test_regress/t/*.mem \
test_regress/t/*.out \
test_regress/t/*.pl \
test_regress/t/*.v* \
verilator.* \
INST_PROJ_FILES = \
@ -203,7 +209,7 @@ verilator.pdf: bin/verilator $(DISTCONFIG)
mv verilator2.tex verilator.tex
pdflatex verilator.tex
pdflatex verilator.tex
-rm -f verilator.toc verilator.aux verilator.idx
-rm -f verilator.toc verilator.aux verilator.idx verilator.out
INSTALL: install.texi
$(MAKEINFO) -I$(srcdir) $(srcdir)/install.texi --output=$@ \
@ -253,8 +259,8 @@ install-project: dist
for p in verilator.1 ; do \
$(INSTALL_PROGRAM) -m 0666 $$p $(DIRPROJECT_PREFIX)/man/man1/$$p; \
done
$(INST_PROJ_CVS) $(DISTNAME).tar.gz $(DIRPROJECT)/hw/utils/verilator/verilator.tgz
rm $(DISTNAME).tar.gz
$(INST_PROJ_CVS) $(DISTNAME).tgz $(DIRPROJECT)/hw/utils/verilator/verilator.tgz
rm $(DISTNAME).tgz
install-project-quick:
@echo "Install-project-quick (no strip) to $(DIRPROJECT)"
@ -331,6 +337,12 @@ TAGFILES=${srcdir}/*/*.cpp ${srcdir}/*/*.h ${srcdir}/*/[a-z]*.in \
TAGS: $(TAGFILES)
etags $(TAGFILES)
######################################################################
# Test targets
dist-file-list:
@echo "dist-file-list:"; # Scripts look for this
@echo $(wildcard $(DISTFILES))
######################################################################
# Distributions
@ -358,6 +370,7 @@ dist: $(DISTDEP) maintainer-copy
chmod -R a+r $(DISTNAME)
tar chf $(DISTNAME).tar $(DISTNAME)
gzip --force --best $(DISTNAME).tar
mv $(DISTNAME).tgz $(DISTNAME).tgz
rm -fr $(DISTNAME)
maintainer-diff:
@ -367,4 +380,4 @@ preexist:
svnorcvs nexists $(DISTTAGNAME)
maintainer-dist: preexist dist tag
svnorcvs release $(DISTNAME).tar.gz
svnorcvs release $(DISTNAME).tgz

View File

@ -60,7 +60,7 @@ The latest version is available at
@uref{http://www.veripool.org/verilator}
Download the latest package from that site, and decompress.
@samp{gunzip verilator_version.tar.gz ; tar xvf verilator_version.tar}
@samp{tar xvzf verilator_version.tgz}
@node Directory Structure, Supported Systems, Obtaining Distribution, Top
@section Directory Structure

View File

@ -0,0 +1,58 @@
#!/usr/bin/perl
if (!$::Driver) { use FindBin; exec("./driver.pl", @ARGV, $0); die; }
# $Id$
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
#
# Copyright 2003 by Wilson Snyder. This program is free software; you can
# redistribute it and/or modify it under the terms of either the GNU
# General Public License or the Perl Artistic License.
my $root = "..";
my $Debug;
###
# Call once and ignore to rebuild any targets before we need the output
`cd $root && make dist-file-list`;
my $manifest_files = `cd $root && make dist-file-list`;
$manifest_files =~ s!.*dist-file-list:!!sg;
my %files;
foreach my $file (split /\s+/,$manifest_files) {
next if $file eq '';
$files{$file} |= 1;
}
my $all_files = `cd $root && find . -type f -print`;
foreach my $file (split /\s+/,$all_files) {
next if $file eq '';
$file =~ s!^\./!!;
$files{$file} |= 2;
}
my $skip = file_contents("$root/MANIFEST.SKIP");
foreach my $file (sort keys %files) {
foreach my $skip (split /\s+/,$skip) {
if ($file =~ /$skip/) {
$files{$file} |= 4;
}
}
}
foreach my $file (sort keys %files) {
my $tar = $files{$file}&1;
my $dir = $files{$file}&2;
my $skip = $files{$file}&4;
print +(($tar ? "TAR ":" ")
.($dir ? "DIR ":" ")
.($skip ? "SKIP ":" ")
." $file\n") if $Debug;
if ($dir && !$tar && !$skip) {
$Last_Self->error("File not in manifest or MANIFEST.SKIP: $file");
} elsif (!$dir && $tar && !$skip) {
$Last_Self->error("File in manifest, but not directory: $file");
}
}
ok(1);
1;