Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ideamaker: init at 4.3.3 #309130

Merged
merged 2 commits into from
May 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions maintainers/maintainer-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3762,6 +3762,12 @@
githubId = 136485;
name = "Chad Jablonski";
};
cjshearer = {
email = "cjshearer@live.com";
github = "cjshearer";
githubId = 7173077;
name = "Cody Shearer";
};
ck3d = {
email = "ck3d@gmx.de";
github = "ck3d";
Expand Down
25 changes: 25 additions & 0 deletions pkgs/by-name/id/ideamaker/mimetypes.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="model/3mf">
<icon name="3MF"/>
<generic-icon name="3MF"/>
</mime-type>
<mime-type type="application/x-ideamaker">
<glob pattern="*.idea"/>
<comment xml:lang="en">IDEA project</comment>
<icon name="IDEA"/>
<generic-icon name="IDEA"/>
</mime-type>
<mime-type type="model/stl">
<icon name="STL"/>
<generic-icon name="STL"/>
</mime-type>
<mime-type type="model/obj">
<icon name="OBJ"/>
<generic-icon name="OBJ"/>
</mime-type>
<mime-type type="text/x.gcode">
<icon name="GCODE"/>
<generic-icon name="GCODE"/>
</mime-type>
</mime-info>
225 changes: 225 additions & 0 deletions pkgs/by-name/id/ideamaker/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
{
stdenv,
autoPatchelfHook,
cacert,
common-updater-scripts,
curl,
dpkg,
fetchurl,
fetchzip,
lib,
libcork,
libGLU,
libsForQt5,
makeDesktopItem,
openssl,
shared-mime-info,
writeShellApplication,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "ideamaker";
version = "4.3.3.6560";
src =
let
semver = lib.strings.concatStringsSep "." (
lib.lists.init (builtins.splitVersion finalAttrs.version)
);
in
fetchurl {
url = "https://download.raise3d.com/${finalAttrs.pname}/release/${semver}/ideaMaker_${finalAttrs.version}-ubuntu_amd64.deb";
sha256 = "sha256-aTVWCTgnVKD16uhJUVz0vR7KPGJqCVj0xoL53Qi3IKM=";
};

nativeBuildInputs = [
autoPatchelfHook
dpkg
shared-mime-info
libsForQt5.wrapQtAppsHook
];

buildInputs =
let
# we need curl 7.47.0, as the app segfaults on launch in 7.47.1 and beyond
# (tested with 7.47.1, 7.50.3, 7.62, 7.79.1, and 8.7.1)
curl_7_47_0 =
let
openssl_1_0_1u = openssl.overrideAttrs (previous: {
version = "1.0.1u";
src = fetchurl {
url = "https://www.openssl.org/source/openssl-1.0.1u.tar.gz";
sha256 = "0fb7y9pwbd76pgzd7xzqfrzibmc0vf03sl07f34z5dhm2b5b84j3";
};
patches = [ ];
withDocs = false;
outputs = lib.lists.remove "doc" previous.outputs;
meta.knownVulnerabilities = [
"OpenSSL 1.0.1 reached its end of life 2016-12-31, see https://endoflife.software/applications/security-libraries/openssl."
"CVE-2021-4044"
"CVE-2016-7056"
];
});
in
(curl.override {
gnutlsSupport = true;
gssSupport = false;
http2Support = false;
# while we use openssl, the configureFlag has since changed, so we manually set it below
opensslSupport = false;
pslSupport = false;
scpSupport = false;
}).overrideAttrs
(previous: {
version = "7.47.0";
src = fetchzip {
url = "https://curl.se/download/curl-7.47.0.tar.lzma";
sha256 = "sha256-XlZk1nJbSmiQp7jMSE2QRCY4C9w2us8BgosBSzlD4dE=";
};
configureFlags = previous.configureFlags ++ [
"--with-ca-bundle=${cacert}/etc/ssl/certs/ca-bundle.crt"
"--with-ssl=${lib.getLib openssl_1_0_1u}"
];
patches = [ ];
# curl https://curl.se/docs/vuln-7.74.0.json | jq -r '.[].id' | sed 's/^/"/;s/$/"/'
meta.knownVulnerabilities = [
"CURL-CVE-2024-2398"
"CURL-CVE-2023-46218"
"CURL-CVE-2023-38546"
"CURL-CVE-2023-38545"
"CURL-CVE-2023-28322"
"CURL-CVE-2023-28321"
"CURL-CVE-2023-28320"
"CURL-CVE-2023-27538"
"CURL-CVE-2023-27536"
"CURL-CVE-2023-27535"
"CURL-CVE-2023-27534"
"CURL-CVE-2023-27533"
"CURL-CVE-2023-23916"
"CURL-CVE-2022-43552"
"CURL-CVE-2022-32221"
"CURL-CVE-2022-35252"
"CURL-CVE-2022-32208"
"CURL-CVE-2022-32207"
"CURL-CVE-2022-32206"
"CURL-CVE-2022-32205"
"CURL-CVE-2022-27782"
"CURL-CVE-2022-27781"
"CURL-CVE-2022-27776"
"CURL-CVE-2022-27775"
"CURL-CVE-2022-27774"
"CURL-CVE-2022-22576"
"CURL-CVE-2021-22947"
"CURL-CVE-2021-22946"
"CURL-CVE-2021-22945"
"CURL-CVE-2021-22926"
"CURL-CVE-2021-22925"
"CURL-CVE-2021-22924"
"CURL-CVE-2021-22923"
"CURL-CVE-2021-22922"
"CURL-CVE-2021-22898"
"CURL-CVE-2021-22897"
"CURL-CVE-2021-22890"
"CURL-CVE-2021-22876"
];
});
in
[
(lib.getLib curl_7_47_0)
libcork
libGLU
libsForQt5.qtbase
libsForQt5.qtserialport
libsForQt5.quazip
];

unpackPhase = ''
runHook preUnpack
dpkg-deb -x $src .
runHook postUnpack
'';

installPhase = ''
runHook preInstall

install -D usr/lib/x86_64-linux-gnu/ideamaker/ideamaker \
$out/bin/${finalAttrs.pname}

patchelf --replace-needed libquazip.so.1 libquazip1-qt5.so \
$out/bin/${finalAttrs.pname}

mimetypeDir=$out/share/icons/hicolor/128x128/mimetypes
mkdir -p ''$mimetypeDir
for file in usr/share/ideamaker/icons/*.ico; do
mv $file ''$mimetypeDir/''$(basename ''${file%.ico}).png
done
install -D ${./mimetypes.xml} \
$out/share/mime/packages/${finalAttrs.pname}.xml

install -D usr/share/ideamaker/icons/ideamaker-icon.png \
$out/share/pixmaps/${finalAttrs.pname}.png

ln -s ${finalAttrs.desktopItem}/share/applications $out/share/

runHook postInstall
'';

desktopItem = makeDesktopItem {
name = finalAttrs.pname;
exec = finalAttrs.pname;
icon = finalAttrs.pname;
desktopName = "Ideamaker";
comment = "ideaMaker - www.raise3d.com";
categories = [
"Qt"
"Utility"
"3DGraphics"
"Viewer"
"Engineering"
];
genericName = finalAttrs.meta.description;
mimeTypes = [
"application/x-ideamaker"
"model/3mf"
"model/obj"
"model/stl"
"text/x.gcode"
];
noDisplay = false;
startupNotify = true;
terminal = false;
type = "Application";
};

passthru.updateScript = lib.getExe (writeShellApplication {
name = "ideamaker-update-script";
runtimeInputs = [
curl
common-updater-scripts
];
text = ''
set -eu -o pipefail

release_page=$(mktemp)
curl -s https://www.raise3d.com/download/ideamaker-all-versions/ > "$release_page"

latest_stable_version=$(
sed -nE '/Beta|Alpha/! s/.*Version ([0-9]+\.[0-9]+\.[0-9]+).*/\1/p' "$release_page" | \
head -n 1
)

latest_stable_build_number=$(
sed -nE "s/.*ideaMaker_$latest_stable_version\.([0-9]+).*/\1/p" "$release_page" | head -n 1
)

update-source-version ideamaker "$latest_stable_version.$latest_stable_build_number"
'';
});

meta = {
homepage = "https://www.raise3d.com/ideamaker/";
description = "Raise3D's 3D slicer software";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [ cjshearer ];
};
})