Skip to content

Adjust for FreeCAD v1 release#6

Closed
jaecktec wants to merge 6 commits into
linuxserver:masterfrom
jaecktec:chore/v1-release
Closed

Adjust for FreeCAD v1 release#6
jaecktec wants to merge 6 commits into
linuxserver:masterfrom
jaecktec:chore/v1-release

Conversation

@jaecktec

Copy link
Copy Markdown

linuxserver.io


  • I have read the contributing guideline and understand that I have made the correct modifications

Description:

Adjusted Dockerfile according to suggestions to support Freecad 1.0 with AppImage

Benefits of this PR and context:

Freecad 1.0

How Has This Been Tested?

I've build this on an M2 Macbook + X86 Linux machine and ran them

Source / References:

#4

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for opening this pull request! Be sure to follow the pull request template!

@LinuxServer-CI

Copy link
Copy Markdown
Collaborator

I am a bot, here are the test results for this PR:
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-294e4617-dev-8a297560bc4c93bd93d9466ed286a4ac7347922c-pr-6/index.html
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-294e4617-dev-8a297560bc4c93bd93d9466ed286a4ac7347922c-pr-6/shellcheck-result.xml

Tag Passed
amd64-0.20.2-pkg-294e4617-dev-8a297560bc4c93bd93d9466ed286a4ac7347922c-pr-6
arm64v8-0.20.2-pkg-294e4617-dev-8a297560bc4c93bd93d9466ed286a4ac7347922c-pr-6

@LinuxServer-CI

Copy link
Copy Markdown
Collaborator

I am a bot, here are the test results for this PR:
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-294e4617-dev-e4c72d1ab9cbf8d0e183d5f3b593d8c5c1028536-pr-6/index.html
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-294e4617-dev-e4c72d1ab9cbf8d0e183d5f3b593d8c5c1028536-pr-6/shellcheck-result.xml

Tag Passed
amd64-0.20.2-pkg-294e4617-dev-e4c72d1ab9cbf8d0e183d5f3b593d8c5c1028536-pr-6
arm64v8-0.20.2-pkg-294e4617-dev-e4c72d1ab9cbf8d0e183d5f3b593d8c5c1028536-pr-6

@LinuxServer-CI

Copy link
Copy Markdown
Collaborator

I am a bot, here are the test results for this PR:
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-294e4617-dev-724167f123d2d2131a06d829c387ddc64b30eacd-pr-6/index.html
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-294e4617-dev-724167f123d2d2131a06d829c387ddc64b30eacd-pr-6/shellcheck-result.xml

Tag Passed
amd64-0.20.2-pkg-294e4617-dev-724167f123d2d2131a06d829c387ddc64b30eacd-pr-6
arm64v8-0.20.2-pkg-294e4617-dev-724167f123d2d2131a06d829c387ddc64b30eacd-pr-6

@LinuxServer-CI

Copy link
Copy Markdown
Collaborator

I am a bot, here are the test results for this PR:
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-447045da-dev-8aa08eeaaf46460b0e7379f26be62a904318bd77-pr-6/index.html
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-447045da-dev-8aa08eeaaf46460b0e7379f26be62a904318bd77-pr-6/shellcheck-result.xml

Tag Passed
amd64-0.20.2-pkg-447045da-dev-8aa08eeaaf46460b0e7379f26be62a904318bd77-pr-6
arm64v8-0.20.2-pkg-447045da-dev-8aa08eeaaf46460b0e7379f26be62a904318bd77-pr-6

@baxerus baxerus mentioned this pull request Apr 4, 2025
1 task
@LinuxServer-CI

Copy link
Copy Markdown
Collaborator

I am a bot, here are the test results for this PR:
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-d3ceb5ed-dev-6b6dea80990329390f243fb52c32d295447e2cf7-pr-6/index.html
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-d3ceb5ed-dev-6b6dea80990329390f243fb52c32d295447e2cf7-pr-6/shellcheck-result.xml

