Merge pull request #249771 from figsoda/oranda
This commit is contained in:
@@ -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; {
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
--- 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);
|
||||
@@ -56,6 +56,7 @@ stdenv.mkDerivation rec {
|
||||
license = licenses.mit;
|
||||
sourceProvenance = [ sourceTypes.binaryNativeCode ];
|
||||
maintainers = [ maintainers.adamcstephens ];
|
||||
mainProgram = "tailwindcss";
|
||||
platforms = platforms.darwin ++ platforms.linux;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user