about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/make-startupitem/default.nix34
-rw-r--r--pkgs/build-support/vm/rpm/rpm-closure.pl5
2 files changed, 37 insertions, 2 deletions
diff --git a/pkgs/build-support/make-startupitem/default.nix b/pkgs/build-support/make-startupitem/default.nix
new file mode 100644
index 000000000000..07cdee600d45
--- /dev/null
+++ b/pkgs/build-support/make-startupitem/default.nix
@@ -0,0 +1,34 @@
+# given a pakcage with a $name.desktop file, makes a copy
+# as autostart item.
+
+{stdenv, lib}:
+{ name     # name of the desktop file (without .desktop)
+, package  # package where the desktop file resides in
+, after ? null
+, condition ? null
+, phase ? "2"
+}:
+
+# the builder requires that
+#   $package/share/applications/$name.desktop
+# exists as file.
+
+stdenv.mkDerivation {
+  name = "autostart-${name}";
+  priority = 5;
+
+  buildCommand = ''
+    ensureDir $out/share/autostart
+    target=${name}.desktop
+    cp ${package}/share/applications/${name}.desktop $target
+    chmod +rw $target
+    echo "X-KDE-autostart-phase=${phase}" >> $target
+    ${lib.optionalString (after != null) ''echo "${after}" >> $target''}
+    ${lib.optionalString (condition != null) ''echo "${condition}" >> $target''}
+    cp $target $out/share/autostart
+  '';
+
+  # this will automatically put 'package' in the environment when you
+  # put its startup item in there.
+  propagatedBuildInputs = [ package ];
+}
\ No newline at end of file
diff --git a/pkgs/build-support/vm/rpm/rpm-closure.pl b/pkgs/build-support/vm/rpm/rpm-closure.pl
index 2ef59dcbdef3..94da0a20adc1 100644
--- a/pkgs/build-support/vm/rpm/rpm-closure.pl
+++ b/pkgs/build-support/vm/rpm/rpm-closure.pl
@@ -76,8 +76,9 @@ for (my $i = 0; $i < scalar(@packagesFiles); $i++) {
             my $earlierPkg = $pkgs{$pkg->{name}};
             print STDERR "WARNING: duplicate occurrence of package $pkg->{name}\n";
             #   <version epoch="0" ver="1.28.0" rel="2.el6"/>
-            if (rpmvercmp($pkg->{'version'}->{ver}, $earlierPkg->{'version'}->{ver}) >= 0) {
-                print STDERR "WARNING: replaced package $pkg->{name} with newer one\n";
+            my $cmp = rpmvercmp($pkg->{'version'}->{ver}, $earlierPkg->{'version'}->{ver});
+            if ($cmp > 0 || ($cmp == 0 && rpmvercmp($pkg->{'version'}->{rel}, $earlierPkg->{'version'}->{rel})>0)) {
+                print STDERR "WARNING: replaced package $pkg->{name} (".$earlierPkg->{'version'}->{ver}." ".$earlierPkg->{'version'}->{rel}.") with newer one (".$pkg->{'version'}->{ver}." ".$pkg->{'version'}->{rel}.")\n";
                 $pkg->{urlPrefix} = $urlPrefixes[$i];
                 $pkgs{$pkg->{name}} = $pkg;
             }