Tag Passed
amd64-0.20.2-pkg-d3ceb5ed-dev-6b6dea80990329390f243fb52c32d295447e2cf7-pr-6
arm64v8-0.20.2-pkg-d3ceb5ed-dev-6b6dea80990329390f243fb52c32d295447e2cf7-pr-6

@tinuva

tinuva commented Apr 18, 2025

Copy link
Copy Markdown

Screenshot 2025-04-18 at 10 44 15 AM

Can confirm, building these changes works for me on x86-64 architecture.

@Roxedus Roxedus left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing the location we ingest a application from does also need a chance in jenkins-vars, as well as a changelog entry.

Comment thread Dockerfile Outdated
echo " install freecad from appimage " && \
freecad_version="1.0.0" && \
cd /tmp && \
curl -o /tmp/freecad.app -L https://github.com/FreeCAD/FreeCAD/releases/download/1.0.0/FreeCAD_1.0.0-conda-Linux-x86_64-py311.AppImage && \

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are not going to accept a hard coded version number.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

replaced with environment variable

@tinuva

tinuva commented Apr 30, 2025

Copy link
Copy Markdown

Question, maybe suggestion, but would using the "continous" version be accepted?

Instead of using:

https://github.com/FreeCAD/FreeCAD/releases/download/1.0.0/FreeCAD_1.0.0-conda-Linux-x86_64-py311.AppImage

Use:

FREECAD_VERSION=$(curl -sX GET "https://api.github.com/repos/FreeCAD/FreeCAD/releases/latest" | awk '/tag_name/{print $4;exit}' FS='[""]'); 

curl -o /tmp/freecad.app -L "https://github.com/FreeCAD/FreeCAD/releases/download/${FREECAD_VERSION}/FreeCAD_$(echo ${FREECAD_VERSION} | sed 's/\b\(.\)/\u\1/g')-conda-Linux-x86_64-py311.AppImage" 

Though perhaps, the cleanest way is to use jq if available during docker image creation:

FREECAD_URL=$(curl -sX GET "https://api.github.com/repos/FreeCAD/FreeCAD/releases/latest" | jq '.assets[] | select(.name | contains("Linux") and contains("x86_64")) | select(.name | contains("SHA256") | not) | .browser_download_url');

curl -o /tmp/freecad.app -L FREECAD_URL

@LinuxServer-CI

Copy link
Copy Markdown
Collaborator

I am a bot, here are the test results for this PR:
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-f8b6d483-dev-3f998633f17a1048d6fce528cfee59d6327e87c2-pr-6/index.html
https://ci-tests.linuxserver.io/lspipepr/freecad/0.20.2-pkg-f8b6d483-dev-3f998633f17a1048d6fce528cfee59d6327e87c2-pr-6/shellcheck-result.xml

Tag Passed
amd64-0.20.2-pkg-f8b6d483-dev-3f998633f17a1048d6fce528cfee59d6327e87c2-pr-6
arm64v8-0.20.2-pkg-f8b6d483-dev-3f998633f17a1048d6fce528cfee59d6327e87c2-pr-6

@AceDenghar

Copy link
Copy Markdown

Hi,

Thanks for your efforts.

Any chance to be available in the official docker image ?

Still stucked in 0.20, and I have some projects started in 1.0...

Thanks for all

Ps : sorry for my English

@jaecktec

jaecktec commented May 20, 2025

Copy link
Copy Markdown
Author

Though perhaps, the cleanest way is to use jq if available during docker image creation:

While in genereal I like the idea, I'd prefer to have a idemporent behaviour.
Something like this would probably be better off on the pipeline side of things :)

@jaecktec

Copy link
Copy Markdown
Author

Where do I adjust the environment variable in Jenkins?

@jaecktec jaecktec requested a review from Roxedus May 26, 2025 11:30
@LinuxServer-CI LinuxServer-CI moved this from PRs to PRs Ready For Team Review in Issue & PR Tracker May 26, 2025
@Roxedus

Roxedus commented May 26, 2025

Copy link
Copy Markdown
Member

you dont

@stefgia

stefgia commented May 27, 2025

