Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=5cd17d84cbe276c0419ee640446a8c0802cae21b

commit 5cd17d84cbe276c0419ee640446a8c0802cae21b
Author: DeX77 <[email protected]>
Date:   Mon Oct 21 21:20:11 2013 +0200

supermin-4.1.5-2-x86_64

* release bump
* include patch for pacman-g2 support
(pull request sent upstream)

diff --git a/source/apps-extra/supermin/FrugalBuild 
b/source/apps-extra/supermin/FrugalBuild
index 7c0a61c..8979976 100644
--- a/source/apps-extra/supermin/FrugalBuild
+++ b/source/apps-extra/supermin/FrugalBuild
@@ -1,17 +1,21 @@
-# Compiling Time: 0.01 SBU
+# Compiling Time: 0.64 SBU
# Maintainer: DeX77 <[email protected]>

+options+=('asneeded')
+
pkgname=supermin
pkgver=4.1.5
-pkgrel=1
+pkgrel=2
pkgdesc="supermin, tool for creating supermin appliances"
url="http://people.redhat.com/~rjones/supermin/";
depends=('ocaml-findlib>=1.4-2')
groups=('apps-extra')
archs=('i686' 'x86_64')
up2date="Flasttar http://libguestfs.org/download/supermin/";
-source=("http://libguestfs.org/download/$pkgname/$pkgname-$pkgver.tar.gz";)
-sha1sums=('81630c76bbc73542d3e4f3a4b1514efad2b3320d')
+source=("http://libguestfs.org/download/$pkgname/$pkgname-$pkgver.tar.gz"; \
+       pacman_g2_support.patch )
+sha1sums=('81630c76bbc73542d3e4f3a4b1514efad2b3320d' \
+          'ac211eb8864acc8e86016739059b496e85cb683d')


