Proposed changes to the xorg archive

Kevin E Martin kem at freedesktop.org
Mon Nov 27 22:03:29 PST 2006


Since the X11R7.0 release, several people have asked for some changes to
how our archive is organized.  The main complaints were:

- Not everyone uses the branded packages from the various releases
  (i.e., the packages with the release version in the package name), and
  with the large number of packages, it is not easy to directly download
  or even find the unbranded packages.
- For the minor releases (e.g., X11R7.1, etc) and release candidates,
  only the updated files are present, so it is not easy to know exactly
  which packages are part of a release.
- For the minor releases, it is also not possible to tell if a package
  had been deprecated.
- Some packages were put into the wrong directory.
- The absolute symlinks made mirroring the archive difficult.

So, what I've been working on is a way to address these and other issues
with a minimal set of archive organizational changes, create a script
that would allow an archive maintainer to maintain the archive in a sane
state, and allow a release manager to more easily create releases.

Here what I'm proposing for the new organization of the archive:

1. For the individual releases, we would use the same directory
   structure we currently have in the archive:

   archive/individual/app     \
                     /data     \
                     /doc       \
                     /driver     \
                     /font        >  All unofficial and unbranded
                     /lib        /   packages go here
                     /proto     /
                     /util     /
                     /xserver /

2. For major releases (e.g., 7.0, 8.0, ...), we would have the following
   directory structure:

   archive/X11R7.0/src/app     \
                  /src/data     \
                  /src/doc       \
                  /src/driver     \
                  /src/font        >  All official branded files in
                  /src/lib        /   this major release
                  /src/proto     /
                  /src/util     /
                  /src/xserver /

                  /src/everything <--- symlinks to all branded files in
                                       this major release

                  /src/extras <--- holds the extra packages that are
                                   maintained outside of the xorg
                                   archive required to build release
                                   (e.g., Mesa, libdrm, ...)

   archive/X11R7.0/individual/app     \
                  /individual/data     \
                  /individual/doc       \
                  /individual/driver     \
                  /individual/font        >  All unbranded files in
                  /individual/lib        /   this major release (linked
                  /individual/proto     /    from the individual dir)
                  /individual/util     /
                  /individual/xserver /

                  /individual/everything <--- symlinks to all unbranded
                                              files in this major
                                              release

3. For minor releases (e.g., 7.1, 7.2, 7.3, ...), we would have the
   following directory structure:

   archive/X11R7.1/src/update/app     \
                  /src/update/data     \
                  /src/update/doc       \
                  /src/update/driver     \
                  /src/update/font        >  Official branded files that
                  /src/update/lib        /   have been updated and are
                  /src/update/proto     /    included in this minor
                  /src/update/util     /     release
                  /src/update/xserver /

                  /src/update/everything <--- symlinks to all branded
                                              files that have been updated
                                              and are included in this
                                              minor release

                  /src/update/extras <--- holds the updated extra packages
                                          that are new in this update and
                                          are maintained outside of the xorg
                                          archive required to build release
                                          (e.g., Mesa, libdrm, ...)

   archive/X11R7.1/src/app     \
                  /src/data     \
                  /src/doc       \
                  /src/driver     \
                  /src/font        >  All official branded files in
                  /src/lib        /   this minor release (updated files
                  /src/proto     /    are linked from update directory
                  /src/util     /     and older files that have not been
                  /src/xserver /      updated are linked from previous
                                      release)

                  /src/everything <--- symlinks to all branded files in
                                       this minor release

                  /src/extras <--- holds the extra packages that are
                                   maintained outside of the xorg
                                   archive required to build release
                                   (e.g., Mesa, libdrm, ...)

   archive/X11R7.1/individual/update/app     \
                  /individual/update/data     \
                  /individual/update/doc       \
                  /individual/update/driver     \
                  /individual/update/font        >  Updated unbranded files in
                  /individual/update/lib        /   this minor release (linked
                  /individual/update/proto     /    from the individual dir)
                  /individual/update/util     /
                  /individual/update/xserver /

                  /individual/update/everything <--- symlinks to the unbranded
                                                     files that have been
                                                     updated in this minor
                                                     release

   archive/X11R7.1/individual/app     \
                  /individual/data     \
                  /individual/doc       \
                  /individual/driver     \
                  /individual/font        >  All unbranded files in
                  /individual/lib        /   this minor release (both the
                  /individual/proto     /    updated files and older files
                  /individual/util     /     are symlinked from the
                  /individual/xserver /      individual dir)

                  /individual/everything <--- symlinks to all unbranded
                                              files in this minor release


4. For release candidates (e.g., 7.2-RC1, 7.2-RC2, ...), we would have
   the same directory structure as in a minor release's individual
   directory (e.g., archive/X11R7.1/individual/...).

Some of the benefits of this work are that:
- it is easy to find either the branded or unbranded packages in a
  particular release
- it is easy to find which packages have been updated in a particular
  minor release or a release candidate
- it is easy for the release manager to create a new release candidate
  since all they would have to do is to symlink the packages that have
  been updated to the development/X11Rn.m-RCq/update/* dirs and run the
  script
- the script that I'm working on can also show which packages have been
  updated after a particular release.

While I've tried to explain how the archive would be organized in words
above, it is usually easier to demonstrate it with an example, so I've
set up a test archive at:

  http://people.freedesktop.org/~kem/xorg-test-archive

which is how the 7.0 and newer dirs would look in the new archive.  The
only part that is not yet set up is the extras directories -- I'm still
working on the script to support them.

Also, since I have put quite a bit of time and thought into the archive
organization and feel strongly that it should be actively maintained, I
would like to volunteer to be the archive maintainer.

If you have any questions or concerns, please let me know.  If I don't
hear any loud complaints, I'll go ahead and update the official archive
in the next few days and take over maintenance of the archive.

Thanks,
Kevin



More information about the xorg mailing list