Copy link
Copy Markdown

The merge build is failing because FREECAD_VERSION is set as "0.20.2" and there is no app image at the corresponding gitub address https://github.com/FreeCAD/FreeCAD/releases/download/${FREECAD_VERSION}/FreeCAD_${FREECAD_VERSION}-conda-Linux-x86_64-py311.AppImage

I looked around the repository to see where this env var is set, but I couldn't find anything, except usages of it, which I guess means that the version is set through jenkins somehow and not through the files. So I guess unless the version env var is bumped this can't work.

Also since we will now be using the appimage, maybe we should delete the following packages from the package-versions.txt ?

freecad, 0.20.2+dfsg1-4, deb freecad-common, 0.20.2+dfsg1-4, deb freecad-python3, 0.20.2+dfsg1-4, deb

@thespad

thespad commented May 27, 2025

Copy link
Copy Markdown
Member

There isn't anything you can do as a 3rd party to get Jenkins to build using your version logic, because we specifically prevent it for security reasons.

This https://github.com/linuxserver/docker-freecad/blob/master/jenkins-vars.yml#L5-L6 needs changing, probably to something like https://github.com/linuxserver/docker-webcord/blob/master/jenkins-vars.yml#L5-L13 as this uses the GH release and the Dockerfiles themselves need something like https://github.com/linuxserver/docker-webcord/blob/master/Dockerfile#L19-L23 to fetch the latest version for scenarios where it's not passed into the build process.

Finally the readme-vars will need a new changelog entry to document the change of install process.

package_versions.txt is an output not an input so does not need to be touched.

@tinuva

tinuva commented May 27, 2025

Copy link
Copy Markdown

The merge build is failing because FREECAD_VERSION is set as "0.20.2" and there is no app image at the corresponding gitub address https://github.com/FreeCAD/FreeCAD/releases/download/${FREECAD_VERSION}/FreeCAD_${FREECAD_VERSION}-conda-Linux-x86_64-py311.AppImage

I looked around the repository to see where this env var is set, but I couldn't find anything, except usages of it, which I guess means that the version is set through jenkins somehow and not through the files. So I guess unless the version env var is bumped this can't work.

Also since we will now be using the appimage, maybe we should delete the following packages from the package-versions.txt ?

freecad, 0.20.2+dfsg1-4, deb freecad-common, 0.20.2+dfsg1-4, deb freecad-python3, 0.20.2+dfsg1-4, deb

If you look at pr #7 then you will see. That was my attempt at a better approach to switch yogithub.

Jenkins currently uses a apt command to see existing version available in the repository of the Linux distribution.

I that pr I attempted to switch jenkins to use a github api lookup to get the latest version.

I asked on discourse why the jenkins build fail for my pr. @Roxedus

@tinuva

tinuva commented May 27, 2025

Copy link
Copy Markdown

The merge build is failing because FREECAD_VERSION is set as "0.20.2" and there is no app image at the corresponding gitub address https://github.com/FreeCAD/FreeCAD/releases/download/${FREECAD_VERSION}/FreeCAD_${FREECAD_VERSION}-conda-Linux-x86_64-py311.AppImage

I looked around the repository to see where this env var is set, but I couldn't find anything, except usages of it, which I guess means that the version is set through jenkins somehow and not through the files. So I guess unless the version env var is bumped this can't work.

Also since we will now be using the appimage, maybe we should delete the following packages from the package-versions.txt ?

freecad, 0.20.2+dfsg1-4, deb freecad-common, 0.20.2+dfsg1-4, deb freecad-python3, 0.20.2+dfsg1-4, deb

Have a look at pr #7 which is my attemot to switch to github releases.

Currently jenkins is configured to look up latest version from the apt repo.

I tried to switch to the github api for relates version lookup, but jenkins still run the old config files from the existing repo before the pr, even for pr builds. This is what @Roxedus explained to me discourse.

I am however in hospital so can't take up that conversation further.

But somehow, a pr will have to be accepted to get an updated jenkins config into the main branch.

@LinuxServer-CI

