summaryrefslogtreecommitdiffstats
path: root/Construct
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2001-12-13 23:00:21 (GMT)
committerSteven Knight <knight@baldmt.com>2001-12-13 23:00:21 (GMT)
commit6df6db482f39e2a36f69b48f2240f49b29ab762a (patch)
treea5f6cbf8109fc41ef24d578193feccf60ab7922e /Construct
parent7d284153621b986656aea2715c7fa73c5101d556 (diff)
downloadSCons-6df6db482f39e2a36f69b48f2240f49b29ab762a.zip
SCons-6df6db482f39e2a36f69b48f2240f49b29ab762a.tar.gz
SCons-6df6db482f39e2a36f69b48f2240f49b29ab762a.tar.bz2
Roll our own RPM package generation.
Diffstat (limited to 'Construct')
-rw-r--r--Construct52
1 files changed, 35 insertions, 17 deletions
diff --git a/Construct b/Construct
index 0b6bba4..4a80782 100644
--- a/Construct
+++ b/Construct
@@ -244,8 +244,11 @@ $scons = {
debian/scons.postinst
debian/scons.prerm) ],
- 'files' => [ qw(LICENSE.txt README.txt script/scons.bat
- setup.cfg setup.py) ],
+ 'files' => [ qw(LICENSE.txt README.txt os_spawnv_fix.diff
+ scons.1 script/scons.bat setup.cfg setup.py) ],
+ 'filemap' => {
+ 'scons.1' => '../doc/man/scons.1',
+ },
'subpkgs' => [ $python_scons, $scons_script ],
'subinst_dirs' => { "python-$project" => $lib_project,
@@ -353,26 +356,41 @@ for $p ($scons) {
);
my @install_targets = @build_targets;
- if ($rpm) {
- push(@setup_args, 'bdist_rpm');
-
- # XXX "$build/build/bdist.$platform/rpm/SOURCES/$pkg-$version.$archsuffix",
- # XXX "$build/build/bdist.$platform/rpm/SPECS/$pkg.spec",
- my @targets = (
- "$build/dist/$pkg-$version-1.src.rpm",
- "$build/dist/$pkg-$version-1.noarch.rpm",
- );
- push(@build_targets, @targets);
- push(@install_targets, @targets);
- };
-
# We can get away with calling setup.py using a directory path
# like this because we put a preamble in it that will chdir()
# to the directory in which setup.py exists.
- my $commands = qq(rm -rf $build/build $build/dist/* $build/dist/$project-$version
- python $build/setup.py @setup_args
+ my $commands = qq(python $build/setup.py @setup_args
python $build/setup.py bdist_wininst);
+ if ($rpm) {
+ chomp($cwd = `pwd`);
+ $topdir = "$cwd/$build/build/bdist.$platform/rpm";
+
+ $BUILDdir = "$topdir/BUILD/$pkg-$version";
+ $RPMSdir = "$topdir/RPMS/noarch";
+ $SOURCESdir = "$topdir/SOURCES";
+ $SPECSdir = "$topdir/SPECS";
+ $SRPMSdir = "$topdir/SRPMS";
+
+ $specfile = "$SPECSdir/$pkg-$version-1.spec";
+ $sourcefile = "$SOURCESdir/$pkg-$version.$archsuffix";
+ $rpm = "$RPMSdir/$pkg-$version-1.noarch.rpm";
+ $src_rpm = "$SRPMSdir/$pkg-$version-1.src.rpm";
+
+ $env->InstallAs($specfile, "rpm/$pkg.spec");
+ $env->InstallAs($sourcefile, $archive);
+
+ if (! -d $BUILDdir) {
+ $cmd = "mkdir -p $BUILDdir; ";
+ }
+ my @targets = ( $rpm, $src_rpm );
+ $env->Command(\@targets, $specfile,
+ "${cmd}rpm --define '_topdir $topdir' -ba %<");
+ $env->Depends(\@targets, $sourcefile);
+
+ push(@install_targets, @targets);
+ };
+
if ($dh_builddeb && $fakeroot) {
# Debian builds directly into build/dist, so we don't
# need to add the .debs to the install_targets.