about summary refs log tree commit diff
path: root/nixpkgs/pkgs/by-name/fr
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-12-01 19:00:09 +0100
committerAlyssa Ross <hi@alyssa.is>2023-12-01 19:00:09 +0100
commit9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d (patch)
tree4368f9e4cb2d5b93a956c085337e45cb70f1e331 /nixpkgs/pkgs/by-name/fr
parenta9cbfb6941b47d6f50129e6e36927882392daed7 (diff)
parent2344fe1da14cb08b0c18743b207995f9b8597915 (diff)
downloadnixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.gz
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.bz2
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.lz
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.xz
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.zst
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.zip
Merge https://github.com/NixOS/nixpkgs
Diffstat (limited to 'nixpkgs/pkgs/by-name/fr')
-rw-r--r--nixpkgs/pkgs/by-name/fr/frankenphp/package.nix88
1 files changed, 88 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/fr/frankenphp/package.nix b/nixpkgs/pkgs/by-name/fr/frankenphp/package.nix
new file mode 100644
index 000000000000..ffe66b30279a
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/fr/frankenphp/package.nix
@@ -0,0 +1,88 @@
+{ lib
+, stdenv
+, buildGoModule
+, fetchFromGitHub
+, php
+, testers
+, frankenphp
+, runCommand
+, writeText
+}:
+
+let
+  phpEmbedWithZts = php.override {
+    embedSupport = true;
+    ztsSupport = true;
+  };
+  phpUnwrapped = phpEmbedWithZts.unwrapped;
+  phpConfig = "${phpUnwrapped.dev}/bin/php-config";
+  pieBuild = stdenv.hostPlatform.isMusl;
+in buildGoModule rec {
+  pname = "frankenphp";
+  version = "1.0.0-rc.3";
+
+  src = fetchFromGitHub {
+    owner = "dunglas";
+    repo = "frankenphp";
+    rev = "v${version}";
+    hash = "sha256-Al0gCxTb6s41ugX9J8N8lshop9kP3RPGCzlq5etk1RY=";
+  };
+
+  sourceRoot = "source/caddy";
+
+  # frankenphp requires C code that would be removed with `go mod tidy`
+  # https://github.com/golang/go/issues/26366
+  proxyVendor = true;
+  vendorHash = "sha256-Lgj/pFtSQIgjrycajJ1zNY3ytvArmuk0E3IjsAzsNdM=";
+
+  buildInputs = [ phpUnwrapped ] ++ phpUnwrapped.buildInputs;
+
+  subPackages = [ "frankenphp" ];
+
+  tags = [ "cgo" "netgo" "ousergo" "static_build" ];
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${version} PHP ${phpUnwrapped.version} Caddy'"
+    # pie mode is only available with pkgsMusl, it also automaticaly add -buildmode=pie to $GOFLAGS
+  ]  ++ (lib.optional pieBuild [ "-static-pie" ]);
+
+  preBuild = ''
+    export CGO_CFLAGS="$(${phpConfig} --includes)"
+    export CGO_LDFLAGS="-DFRANKENPHP_VERSION=${version} \
+      $(${phpConfig} --ldflags) \
+      -Wl,--start-group $(${phpConfig} --libs) -Wl,--end-group"
+  '';
+
+  doCheck = false;
+
+  passthru = {
+    php = phpEmbedWithZts;
+    tests = {
+      # TODO: real NixOS test with Symfony application
+      version = testers.testVersion {
+        inherit version;
+        package = frankenphp;
+        command = "frankenphp version";
+      };
+      phpinfo = runCommand "php-cli-phpinfo" {
+        phpScript = writeText "phpinfo.php" ''
+          <?php phpinfo();
+        '';
+      } ''
+        ${lib.getExe frankenphp} php-cli $phpScript > $out
+      '';
+    };
+  };
+
+  meta = with lib; {
+    changelog = "https://github.com/dunglas/frankenphp/releases/tag/v${version}";
+    description = "The modern PHP app server";
+    homepage = "https://github.com/dunglas/frankenphp";
+    license = licenses.mit;
+    mainProgram = "frankenphp";
+    maintainers = with maintainers; [ gaelreyrol ];
+    platforms = platforms.linux;
+  };
+}