Hello Yaakov & others of note,

Currently each port is packaged for distro with each -src.tar.bz2 
rooted at
<package name in SVN>/., which creates the tar without any 
subdirectories.
When setup unpacks the file, however, it all gets dumped into 
/usr/src/, and
setup will overwrite files with the same name, which could happen with 
some
injudicious choices in ports that are variants of g-b-s installs from 
main cygwin
distro. That's the possible bug. The gripe is it also clutters the src 
dir so that it
can be difficult to be sure that a particular file belongs to a 
specific port once
you've got a 100 or so packages installed. What I'd like to see, though 
this
would involve restructuring the SVN repository, is each port packaged 
as rooted
at the top of the SVN tree.

Specifically, change

/cygwin-ports/ports/trunk/<subdirs>
to
/cygwin-ports/ports/trunk/ports-src/<subdirs>

and then change the packager so it creates the -src files with 
./cygports/
as the top level dir inside the tar. Yes, I know adding the extra
intermediate directory is a fairly expensive proposition, since each 
package for the
ftp site would need to be regenerated, but it's a single rev
and makes for better congruence between those input files and the output
installations.

Using the boxes app as an example, setup should unpack the file to

/usr
--/src
----/ports-src
------/apps
--------/boxes
----------/boxes-1.1.src.tar.gz, or just .tar, preferably.
----------/boxes-1.1-1.cygport
----------/boxes-1.1-1.cygwin.patch
----------/boxes-1.1-1.src.patch

One way to do this would be, generically:

cd /<actual release build dir>/
create <package>-<ver>.tar.bz2

mkdir tmp/ports-src/<subdirs>/<package>
# as an intermediate release directory, so unrelated SVN dirs aren't 
accessed by tar.

cp from SVN, curl or wget, or create, the package files into
tmp/ports-src/<subdirs>/<package>/

cd tmp
tar <switches> ./* | bzip2 --output-file ../<package>-<ver>-src.tar.bz2
cd ..
rmdir --force tmp

cp <trunk or branch>/<package SVN dir>/setup.hint, any other files
Upload <actual release build dir> to ftp repository

Since there wouldn't be multiple .cygport files in the directory 
unpacked, the use
instructions could change to

cd /usr/src/ports-src/<package dir>
cygport <command>
cygport <other command>
etc.; input file specification unnecessary

Alternatively, you could use /cygports/ as a replacement for 
cygwinports/releases/ so
the unpack matches the ftp directory, but the way suggested allows an 
SVN export
of ports/trunk, or ports/branches/branch, to mirror the installed 
layout. Also, the
SVN dirs mirror the setup.ini groups presented by setup, but without 
setup's
ambiguity of allowing a package to appear in multiple groups. Also, the 
cygports
package could default to, as extra root dirs,

usr/src/ports-bld/<subdirs>, (build directory)
usr/src/ports-pkg/<subdirs> (package staging, where <actual release 
build dir> would be),
usr/src/ports-svn/<subdirs> (SVN checkout or export dirs)
usr/src/ports-tst/<subdirs> (pristine install image for testing 
purposes)

and similar for when the .cygport file is processed that keeps each port
segregated until a user wants any binaries produced from package 
changes being tested
merged into the general /bin or /lib directories.

The reason just .tar is preferable, IMO, is that trying to bzip an 
already b- or
g-zipped file leads to minimal package size reduction for network 
transfer at
the expense of a significant increase in processing time for larger 
packages,
or a lot of smaller packages, to run b/gunzip multiple times. Those 
worried about
the /usr/src tree getting excessively large as a result can use the 
NTFS compress
facilities on src/ and subdirs to cut the overhead significantly.

That's all. Perhaps with cygports as the lead doing this it will 
provide an example
for other package maintainers to adopt a site/type/package uniform 
prefixing
convention in their -src packages, whether they use cygport or not.

Hope to see it,
Mark

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Cygwin-ports-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cygwin-ports-general

Reply via email to