Copy link
Copy Markdown
Collaborator

This pull request has been automatically marked as stale because it has not had recent activity. This might be due to missing feedback from OP. It will be closed if no further activity occurs. Thank you for your contributions.

@jaecktec

Copy link
Copy Markdown
Author

Not sure what I need to do to get this merged...

@thelamer

thelamer commented Jul 2, 2025

Copy link
Copy Markdown
Member

I apologize I did not realize this image was out of maintenance.
I had this on a list for rebasing with groups of images that might heavily use DRI3 as the rebase drops that support (Intel and AMD opengl).

But after looking at this and #7 I will prioritize this tomorrow and update this PR with a test image you can put through it's paces does that sound ok?

We have a bunch of internal process stuff you need to do to modify ingestion, most of the participation we get is adaptive not restructuring.

@thelamer

thelamer commented Jul 2, 2025

Copy link
Copy Markdown
Member

@jaecktec @tinuva please test this image out

ghcr.io/linuxserver/lsiodev-freecad:1.0.1-selkies

min run command

docker run --rm -it -p 3001:3001 --shm-size=1gb ghcr.io/linuxserver/lsiodev-freecad:1.0.1-selkies bash

Land on https://host:3001

you can use nvidia with

docker run --rm -it -p 3001:3001 --runtime nvidia --gpus all --shm-size=1gb ghcr.io/linuxserver/lsiodev-freecad:1.0.1-selkies bash

@tinuva

tinuva commented Jul 3, 2025

Copy link
Copy Markdown

@jaecktec @tinuva please test this image out

ghcr.io/linuxserver/lsiodev-freecad:1.0.1-selkies

min run command

docker run --rm -it -p 3001:3001 --shm-size=1gb ghcr.io/linuxserver/lsiodev-freecad:1.0.1-selkies bash

Land on https://host:3001

you can use nvidia with

docker run --rm -it -p 3001:3001 --runtime nvidia --gpus all --shm-size=1gb ghcr.io/linuxserver/lsiodev-freecad:1.0.1-selkies bash

@thelamer

Tested the image by replacing the image line in my docker compose without the nvidia bits.

I think this image sums up what I found.

  • image works much nicer than the current base for the window environment. I like the improvement
  • freecad binary however seems missing
  • terminal does work

Screenshot 2025-07-03 at 6 02 44 AM

I then tried the following:

sudo ln -s /opt/freecad/AppRun /usr/bin/freecad

Then got this error:
Screenshot 2025-07-03 at 6 10 31 AM

Then

chmod 700 /config/.XDG

I think these 2 things made it work:
Screenshot 2025-07-03 at 6 19 54 AM

@thelamer

thelamer commented Jul 3, 2025

Copy link
Copy Markdown
Member

So you are seeing that because you are mounting in the old home directory, that is a good testing point, the menu and autostart file are the old launchers. From a clean context it just works.

I will add logic to overwrite those files if they are not updated.

I'll also make the symlink no harm in that.

@thelamer

thelamer commented Jul 3, 2025

Copy link
Copy Markdown
Member

ok @tinuva I updated the image to have a binary link, it is the cleanest solution you are correct there.

Please pull ghcr.io/linuxserver/lsiodev-freecad:1.0.1-selkies again and test.

If there are things missing here that users need now is the time.

The only thing I can say with certainty that will be fixed is the ugly cursor, that is going to be done in the base image though.

I just want to know about stuff like this plugin does not work or , like what users normally plug into this, if they need a taskbar for window management?
I am asking this because I do not use FreeCAD I just package up desktop apps so I need that unique point of view to know what is a pain point or what is needed.

@thelamer

thelamer commented Jul 3, 2025

Copy link
Copy Markdown
Member

Please chime in on #8 if you have feedback

@thelamer thelamer closed this Jul 3, 2025
@LinuxServer-CI LinuxServer-CI moved this from PRs Ready For Team Review to Done in Issue & PR Tracker Jul 3, 2025
@jaecktec jaecktec deleted the chore/v1-release branch July 3, 2025 20:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

8 participants