Summary: | Xorg build scripts | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | Paulo César Pereira de Andrade <pcpa> | ||||||||||||||||||||||
Component: | Build/Modular | Assignee: | Xorg Project Team <xorg-team> | ||||||||||||||||||||||
Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> | ||||||||||||||||||||||
Severity: | enhancement | ||||||||||||||||||||||||
Priority: | low | ||||||||||||||||||||||||
Version: | git | ||||||||||||||||||||||||
Hardware: | Other | ||||||||||||||||||||||||
OS: | All | ||||||||||||||||||||||||
Whiteboard: | 2011BRB_Reviewed | ||||||||||||||||||||||||
i915 platform: | i915 features: | ||||||||||||||||||||||||
Attachments: |
|
Created attachment 14971 [details]
xorg-build.pl
This script can be used to update repository mirrors,
checkout from local mirror, check if upstream tarballs
are available, and of course, compile/install X org.
Created attachment 14972 [details]
xorg-deps.pl
This script is used after compiling with xorg-build.pl, and
using the -g option, so it will parse the .deps and .files files,
and print information about the order modules should be built.
Created attachment 14973 [details]
xorg-symbols.pl
This script can be used to check for missing symbols,
symbol clashes, what symbols are exported but not
used by any other module, etc.
It can also be used in an existing install, i.e.
usually what your distro has installed, by using
the proper options to override the install paths,
assuming xorg-build.pl was not used to install over
the "standard" path (usually not what you want).
Created attachment 14974 [details]
xorg-trace.pl
This is a wrapper used by xorg-build.pl, that uses
strace to track what binaries are executed and when
new files are created. And use this information to
generate the information about order modules should
be built.
Created attachment 15078 [details]
xorg-build.pl
Added latest version I am using, that fixes a few problems,
most notably changing "sudo-cmd args | args" to
"sudo-cmd /bin/sh -c \"args | args\""
Added updated list of buildable modules.
Minor changes that may be added are:
o executing a command in every directory checkout,
i.e. something like: xorg-build.pl -c "some-command; some-script"
o listing external dependencies and not starting a build if a
mandatory component, that should be provided by the "distro"
is not installed.
o better logging support, currently something like
"xorg-build.pl -d -g -n some-module build >& some-log-file.txt"
doesn't generate a very good output.
Created attachment 15656 [details] xorg-scripts.tar.bz2 Update version of build scripts. Adding all of them in a single tarball. This new version should be more useful to people that want to try to build from sources, as the new script xorg-ext-deps.pl should be run before attempting to build, and it will try to check for missing packages. Before running it (xorg-ext-deps.pl), at least perl5 and pkg-config should be installed. The script will run pkg-config to check for external packages, then check for some binaries, then some files (that may reside in different paths in different distros/os'es), and after that, check for some libraries. The original scripts I did were to build rpm packages, and the rpm spec files did take care of dependencies. But to build directly from sources there is no easy way to map the pkg-config package name to the external package required, but usually, when something is missing, just running something like: # foo-package-manager-install pkg-config-package-devel for a missing "pkg-config-package" should be enough, and if it claims a file is missing, usually there should also exist a command like: # foo-package-manager-file-package file-name that should print the package of "file-name" Note that the champion of external requirements is compiz, that pulls qt/kde, gtk/gnome and a lot of other devel packages. The file xorg-scripts.txt should give the basic step by step information. Once the dependencies are resolved, you can also choose to use jhbuild, see http://www.x.org/wiki/JhBuildInstructions Created attachment 15875 [details]
xorg-scripts.tar.bz2
Latest version.
Previous version had a bug when building a
command line for xorg-trace.pl, but if someone
tried to use it for a debug build should have
figured it out...
This new version also ensures pkgconfigdir
exists before any build, or "make install" would
silently fail to install the *.pc file, and that
could cause trouble if installing in a non standard
directory, as it would end up falling back to
read system installed files, and confuse the
script that checks order packages should be
built (xorg-deps.pl).
I believe there are still some problems with
installs that "silently" fail if the destdir
does not exist, instead of creating it. And to
make things worse, these are the first packages
to be built, i.e. libxtrans & co.
Created attachment 21842 [details]
xorg-scripts.tar.bz2
These scripts were for some time used to build test
rpm packages, but now reverted for "hardcore" xorg
packages build.
Trying to test/use xorg in a "destdir" other then
/usr is close to pointless, so the scripts now default
to use /usr as destdir, and the $sudo defaults to
"sudo".
The scripts are useful to build xorg git master
from sources (support for using branches was also
removed from the script, as it was significantly
simplified).
Created attachment 22666 [details]
xorg build and test scripts
Now it has an option to force rerun of autogen.sh or
autoreconf, and doesn't attempt to be smart and create
the xorg-build.ok file, instead, it always runs make.
Now there is a new script, called xorg-install.sh,
and for the moment, it just does a ugly hack in
xorg-build.pl that is basically:
if (-f "install-sh") {
x_system("ln -sf $install install-sh");
}
And it would have failed at startup if it cannot find
xorg-install.sh in the path (the $install variable).
xorg-install.sh is just automake-1.10 install-sh, but
modified to "default" to -C, and still the -C option
parsing modified to ignore attribute/owner/group
changes, that is, it only installs the file if it is
really different.
This way, the fact that files must be installed to
build the next package should not "always" make it
required to rebuild everything. Hopefully, making it
easier to detect failures elsewhere after a change
in a package.
The functionality described is achieved by build.sh and/or jhbuild which have been totally rewritten since then. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
Created attachment 14970 [details] xorg-scripts.txt Not really a bug report, but using this to attach some build scripts that may be useful. The script xorg-build.pl only works for git-master, but should not be too hard to update to build for specific versions. The major problem is the lack of tags for several components (I proposed to post such tags some time ago at xorg@, but got no response...), and several tags in a non standard format, but this can easily be fixed by using the 'commit' field, but it would be better to just use the 'version' field and checkout $name-$verson tag, or something like $name-$version-branch. In other words, an option to build from the latest stable/released version. The file xorg-scripts.txt should describe better what each script does.