Unverified Commit 19a6f0e0 authored by Matthew Justin Bauer's avatar Matthew Justin Bauer Committed by GitHub
Browse files

Merge pull request #38715 from matthewbauer/shell_cmds-full

Build more commands from Apple's system_cmds
parents a378389a dd4fd74f
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
{ stdenv, fetchFromGitHub, lib }:

stdenv.mkDerivation rec {
  pname = "openbsm";
  name = "${pname}-${version}";
  version = "1.1";

  src = fetchFromGitHub {
    owner = pname;
    repo = pname;
    rev = "${lib.toUpper (builtins.replaceStrings ["." "-"] ["_" "_"] name)}";
    sha256 = "0b98359hd8mm585sh145ss828pg2y8vgz38lqrb7nypapiyqdnd1";
  };

  meta = {
    homepage = http://www.openbsm.org/;
    platforms = lib.platforms.unix;
    maintainers = with lib.maintainers; [ matthewbauer ];
  };
}
+18 −0
Original line number Diff line number Diff line
{ stdenv, buildPackages, hostPlatform, fetchurl, lib }:

stdenv.mkDerivation rec {
  name = "openpam-${version}";
  version = "20170430";

  src = fetchurl {
    url = "mirror://sourceforge/openpam/openpam/Resedacea/${name}.tar.gz";
    sha256 = "0pz8kf9mxj0k8yp8jgmhahddz58zv2b7gnyjwng75xgsx4i55xi2";
  };

  meta = {
    homepage = https://www.openpam.org;
    description = "An open source PAM library that focuses on simplicity, correctness, and cleanliness";
    platforms = lib.platforms.unix;
    maintainers = with lib.maintainers; [ matthewbauer ];
  };
}
+92 −25
Original line number Diff line number Diff line
{ stdenv, appleDerivation, xcbuild }:
{ stdenv, appleDerivation, xcbuild, lib, hostPlatform
, Librpcsvc, apple_sdk, pam, CF, openbsm }:

