Roland Mainz wrote:
> Peter Memishian wrote:
>   
>>  > > usr/src/lib/libast/mapfile-vers
>>  > >
>>  > >         Lines 29-618 - Please just include the results and don't embed
>>  > >         the script inside the comment.
>>  >
>>  > Fixed (I wish we could keep the comments to document how this stuff was
>>  > created... ;-( ).
>>
>> They can go in the CR used to integrate the feature.  Actually, they can
>> go pretty much anywhere *except* the source tree.
>>     
>
> There is still the unanswered/unsolved problem to track such things...
> any CR documentation is AFAIK not public and (more important) not
> maintained by a SCM (and even if there is such a SCM it would need to be
> kept in sync with the main OS/Net SCM, following all branches, splits,
> mergers etc.).
>   

A README in the source tree would be where I would put this kind of info.

>   
>>  > > usr/src/lib/libdll/common/Makefile
>>  > >
>>  > >         Is this really the Makefile you intend to putback?  It looks
>>  > >         like it came from the ksh93 source itself.
>>  >
>>  > Yes, see above (no fork() of AST codebase, please).
>>
>> Please, no alien Makefiles.  They've invaded our source tree in the past
>> (e.g., the old SNMP codebase), and they were an unbelievable headache.
>> The Makefiles in our tree need to be written for our build system.
>>     
>
> The Makefile isn't used, it's just there (well, until now it didn't bite
> anyone). The problem I see is that if we remove this file we create a
> "precedent" for more file stripping in our copy of the AST codebase.
> Where should we start - and where should we stop ? How do we keep track
> of removed files and updates to them (in theory the *.diff files could
> be used to track&&restore removed files but exactly this mechanism
> doesn't seem to be welcome in the OS/Net tree... ;-( ) ? We can't really
> affort trying to rip out source files "randomly" since this would break
> any (semi-)automated update process and doing such stuff manually would
> be time-consuming and error-prone.
>   

The problem with this approach is that having "stale" or "unused" files
in the tree can be quite confusing -- especially to anyone who is trying
to debug a problem with the build, etc.  (This is the same reason I hate
leaving large #if 0/#endif blocks in code -- grep doesn't understand the
C preprocessor.)

I would argue that if this process is fairly mechanical, then it can be
scripted.  Imagine a shell script called "import-upstream-sources" or
somesuch, that unpacks a tarball, removes files that are known not to be
used (such as the upstream Makefiles), applies any required patches, etc.

This approach is used by other projects such as debian, NetBSD, etc.  I
think it is well tested, and known to work.  Without creating undue
confusion.

It is true (and will always be) that importing a new revision will
always require some human intervention (conflict resolution in merge, as
well as testing and review of any new features/changes to make sure that
they are appropriate for Solaris -- e.g. imagine introduction of a new
shell syntax that breaks an existing set of scripts -- that would need
human intervention.)

My point is, we will never be able to fully automate integration of
updates, and I don't think we should have that as our aim.  I think we
should do the best we can to automate and document the changes we make,
and not be afraid to make the changes that are required to have the best
solution for Solaris.  (OTOH, gratuitous changes should not be made for
their own sake, but only if the change really does help the project
integrate better with Solaris.)

I would apply these guidelines to any program or project, btw, not just
ksh93.

-- 
Garrett D'Amore, Principal Software Engineer
Tadpole Computer / Computing Technologies Division,
General Dynamics C4 Systems
http://www.tadpolecomputer.com/
Phone: 951 325-2134  Fax: 951 325-2191


Reply via email to