# optimization OK
diff --git a/source/apps-extra/supermin/pacman_g2_support.patch 
b/source/apps-extra/supermin/pacman_g2_support.patch
new file mode 100644
index 0000000..5ca5bef
--- /dev/null
+++ b/source/apps-extra/supermin/pacman_g2_support.patch
@@ -0,0 +1,240 @@
+From 2a7485cb701f98fc72f5a920b21a170e71964f8e Mon Sep 17 00:00:00 2001
+From: Daniel Exner <[email protected]>
+Date: Sun, 20 Oct 2013 17:33:41 +0200
+Subject: [PATCH] * supermin support for FrugalWare (pacman-g2)
+
+---
+ configure.ac              |  10 ++-
+ src/.depend               |   2 +
+ src/Makefile.am           |   2 +
+ src/config.ml.in          |   1 +
+ src/supermin_pacman_g2.ml | 153 ++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 166 insertions(+), 2 deletions(-)
+ create mode 100644 src/supermin_pacman_g2.ml
+
+diff --git a/configure.ac b/configure.ac
+index 2921212..0df4e08 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -101,8 +101,14 @@ else
+ fi
+ AC_SUBST([APT_CACHE_DEPENDS_RECURSE_BROKEN])
+
+-dnl For ArchLinux handler.
+-AC_CHECK_PROG(PACMAN,[pacman],[pacman],[no])
++dnl For FrugalWare handler.
++AC_CHECK_PROG(PACMAN_G2,[pacman-g2],[pacman-g2],[no])
++
++dnl if test "x$pacman_g2" = "xno"; then
++dnl   dnl For ArchLinux handler.
++dnl   AC_CHECK_PROG(PACMAN,[pacman],[pacman],[no])
++dnl fi
++
+
+ dnl Support for compressed input files, gzipped kernel modules.
+ AC_CHECK_HEADER([zlib.h],[
+diff --git a/src/.depend b/src/.depend
+index c1a9147..5a3f414 100644
+--- a/src/.depend
++++ b/src/.depend
+@@ -12,6 +12,8 @@ supermin_package_handlers.cmo: supermin_utils.cmi 
supermin_cmdline.cmi supermin_
+ supermin_package_handlers.cmx: supermin_utils.cmx supermin_cmdline.cmx 
supermin_package_handlers.cmi
+ supermin_pacman.cmo: supermin_utils.cmi supermin_package_handlers.cmi 
supermin_cmdline.cmi config.cmo
+ supermin_pacman.cmx: supermin_utils.cmx supermin_package_handlers.cmx 
supermin_cmdline.cmx config.cmx
++supermin_pacman_g2.cmo: supermin_utils.cmi supermin_package_handlers.cmi 
supermin_cmdline.cmi config.cmo
++supermin_pacman_g2.cmx: supermin_utils.cmx supermin_package_handlers.cmx 
supermin_cmdline.cmx config.cmx
+ supermin_urpmi_rpm.cmo: supermin_utils.cmi supermin_package_handlers.cmi 
supermin_cmdline.cmi config.cmo
+ supermin_urpmi_rpm.cmx: supermin_utils.cmx supermin_package_handlers.cmx 
supermin_cmdline.cmx config.cmx
+ supermin_utils.cmi:
+diff --git a/src/Makefile.am b/src/Makefile.am
+index f371cb9..6e4726e 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -28,6 +28,7 @@ EXTRA_DIST = \
+       supermin_package_handlers.mli \
+       supermin_package_handlers.ml \
+       supermin_pacman.ml \
++      supermin_pacman_g2.ml \
+       supermin_urpmi_rpm.ml \
+       supermin_utils.mli \
+       supermin_utils.ml \
+@@ -54,6 +55,7 @@ SOURCES += \
+       supermin_urpmi_rpm.ml \
+       supermin_debian.ml \
+       supermin_pacman.ml \
++      supermin_pacman_g2.ml \
+       supermin.ml
+
+ CLEANFILES = *~ *.cmi *.cmo *.cmx *.o supermin
+diff --git a/src/config.ml.in b/src/config.ml.in
+index a814f50..fe7cda3 100644
+--- a/src/config.ml.in
++++ b/src/config.ml.in
+@@ -29,4 +29,5 @@ let apt_cache = "@APT_CACHE@"
+ let dpkg = "@DPKG@"
+ let apt_cache_depends_recurse_broken = @APT_CACHE_DEPENDS_RECURSE_BROKEN@
+ let pacman = "@PACMAN@"
++let pacman_g2 = "@PACMAN_G2@"
+ let host_cpu = "@host_cpu@"
+diff --git a/src/supermin_pacman_g2.ml b/src/supermin_pacman_g2.ml
+new file mode 100644
+index 0000000..a7f6b97
+--- /dev/null
++++ b/src/supermin_pacman_g2.ml
+@@ -0,0 +1,153 @@
++(* supermin 4
++ * Copyright (C) 2009-2013 Red Hat Inc.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 
USA
++ *)
++
++(* FrugalWare support. *)
++
++open Unix
++open Printf
++
++open Supermin_package_handlers
++open Supermin_utils
++open Supermin_cmdline
++
++(* Create a temporary directory for use by all the functions in this file. *)
++let tmpdir = tmpdir ()
++
++let pacman_g2_detect () =
++  file_exists "/etc/frugalware-release" &&
++    Config.pacman_g2 <> "no"
++
++let pacman_g2_init () =
++  if use_installed then
++    eprintf "supermin: pacman_g2 driver assumes all packages are already 
installed when called with option --use-installed.\n%!"
++
++let pacman_g2_resolve_dependencies_and_download names mode =
++  debug "resolving deps";
++
++  debug "filtering deps";
++  (* Exclude packages matching [--exclude] regexps on the command line. *)
++  let pkgs =
++    List.filter (
++      fun name ->
++        not (List.exists (fun re -> Str.string_match re name 0) excludes)
++    ) names in
++
++  if mode = PkgNamesOnly then (
++    eprintf "supermin: pacman_g2: --names-only flag is not implemented\n";
++    exit 1
++  );
++
++
++
++
++  (* Download the packages. I could use wget `pacman -Sp`, but this
++   * narrows the pacman -Sy window
++   *)
++
++  List.iter (
++    fun pkg ->
++      let cmd =
++        sprintf "umask 0000; cd %s && mkdir -p var/cache/pacman-g2/pkg && 
fakeroot pacman-g2%s -Sy --noconfirm --root=$(pwd) %s"
++        (Filename.quote tmpdir)
++      (match packager_config with
++         | None -> ""
++         | Some filename -> " --config " ^ filename)
++        pkg in
++        run_command cmd;
++  ) pkgs;
++
++  let cmd =
++    sprintf "cd %s && fakeroot pacman-g2%s -Q --root=$(pwd)| cut -d ' ' -f 1"
++    (Filename.quote tmpdir)
++    (match packager_config with
++      | None -> ""
++      | Some filename -> " --config " ^ filename) in
++
++  let pkgs = run_command_get_lines cmd in
++
++  List.sort compare pkgs
++
++let pacman_g2_list_files pkg =
++  debug "unpacking %s ..." pkg;
++
++  (* We actually need to extract the file in order to get the
++   * information about modes etc.
++   *)
++  let pkgdir = tmpdir // pkg ^ ".d" in
++  mkdir pkgdir 0o755;
++  let cmd =
++    sprintf "ls -1 %s/var/cache/pacman-g2/pkg/%s-*.fpm"
++      tmpdir pkg in
++  let pkgfile = List.hd (run_command_get_lines cmd) in
++    let cmd = sprintf "umask 0000; fakeroot tar -xf %s -C %s"
++              (Filename.quote pkgfile) (Filename.quote pkgdir) in
++  run_command cmd;
++
++  let cmd = sprintf "cd %s && find ." pkgdir in
++  let lines = run_command_get_lines cmd in
++
++  let excludes = [Str.regexp "./.CHANGELOG";
++                  Str.regexp "./.FILELIST";
++                  Str.regexp "./.PKGINFO";
++
++                  Str.regexp "./.INSTALL"] in
++
++  let lines =
++    List.filter (
++      fun name ->
++        not (List.exists (fun re -> Str.string_match re name 0) excludes)
++    ) lines in
++
++  let files = List.map (
++    fun path ->
++      assert (path.[0] = '.');
++      (* No leading '.' *)
++      let path =
++      if path = "." then "/"
++      else String.sub path 1 (String.length path - 1) in
++
++      (* Find out what it is and get the canonical filename. *)
++      let statbuf = lstat (pkgdir // path) in
++      let is_dir = statbuf.st_kind = S_DIR in
++
++      (* No per-file metadata like in RPM, but we can synthesize it
++       * from the path.
++       *)
++      let config = statbuf.st_kind = S_REG && string_prefix "/etc/" path in
++
++      let mode = statbuf.st_perm in
++
++      (path, { ft_dir = is_dir; ft_config = config; ft_mode = mode;
++             ft_ghost = false; ft_size = statbuf.st_size })
++  ) lines in
++
++  files
++
++(* Easy because we already unpacked the archive above. *)
++let pacman_g2_get_file_from_package pkg file =
++  tmpdir // pkg ^ ".d" // file
++
++let () =
++  let ph = {
++    ph_detect = pacman_g2_detect;
++    ph_init = pacman_g2_init;
++    ph_resolve_dependencies_and_download = 
pacman_g2_resolve_dependencies_and_download;
++    ph_list_files = pacman_g2_list_files;
++    ph_get_file_from_package = pacman_g2_get_file_from_package;
++  } in
++  register_package_handler "pacman-g2" ph
+--
+1.8.4
+
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to