appleDerivation rec {
  # xcbuild fails with:
  # /nix/store/fc0rz62dh8vr648qi7hnqyik6zi5sqx8-xcbuild-wrapper/nix-support/setup-hook: line 1:  9083 Segmentation fault: 11  xcodebuild OTHER_CFLAGS="$NIX_CFLAGS_COMPILE" OTHER_CPLUSPLUSFLAGS="$NIX_CFLAGS_COMPILE" OTHER_LDFLAGS="$NIX_LDFLAGS" build
  # see issue facebook/xcbuild#188
  # buildInputs = [ xcbuild ];

  # # temporary install phase until xcodebuild has "install" support
  # installPhase = ''
  #   mkdir -p $out/bin/
  #   install system_cmds-*/Build/Products/Release/* $out/bin/

  #   for n in 1 5 8; do
  #     mkdir -p $out/share/man/man$n
  #     install */*.$n $out/share/man/man$n
  #   done
  # '';

  # For now we just build sysctl because that's all I need... Please open a
  # PR if you need any other utils before we fix the xcodebuild.
  buildPhase = "cc sysctl.tproj/sysctl.c -o sysctl";

  installPhase =
    ''
      mkdir -p $out/bin
      install sysctl $out/bin
      for n in 5 8; do
        mkdir -p $out/share/man/man$n
        install sysctl.tproj/*.$n $out/share/man/man$n
  buildInputs = [ Librpcsvc apple_sdk.frameworks.OpenDirectory pam CF
                  apple_sdk.frameworks.IOKit openbsm ];
  # NIX_CFLAGS_COMPILE = lib.optionalString hostPlatform.isi686 "-D__i386__"
  #                    + lib.optionalString hostPlatform.isx86_64 "-D__x86_64__"
  #                    + lib.optionalString hostPlatform.isArm "-D__arm__";
  NIX_CFLAGS_COMPILE = [ "-DDAEMON_UID=1"
                         "-DDAEMON_GID=1"
                         "-DDEFAULT_AT_QUEUE=\'a\'"
                         "-DDEFAULT_BATCH_QUEUE=\'b\'"
                         "-DPERM_PATH=\"/usr/lib/cron/\""
                         "-DOPEN_DIRECTORY"
                         "-DNO_DIRECT_RPC"
                         "-DAPPLE_GETCONF_UNDERSCORE"
                         "-DAPPLE_GETCONF_SPEC"
                         "-DUSE_PAM"
                         "-DUSE_BSM_AUDIT"
                         "-D_PW_NAME_LEN=MAXLOGNAME"
                         "-D_PW_YPTOKEN=\"__YP!\""
                         "-DAHZV1=64 "
                         "-DAU_SESSION_FLAG_HAS_TTY=0x4000"
                         "-DAU_SESSION_FLAG_HAS_AUTHENTICATED=0x4000"
                       ] ++ lib.optional (!stdenv.isLinux) " -D__FreeBSD__ ";

  patchPhase = ''
    substituteInPlace login.tproj/login.c \
      --replace bsm/audit_session.h bsm/audit.h
    substituteInPlace login.tproj/login_audit.c \
      --replace bsm/audit_session.h bsm/audit.h
  '';

  buildPhase = ''
    for dir in *.tproj; do
      name=$(basename $dir)
      name=''${name%.tproj}

      CFLAGS=""
      case $name in
           arch) CFLAGS="-framework CoreFoundation";;
           atrun) CFLAGS="-Iat.tproj";;
           chkpasswd)
             CFLAGS="-framework OpenDirectory -framework CoreFoundation -lpam";;
           getconf)
               for f in getconf.tproj/*.gperf; do
                   cfile=''${f%.gperf}.c
                   LC_ALL=C awk -f getconf.tproj/fake-gperf.awk $f > $cfile
               done
           ;;
           iostat) CFLAGS="-framework IOKit -framework CoreFoundation";;
           login) CFLAGS="-lbsm -lpam";;
           nvram) CFLAGS="-framework CoreFoundation -framework IOKit";;
           sadc) CFLAGS="-framework IOKit -framework CoreFoundation";;
           sar) CFLAGS="-Isadc.tproj";;
      esac

      echo "Building $name"

      case $name in

           # These are all broken currently.
           arch) continue;;
           chpass) continue;;
           dirhelper) continue;;
           dynamic_pager) continue;;
           fs_usage) continue;;
           latency) continue;;
           pagesize) continue;;
           passwd) continue;;
           reboot) continue;;
           sc_usage) continue;;
           shutdown) continue;;
           trace) continue;;

           *) cc $dir/*.c -I''${dir} $CFLAGS -o $name ;;
      esac
    done
  '';

  installPhase = ''
    for dir in *.tproj; do
      name=$(basename $dir)
      name=''${name%.tproj}
      [ -x $name ] && install -D $name $out/bin/$name
      for n in 1 2 3 4 5 6 7 8 9; do
        for f in $dir/*.$n; do
          install -D $f $out/share/man/man$n/$(basename $f)
        done
      done
    done
  '';

  meta = {
    platforms = stdenv.lib.platforms.darwin;
    maintainers = with stdenv.lib.maintainers; [ shlevy ];
    maintainers = with stdenv.lib.maintainers; [ shlevy matthewbauer ];
  };
}
+7 −1
Original line number Diff line number Diff line
@@ -13773,13 +13773,19 @@ with pkgs;
  gogoclient = callPackage ../os-specific/linux/gogoclient { };
  linux-pam = callPackage ../os-specific/linux/pam { };
  nss_ldap = callPackage ../os-specific/linux/nss_ldap { };
  odroid-xu3-bootloader = callPackage ../tools/misc/odroid-xu3-bootloader { };
  openpam = callPackage ../development/libraries/openpam { };
  openbsm = callPackage ../development/libraries/openbsm { };
  pagemon = callPackage ../os-specific/linux/pagemon { };
  pam = callPackage ../os-specific/linux/pam { };
  pam = if stdenv.isLinux then linux-pam else openpam;
  # pam_bioapi ( see http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader )