modular -> monolithic

pcpa at mandriva.com.br pcpa at mandriva.com.br
Mon Jan 21 19:50:54 PST 2008


Quoting Donnie Berkholz <dberkholz at gentoo.org>:

> On 10:17 Tue 22 Jan     , Dave Airlie wrote:
>> I know personally i would never check all the drivers out from git as
>> it is now, and I think a lot of people are the same, it is a royal
>> pita to do this (typing 30 git commands or hacking build.sh).
>
> Matthieu Herrb wrote a script to do that; I'm surprised you haven't seen
> it. I use it. It takes care of the original checkout and later updates.
>
> http://wiki.x.org/wiki/ModularDevelopersGuide#head-a085b56a4b98f5418566ff5f575ca47805bd54c6

  I started using that script, later I made a modified one, basically a
cut&paste of the contents of http://gitweb.freedesktop.org/ and a script
inside a directory named anongit.freedesktop.org that would to the normal
for f in $list; do if [ -d $f ]; then ( cd $f; git pull ); else git clone ...;
fi done

  Currently I am working with some somewhat complex perl scripts, that do
weird things like running the build under strace and logging all header
files included and binaries executed, and generating dependency files.
  Most of this is for a rpm based distro, but I am trying to have it easily
adaptable to other builds, as well as build from source. For example, a
few lines of the dependencies of xedit (not on a "devel" Mandriva system):
--
/usr/include/libio.h:1195662557 # glibc-devel-2.6.1-4.1mdv2008.0
/usr/include/linux/limits.h:1186061963  # glibc-devel-2.6.1-4.1mdv2008.0
/usr/include/X11/keysymdef.h:1198443182 # x11-proto-devel-7.3-2mdv2008.0
/usr/include/bits/posix1_lim.h:1195662576       # 
glibc-devel-2.6.1-4.1mdv2008.0
/usr/include/X11/Xaw/Form.h:1198452432  # libxaw-devel-1.0.4-3mdv2008.0
/usr/include/X11/Xaw/Command.h:1198452432       # 
libxaw-devel-1.0.4-3mdv2008.0
/usr/include/bits/posix2_lim.h:1195662576       # 
glibc-devel-2.6.1-4.1mdv2008.0
/usr/include/bits/sigaction.h:1195662548        # 
glibc-devel-2.6.1-4.1mdv2008.0
/usr/include/bits/string3.h:1195662564  # glibc-devel-2.6.1-4.1mdv2008.0
/usr/include/features.h:1195662511      # glibc-devel-2.6.1-4.1mdv2008.0
/usr/include/bits/mathdef.h:1195662542  # glibc-devel-2.6.1-4.1mdv2008.0
/usr/include/fcntl.h:1195662579 # glibc-devel-2.6.1-4.1mdv2008.0
--

  I am also storing patches in branches of a git repository where I
frequently "git pull" from anongit.freedesktop.org, and using git-archive
and git-format-patch to generate tarballs and patches.
  I have almost everything automated, and the script that generates
dependency files also can check the mtime to know if some installed file is
newer, and/or just check the rpm package in the comment does not match what
is installed in the system. There is another script that parses dependency
data and just uses tsort to print the proper build order (fortunatelly there
isn't cyclic dependencies in X org modules), as well generate the
"BuildRequires" list.


  To tell you the truth, I would prefer the "convenience" of typing make,
and not having to install things as they are built, and have Makefiles
build things in the proper order and ensuring consistency, but now that
everything is modular, switching back may not be the best move...


BTW: building everything, including mesa, pixman, compiz, fonts, etc,
running build under strace, building rpm packages, and doing an weird
"autoreconf -ifs" for almost every package takes almost 5 hours on a
"low end" P4. But I remember building everything in XFree86, around
4 years ago in about 30 minutes (just make, no rpms or whatever)...

> Thanks,
> Donnie

Paulo






More information about the xorg mailing list