[ECOS] ecosconfig, subversion and cygwin conflict

Fine, Paul Paul_Fine@dtccom.com
Fri Mar 31 21:11:00 GMT 2006



 

We have implemented a Subversion configuration control system for our
internal development, and we have put the eCos repository (a snapshot from
the day we decided to take a snapshot) into subversion.  I have no issues at
all when running ecosconfig under linux, but I do have a problem when
running under cygwin.

Pasted below is a snippet of the error message that I get :

paufin@LPTPauFin ~/test
$ ecosconfig new dbwrevD
ecos.db, package CYGPKG_HAL: warning
    Version subdirectory `.svn' does not have a CDL script `hal.cdl'.
ecos.db, package CYGPKG_INFRA: warning
    Version subdirectory `.svn' does not have a CDL script `infra.cdl'.
ecos.db, package CYGPKG_IO: warning
    Version subdirectory `.svn' does not have a CDL script `io.cdl'.
ecos.db, package CYGPKG_IO_SERIAL: warning
    Version subdirectory `.svn' does not have a CDL script `io_serial.cdl'.
ecos.db, package CYGPKG_IO_CAN: warning
    Version subdirectory `.svn' does not have a CDL script `io_can.cdl'.
ecos.db, package CYGPKG_DEVS_CAN_MCF52xx_FLEXCAN: warning
    Version subdirectory `.svn' does not have a CDL script
`can_mcf52xx.cdl'. ecos.db, package CYGPKG_IO_CAN_LOOP: warning
    Version subdirectory `.svn' does not have a CDL script `can_loop.cdl'.


The configuration runs to completion and the ecos.ecc that it generates is
fine, but I would like to get rid of the warning messages. Ecosconfig
obviously does not like the ".svn" directories that subversion puts in.

 

I tracked down in the host tools directory (libcdl, to be specific) where
the warning message is coming from, and it seemed obvious how to fix it.
Ecosconfig has code in two places which seems to take into account CVS (and
cvs) subdirectories, and ignores them.

 
Code snippet from database.cxx : 

                interp->locate_subdirs(pkgdir, subdirs);
                for (i = 0; i < subdirs.size(); i++) {
                    if (("CVS" == subdirs[i]) || ("cvs" == subdirs[i])) {
                        continue;
                    }

I modified the if statement to say : 

                interp->locate_subdirs(pkgdir, subdirs);
                for (i = 0; i < subdirs.size(); i++) {
                    if (("CVS" == subdirs[i]) || ("cvs" == subdirs[i]) ||
(".svn" == subdirs[i])) {
                        continue;
                    }


Code snippet from interp.cxx :

    static char locate_subdirs_script[] = "\
set pattern [file join \"$::cdl_locate_subdirs_path\" *]    \n\
set result {}                                               \n\
foreach entry [glob -nocomplain -- $pattern] {              \n\
    if ([file isdirectory $entry]) {                        \n\
        set entry [file tail $entry]                        \n\
        if {($entry != \"CVS\") && ($entry != \"cvs\")} {   \n\
            lappend result $entry                           \n\
        }                                                   \n\
    }                                                       \n\
}                                                           \n\
return $result                                              \n\
";

 
Which I changed the line with CVS to say 

        if {($entry != \"CVS\") && ($entry != \"cvs\") && ($entry !=
\".svn\")} {   \n\
 

Unfortunately, when I ran this version of ecosconfig, I got no output at
all.  No warnings. No errors.  No ecos.ecc.

Do you have any suggestions on how to fix the warnings, or why my fixes did
not work?


Paul Fine
Principal Digital Communications Software Engineer
DTC Communications, Inc.

 



-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list