Unverified Commit 663f6dd6 authored by figsoda's avatar figsoda Committed by GitHub
Browse files

Merge pull request #249771 from figsoda/oranda

parents 755e833d 6208a372
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -5,20 +5,28 @@
, oniguruma
, stdenv
, darwin
, tailwindcss
}:

rustPlatform.buildRustPackage rec {
  pname = "oranda";
  version = "0.2.0";
  version = "0.3.0";

  src = fetchFromGitHub {
    owner = "axodotdev";
    repo = "oranda";
    rev = "v${version}";
    hash = "sha256-1pkAIz6Zh0ArIDmRSLHTnIgySWdxrDx0amTkdZhY6vY=";
    hash = "sha256-R9b2T/Em3s4hwcXa3l2i8A3w/aBu0Dz+izFcE4Q8J/4=";
  };

  cargoHash = "sha256-TKpPAzqwWBH2dlBNvU2kuqqOVu5WhSnSR3wW5FsW7yk=";
  cargoHash = "sha256-0eH7LZfO5/YgXP9Hom7pgALKFksSTAiczgT7rrNnqow=";

  patches = [
    # oranda-generate-css which is used in the build script tries to download
    # tailwindcss from the internet, so we have to patch it to use the
    # tailwindcss from nixpkgs
    ./tailwind.patch
  ];

  nativeBuildInputs = [
    pkg-config
@@ -33,10 +41,15 @@ rustPlatform.buildRustPackage rec {
  # requires internet access
  checkFlags = [
    "--skip=build"
    "--skip=integration"
  ];

  env = {
    RUSTONIG_SYSTEM_LIBONIG = true;
    TAILWINDCSS = lib.getExe tailwindcss;
  } // lib.optionalAttrs stdenv.isDarwin {
    # without this, tailwindcss fails with OpenSSL configuration error
    OPENSSL_CONF = "";
  };

  meta = with lib; {
+52 −0
Original line number Diff line number Diff line
--- a/generate-css/src/lib.rs
+++ b/generate-css/src/lib.rs
@@ -28,48 +28,7 @@ pub fn default_css_output_dir() -> Utf8PathBuf {
 }
 
 pub fn build_css(dist_dir: &Utf8Path) -> Result<()> {
-    // Fetch our cache dir
-    let project_dir = ProjectDirs::from("dev", "axo", "oranda")
-        .expect("Unable to create cache dir for downloading Tailwind!");
-    let cache_dir = project_dir.cache_dir();
-    // Figure out our target "double" (tailwind has weird naming around this)
-    let double = match (env::consts::OS, env::consts::ARCH) {
-        ("linux", "x86_64") => "linux-x64",
-        ("linux", "aarch64") => "linux-arm64",
-        ("linux", "arm") => "linux-armv7",
-        ("macos", "x86_64") => "macos-x64",
-        ("macos", "aarch64") => "macos-arm64",
-        ("windows", "x86_64") => "windows-x64.exe",
-        ("windows", "aarch64") => "windows-arm64.exe",
-        _ => "linux-x64",
-    };
-    let mut binary_path = Utf8PathBuf::from(cache_dir.display().to_string());
-    LocalAsset::create_dir_all(&binary_path)?;
-    binary_path.push(format!("tailwindcss-{double}"));
-    if !binary_path.exists() {
-        // Fetch the binary from GitHub if it doesn't exist
-        tracing::info!("Fetching Tailwind binary from GitHub release...");
-        let url = format!(
-			"https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-{double}"
-		);
-        let handle = tokio::runtime::Handle::current();
-        let response = handle.block_on(reqwest::get(url))?;
-        let bytes = handle.block_on(response.bytes())?;
-        let file = LocalAsset::new(&binary_path, Vec::from(bytes))?;
-        file.write(
-            binary_path
-                .parent()
-                .expect("Tailwind binary path has no parent!?"),
-        )?;
-
-        // On non-Windows platforms, we need to mark the file as executable
-        #[cfg(target_family = "unix")]
-        {
-            use std::os::unix::prelude::PermissionsExt;
-            let user_execute = std::fs::Permissions::from_mode(0o755);
-            std::fs::set_permissions(&binary_path, user_execute)?;
-        }
-    }
+    let binary_path = env!("TAILWINDCSS");
 
     tracing::info!("Building oranda CSS using Tailwind...");
     let css_src_path = manifest_dir().join(CSS_SRC_PATH);
+1 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ stdenv.mkDerivation rec {
    license = licenses.mit;
    sourceProvenance = [ sourceTypes.binaryNativeCode ];
    maintainers = [ maintainers.adamcstephens ];
    mainProgram = "tailwindcss";
    platforms = platforms.darwin ++ platforms.linux;
  };
}