X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=.Sanitize;h=f41629979de68f68be3adb247396ded49fdc89f3;hb=6ff4269b8acd22e3fe6bef132288adbef9b8a996;hp=c3bc6ac9a24cf36a049ca23e3388fab8f3c4f81a;hpb=1ed0529ed70ad286cf8fc982b5c54c780266af14;p=deliverable%2Fbinutils-gdb.git diff --git a/.Sanitize b/.Sanitize index c3bc6ac9a2..f41629979d 100644 --- a/.Sanitize +++ b/.Sanitize @@ -1,3 +1,34 @@ +######################## +# +# H H EEEEEE Y Y !! +# H H E Y Y !! +# H H E Y Y !! +# H H E Y !! +# HHHHHH EEEEE Y !! +# H H E Y !! +# H H E Y !! +# H H E Y +# H H EEEEEE Y !! +# +# YO! READ ME!!!!!!!!! +# If you're about to add a file or directory which isn't checked out as part +# of every module in devo (e.g., if "cvs co gas+utils" won't get it, or if +# "cvs co gcc" won't get it), then don't, Don't, DON'T add it to the regular +# things-to-keep or things-to-lose sections. Instead, add it to the setting +# of keep_these_too or lose_these_too before those variables are rescanned +# to check for the existence of the items listed in them. +# +# Otherwise, somebody will check out some package that doesn't include your +# new file, and will get warnings from Sanitize when everything is really +# okay. You don't want to get people in the habit of ignoring complaints from +# Sanitize, do you? No, I didn't think so. +# +# If you do add a file to the regular things-to-keep section, don't forget +# to add the corresponding entry to the devo-support entry (or whatever) in +# the modules file. +# +######################## + # .Sanitize for devo. # Each directory to survive its way into a release will need a file @@ -15,15 +46,26 @@ Do-first: -keep_these_too="${keep_these_too} .cvsignore CYGNUS autoconf - bfd binutils byacc cvs deja-gnu dejagnu diff dosrel dvips emacs emacs19 - examples expect fileutils flex gas gcc gdb gdbm gdbtest glob gprof grep - groff include install.sh ispell ld libg++ libgcc libgloss libiberty - libio librx m4 make mmalloc move-if-change newlib opcodes pagas patch - prms rcs readline sed send-pr shellutils sim tcl textutils tk - test-build.mk texinfo tgas utils uudecode wdiff xiberty" +keep_these_too="${keep_these_too} .cvsignore autoconf automake + apache bash + bfd binutils bison byacc cvs deja-gnu dejagnu diff dosrel dvips + emacs emacs19 examples expect fileutils findutils flex + gas gawk gcc gdb gdbm gdbtest glob gperf gprof grep grez groff + guile gzip + include inet install-sh intl ispell + ld less libgcc libgloss libiberty libio + libstdc++ libtool + m4 make mkinstalldirs mmalloc move-if-change newlib ncurses opcodes + pagas patch perl prms + rcs readline sed send-pr shellutils sim tar textutils time + texinfo tgas utils uudecode wdiff xiberty + configure.bat makeall.bat setup.com makefile.vms winsup + mpw-README mpw-configure mpw-config.in mpw-build.in mpw-install + ltconfig ltmain.sh missing ylwrap" + +lose_these_too="${lose_these_too} libg++ librx testsuite" -cygnus_files="release release-info build-all.mk COPYING.NEWLIB" +cygnus_files="release release-info build-all.mk test-build.mk CYGNUS COPYING.NEWLIB" if ( echo $* | grep keep\-cygnus > /dev/null) ; then keep_these_too="${keep_these_too} ${cygnus_files}" @@ -31,19 +73,84 @@ else lose_these_too="${lose_these_too} ${cygnus_files}" fi -mpw_files="mpw-README mpw-configure mpw-config.in mpw-build.in ChangeLog.mpw" +gdbtk_files="tcl tk itcl tix libgui" + +if ( echo $* | grep lose\-gdbtk > /dev/null) ; then + lose_these_too="${lose_these_too} ${gdbtk_files}" + if [ -n "${verbose}" ] ; then + echo Deleting ${gdbtk_files} + fi +else + keep_these_too="${keep_these_too} ${gdbtk_files}" + if [ -n "${verbose}" ] ; then + echo Keeping ${gdbtk_files} + fi +fi + +# This is for newlib net releases. +newlib_file="COPYING.NEWLIB" + +if (echo $* | grep keep\-newlib > /dev/null) ; then + if (echo $* | grep -v keep\-cygnus > /dev/null) ; then + keep_these_too="${keep_these_too} ${newlib_file}" + lose_these_too="`echo ${lose_these_too} | sed -e s/${newlib_file}//`" + fi +else + true; # Let keep-cygnus handle it. +fi + +# IDK releases don't include files which only matter to CDK. +inet_files="COPYING.LIB config config-ml.in etc symlink-tree" + +if (echo $* | grep keep\-inet > /dev/null); then + lose_these_too="${lose_these_too} ${inet_files}" +else + keep_these_too="${keep_these_too} ${inet_files}" +fi + +ide_files="libide libidetcl vmake jstools" + +if (echo $* | grep keep\-ide > /dev/null); then + keep_these_too="${keep_these_too} ${ide_files}" + test -n "$verbose" && echo Keeping ${ide_files} +else + lose_these_too="${lose_these_too} ${ide_files}" +fi + +flexlm_files="flexlm" + +if (echo $* | grep keep\-cygnus > /dev/null); then + keep_these_too="${keep_these_too} ${flexlm_files}" + test -n "$verbose" && echo Keeping ${flexlm_files} +else + lose_these_too="${lose_these_too} ${flexlm_files}" +fi + +# CGEN files: +# It is not yet clear if the cgen package will be shipped with the +# simulators. +cgen_files="cgen" + +if (echo $* | grep keep\-cgen > /dev/null); then + keep_these_too="${keep_these_too} ${cgen_files}" +else + lose_these_too="${lose_these_too} ${cgen_files}" +fi + +# Java stuff +java_files="boehm-gc libjava" -if ( echo $* | grep keep\-mpw > /dev/null) ; then - keep_these_too="${keep_these_too} ${mpw_files}" +if (echo $* | grep keep\-java > /dev/null); then + keep_these_too="${keep_these_too} ${java_files}" else - lose_these_too="${lose_these_too} ${mpw_files}" + lose_these_too="${lose_these_too} ${java_files}" fi # This top-level directory is special. We often check out only subsets # of this directory, and complaining about directories or files we didn't # check out just gets obnoxious. -list="${keep_these_too}" +list="`(for i in ${keep_these_too}; do echo $i ; done) | sort -u`" keep_these_too= for file in $list ; do @@ -52,7 +159,7 @@ for file in $list ; do fi done -list="${lose_these_too}" +list="`(for i in ${lose_these_too}; do echo $i ; done) | sort -u` " lose_these_too= for file in $list ; do @@ -70,25 +177,28 @@ done Things-to-keep: COPYING -COPYING.LIB ChangeLog Makefile.in README -config config.guess config.sub configure configure.in -etc Things-to-lose: +# Not sure we want to include mkdep in releases yet. +mkdep + # The lines between the "Do-last:" line and the end of the file # are executed as a /bin/sh shell script after everything else is # done. Do-last: +# Don't try to clean directories here, as the 'mv' command will fail. +# Also, grep fails on NFS mounted directories. + if ( echo $* | egrep verbose > /dev/null ) ; then verbose=true else @@ -110,8 +220,6 @@ if [ -n "${verbose}" ] ; then echo Thawing away the \"chill\"... fi -# Don't try to clean directories here, as the 'mv' command will fail. -# Also, grep fails on NFS mounted directories. if ( echo $* | grep keep\-chill > /dev/null ) ; then for i in * ; do if test ! -d $i && (grep sanitize-chill $i > /dev/null) ; then @@ -140,27 +248,27 @@ else fi if [ -n "${verbose}" ] ; then - echo Removing traces of \"mpw\"... + echo Processing \"d30v\"... fi -# Don't try to clean directories here, as the 'mv' command will fail. -# Also, grep fails on NFS mounted directories. -if ( echo $* | grep keep\-mpw > /dev/null ) ; then - for i in * ; do - if test ! -d $i && (grep sanitize-mpw $i > /dev/null) ; then +d30v_files="ChangeLog config.sub configure.in" + +if ( echo $* | grep keep\-d30v > /dev/null ) ; then + for i in $d30v_files ; do + if test ! -d $i && (grep sanitize-d30v $i > /dev/null) ; then if [ -n "${verbose}" ] ; then - echo Keeping mpw stuff in $i + echo Keeping d30v stuff in $i fi fi done else for i in * ; do - if test ! -d $i && (grep sanitize-mpw $i > /dev/null) ; then + if test ! -d $i && (grep sanitize-d30v $i > /dev/null) ; then if [ -n "${verbose}" ] ; then - echo Removing traces of \"mpw\" from $i... + echo Removing traces of \"d30v\" from $i... fi cp $i new - sed '/start\-sanitize\-mpw/,/end-\sanitize\-mpw/d' < $i > new + sed '/start\-sanitize\-d30v/,/end-\sanitize\-d30v/d' < $i > new if [ -n "${safe}" -a ! -f .Recover/$i ] ; then if [ -n "${verbose}" ] ; then echo Caching $i in .Recover... @@ -173,27 +281,279 @@ else fi if [ -n "${verbose}" ] ; then - echo Processing \"arc\"... + echo Processing \"v850\"... fi -# Don't try to clean directories here, as the 'mv' command will fail. -# Also, grep fails on NFS mounted directories. -if ( echo $* | grep keep\-arc > /dev/null ) ; then +v850_files="ChangeLog config.sub configure.in" + +if ( echo $* | grep keep\-v850e > /dev/null ) ; then + for i in $v850_files ; do + if test ! -d $i && (grep sanitize-v850e $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping v850e stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-v850e $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"v850e\" from $i... + fi + cp $i new + sed '/start\-sanitize\-v850e/,/end-\sanitize\-v850e/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +r5900_files="ChangeLog config.sub configure.in" + +if ( echo $* | grep keep\-r5900 > /dev/null ) ; then + for i in $r5900_files ; do + if test ! -d $i && (grep sanitize-r5900 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping r5900 stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-r5900 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"r5900\" from $i... + fi + cp $i new + sed '/start\-sanitize\-r5900/,/end-\sanitize\-r5900/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +vr4320_files="ChangeLog config.sub" + +if ( echo $* | grep keep\-vr4320 > /dev/null ) ; then + for i in $vr4320_files ; do + if test ! -d $i && (grep sanitize-vr4320 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping vr4320 stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-vr4320 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"vr4320\" from $i... + fi + cp $i new + sed '/start\-sanitize\-vr4320/,/end-\sanitize\-vr4320/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +tx19_files="ChangeLog config.sub" + +if ( echo $* | grep keep\-tx19 > /dev/null ) ; then + for i in $tx19_files ; do + if test ! -d $i && (grep sanitize-tx19 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping tx19 stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-tx19 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"tx19\" from $i... + fi + cp $i new + sed '/start\-sanitize\-tx19/,/end-\sanitize\-tx19/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +tx49_files="ChangeLog config.sub" + +if ( echo $* | grep keep\-tx49 > /dev/null ) ; then + for i in $tx49_files ; do + if test ! -d $i && (grep sanitize-tx49 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping tx49 stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-tx49 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"tx49\" from $i... + fi + cp $i new + sed '/start\-sanitize\-tx49/,/end-\sanitize\-tx49/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +tic80_files="ChangeLog config.sub configure.in" + +if ( echo $* | grep keep\-tic80 > /dev/null ) ; then + for i in $tic80_files ; do + if test ! -d $i && (grep sanitize-tic80 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping tic80 stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-tic80 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"tic80\" from $i... + fi + cp $i new + sed '/start\-sanitize\-tic80/,/end-\sanitize\-tic80/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +sky_files="ChangeLog config.sub configure.in" + +if ( echo $* | grep keep\-sky > /dev/null ) ; then + for i in $sky_files ; do + if test ! -d $i && (grep sanitize-sky $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping sky stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-sky $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"sky\" from $i... + fi + cp $i new + sed '/start\-sanitize\-sky/,/end-\sanitize\-sky/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +if ( echo $* | grep keep\-ide > /dev/null ) ; then + for i in * ; do + if test ! -d $i && (grep sanitize-ide $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping ide stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-ide $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"ide\" from $i... + fi + cp $i new + sed '/start\-sanitize\-ide/,/end-\sanitize\-ide/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +if ( echo $* | grep lose\-gdbtk > /dev/null ) ; then + if [ -n "${verbose}" ] ; then + echo Catering to RMS by removing traces of \"gdbtk\"... + fi for i in * ; do - if test ! -d $i && (grep sanitize-arc $i > /dev/null) ; then + if test ! -d $i && (grep sanitize-gdbtk $i > /dev/null) ; then if [ -n "${verbose}" ] ; then - echo Keeping arc stuff in $i + echo Removing traces of \"gdbtk\" from $i... fi + cp $i new + sed '/start\-sanitize\-gdbtk/,/end-\sanitize\-gdbtk/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i fi done + cp Makefile.in new + sed -e '/GDBTK_SUPPORT_DIRS=/d' -e 's/ $(GDBTK_SUPPORT_DIRS)//' < Makefile.in > new + if [ -n "${safe}" -a ! -f .Recover/Makefile.in ] ; then + if [ -n "${verbose}" ] ; then + echo Caching Makefile.in in .Recover... + fi + mv Makefile.in .Recover + fi + mv new Makefile.in else + if [ -n "${verbose}" ] ; then + echo Leaving \"gdbtk\" in the sources... + fi for i in * ; do - if test ! -d $i && (grep sanitize-arc $i > /dev/null) ; then + if test ! -d $i && (grep sanitize-gdbtk $i > /dev/null) ; then if [ -n "${verbose}" ] ; then - echo Removing traces of \"arc\" from $i... + echo Keeping \"gdbtk\" stuff in $i, but editing out sanitize lines... fi cp $i new - sed '/start\-sanitize\-arc/,/end-\sanitize\-arc/d' < $i > new + sed -e '/start\-sanitize\-gdbtk/d' -e '/end\-sanitize\-gdbtk/d' < $i > new if [ -n "${safe}" -a ! -f .Recover/$i ] ; then if [ -n "${verbose}" ] ; then echo Caching $i in .Recover... @@ -205,9 +565,204 @@ else done fi +if ( echo $* | grep lose\-mswin > /dev/null ) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"mswin\"... + fi + for i in * ; do + if test ! -d $i && (grep sanitize-mswin $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"mswin\" from $i... + fi + cp $i new + sed '/start\-sanitize\-mswin/,/end-\sanitize\-mswin/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +else + if [ -n "${verbose}" ] ; then + echo Leaving \"mswin\" in the sources... + fi + for i in * ; do + if test ! -d $i && (grep sanitize-mswin $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping \"mswin\" stuff in $i, but editing out sanitize lines... + fi + cp $i new + sed -e '/start\-sanitize\-mswin/d' -e '/end\-sanitize\-mswin/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +vr5400_files="ChangeLog config.sub" + +if ( echo $* | grep keep\-vr5400 > /dev/null ) ; then + for i in $vr5400_files ; do + if test ! -d $i && (grep sanitize-vr5400 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping vr5400 stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-vr5400 $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"vr5400\" from $i... + fi + cp $i new + sed '/start\-sanitize\-vr5400/,/end-\sanitize\-vr5400/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +m32rx_files="ChangeLog config-ml.in" +if ( echo $* | grep keep\-m32rx > /dev/null ) ; then + for i in $m32rx_files ; do + if test ! -d $i && (grep sanitize-m32rx $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping m32rx stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-m32rx $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"m32rx\" from $i... + fi + cp $i new + sed '/start\-sanitize\-m32rx/,/end-\sanitize\-m32rx/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +java_files="ChangeLog Makefile.in configure.in" +if ( echo $* | grep keep\-java > /dev/null ) ; then + for i in $java_files ; do + if test ! -d $i && (grep sanitize-java $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping java stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-java $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"java\" from $i... + fi + cp $i new + sed '/start\-sanitize\-java/,/end-\sanitize\-java/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +beos_files="ChangeLog config.guess configure.in" +if ( echo $* | grep keep\-beos > /dev/null ) ; then + for i in $beos_files ; do + if test ! -d $i && (grep sanitize-beos $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping beos stuff in $i + fi + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-beos $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"beos\" from $i... + fi + cp $i new + sed '/start\-sanitize\-beos/,/end-\sanitize\-beos/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + +kcygnus_files="ChangeLog configure configure.in Makefile.in" +if ( echo $* | grep keep\-cygnus > /dev/null ) ; then + for i in $kcygnus_files ; do + if test ! -d $i && (grep sanitize-cygnus $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Keeping Cygnus stuff in $i + fi + cp $i new + grep -v sanitize-cygnus $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +else + for i in * ; do + if test ! -d $i && (grep sanitize-cygnus $i > /dev/null) ; then + if [ -n "${verbose}" ] ; then + echo Removing traces of \"cygnus\" from $i... + fi + cp $i new + sed '/start\-sanitize\-cygnus/,/end-\sanitize\-cygnus/d' < $i > new + if [ -n "${safe}" -a ! -f .Recover/$i ] ; then + if [ -n "${verbose}" ] ; then + echo Caching $i in .Recover... + fi + mv $i .Recover + fi + mv new $i + fi + done +fi + + +# Do this check LAST! for i in * ; do if test ! -d $i && (grep sanitize $i > /dev/null) ; then echo '***' Some mentions of Sanitize are still left in $i! 1>&2 + exit 1 fi done