Skip to content

Commit

Permalink
Add NSIS windows packaging
Browse files Browse the repository at this point in the history
- Add and readapt the NSIS scripts
  - All bundled executables are now passed as parameters within the
    makensis call
- Add a workflow that build the NSIS packages in the GH CI
- Update samples location in documentation
- Update readme and whatsnew files
  • Loading branch information
folmos-at-orange committed Nov 22, 2023
1 parent d66844c commit 074784d
Show file tree
Hide file tree
Showing 22 changed files with 1,794 additions and 334 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
name: Build development containers
name: Build Linux containers for packaging
on:
workflow_dispatch:
jobs:
build-container:
build-packaging-container:
runs-on: ubuntu-latest
strategy:
fail-fast: false
Expand All @@ -24,13 +24,11 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build the image and push it to the registry
id: docker-build
uses: docker/build-push-action@v2
with:
# relative path to the place where source code with Dockerfile is located
context: ./packaging/dockerfiles
file: ./packaging/dockerfiles/Dockerfile.${{ matrix.os }}
# Note: tags must be lower-case
file: ./packaging/dockerfiles/linux/Dockerfile.${{ matrix.os }}
tags: ghcr.io/khiopsml/khiops/khiopsdev-${{ matrix.os }}:latest
push: true
- name: Display the image digest
run: echo ${{ steps.docker_build.outputs.digest }}
run: echo ${{ steps.docker-build.outputs.digest }}
112 changes: 112 additions & 0 deletions .github/workflows/pack-nsis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
---
name: Build NSIS Windows installer
on:
workflow_dispatch:
pull_request:
paths:
- '**CMakeLists.txt'
- packaging/windows/nsis/*.nsh
- packaging/windows/nsis/*.nsi
push:
tags: [v*]
jobs:
build-nsis-installer:
outputs:
khiops-package-version: ${{ steps.get-version.outputs.khiops-package-version }}
name: Build NSIS Windows installer
runs-on: windows-latest
steps:
- name: Obtain checkout ref
shell: bash
run: |
# We take the "pull request head" ref (by default it is a merged one)
if [[ "${{ github.event_name }}" == "pull_request" ]]
then
CHECKOUT_REF="${{ github.event.pull_request.head.sha }}"
# Otherwise the default checkout action ref
else
CHECKOUT_REF="${{ github.ref_name }}"
fi
echo "CHECKOUT_REF=$CHECKOUT_REF" >> $GITHUB_ENV
echo "Checkout ref: $CHECKOUT_REF"
- name: Checkout sources
uses: actions/[email protected]
with:
ref: ${{ env.CHECKOUT_REF }}
- name: Put the package version on the environment and output
id: get-version
shell: bash
run: |
# Build the versions
KHIOPS_PACKAGE_VERSION="$(./scripts/khiops-package-version ${{ env.CHECKOUT_REF }})"
KHIOPS_PACKAGE_REDUCED_VERSION="$(echo $KHIOPS_PACKAGE_VERSION | cut -d'-' -f1)"
echo "KHIOPS_PACKAGE_VERSION=$KHIOPS_PACKAGE_VERSION" >> "$GITHUB_ENV"
echo "KHIOPS_PACKAGE_REDUCED_VERSION=$KHIOPS_PACKAGE_REDUCED_VERSION" >> "$GITHUB_ENV"
echo "khiops-package-version=$KHIOPS_PACKAGE_VERSION" >> "$GITHUB_OUTPUT"
- name: Download Windows install assets
uses: robinraju/[email protected]
with:
repository: khiopsml/khiops-win-install-assets
latest: true
- name: Extract Windows installer assets and load assets-info.env
shell: bash
run: |
assets_tar_gz=$(ls khiops-win-install-assets*.tar.gz)
tar -zxvf "$assets_tar_gz"
cat assets/assets-info.env >> "$GITHUB_ENV"
- name: Build Khiops binaries
uses: ./.github/actions/build-khiops
with:
preset-name: windows-msvc-release
targets: MODL MODL_Coclustering norm_jar khiops_jar
override-flags: -DTESTING=OFF -DBUILD_JARS=ON
- name: Build NSIS package
shell: pwsh
run: |-
cd ./packaging/windows/nsis
makensis `
/DKHIOPS_VERSION=${{ env.KHIOPS_PACKAGE_VERSION }} `
/DKHIOPS_REDUCED_VERSION=${{ env.KHIOPS_PACKAGE_REDUCED_VERSION }} `
/DKHIOPS_WINDOWS_BUILD_DIR=..\..\..\build\windows-msvc-release `
/DJRE_INSTALLER_PATH=..\..\..\assets\${{ env.JRE_FILENAME }} `
/DJRE_VERSION=${{ env.JRE_VERSION }} `
/DMSMPI_INSTALLER_PATH=..\..\..\assets\${{ env.MSMPI_FILENAME }} `
/DMSMPI_VERSION=${{ env.MSMPI_VERSION }} `
/DKHIOPS_VIZ_INSTALLER_PATH=..\..\..\assets\${{ env.KHIOPS_VIZ_FILENAME }} `
/DKHIOPS_COVIZ_INSTALLER_PATH=..\..\..\assets\${{ env.KHIOPS_COVIZ_FILENAME }} `
/DKHIOPS_SAMPLES_DIR=..\..\..\assets\samples `
/DKHIOPS_DOC_DIR=..\..\..\assets\doc `
khiops.nsi
- name: Upload installer as an artifact
uses: actions/[email protected]
with:
name: khiops-installer
path: ./packaging/windows/nsis/khiops-${{ env.KHIOPS_PACKAGE_VERSION }}-setup.exe
test-nsis-installer:
name: Test NSIS Windows installer
needs: build-nsis-installer
runs-on: windows-2019
steps:
- name: Download NSIS installer artifact
uses: actions/[email protected]
with:
name: khiops-installer
- name: Install Khiops
shell: pwsh
run: |
# Execute the installer
$ErrorActionPreference = 'Stop'
$ProgressPreference = 'SilentlyContinue'
Start-Process `
-FilePath .\khiops-${{ needs.build-nsis-installer.outputs.khiops-package-version }}-setup.exe `
-ArgumentList '/S' `
-Wait
# Add Khiops and MPI to the path
$Env:Path += ";${Env:ProgramFiles}\khiops\bin;${Env:ProgramFiles}\Microsoft MPI\Bin"
echo "PATH=${Env:PATH}" >> ${Env:GITHUB_ENV}
echo ${Env:GITHUB_ENV}
type ${Env:GITHUB_ENV}
- name: Checkout the khiops sources
uses: actions/checkout@v3
- name: Test the installation
uses: ./.github/actions/test-khiops-install
Binary file added packaging/common/images/khiops.ico
Binary file not shown.
Binary file added packaging/common/images/khiops_coclustering.ico
Binary file not shown.
143 changes: 63 additions & 80 deletions packaging/common/khiops/README.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Khiops 10.0
===========
(c) 2021 Orange Labs - All rights reserved.
www.khiops.com
(c) 2023 Orange Labs - All rights reserved.
https://khiops.org

Khiops is a fully automatic tool for mining large multi-table databases,
winner of several data mining challenges.
Expand Down Expand Up @@ -30,111 +30,94 @@ Main features

Khiops 10.0 - what's new
- New algorithm for Selective Naive Bayes predictor
. improved accuracy using a direct optimization of variable weights,
. improved interpretability and faster deployment time, with less variables selected,
. faster training time, using the new algorithm and exploiting parallelization,
- improved accuracy using a direct optimization of variable weights,
- improved interpretability and faster deployment time, with less variables selected,
- faster training time, using the new algorithm and exploiting parallelization,
- Improved random forests
. faster and more accurate preprocessing,
. biased random selection of variable to better deal with large numbers of variables,
- faster and more accurate preprocessing,
- biased random selection of variable to better deal with large numbers of variables,
- Management of sparse data
. fully automatic,
. potentially faster algorithms in case of many constructed variables,
- fully automatic,
- potentially faster algorithms in case of many constructed variables,
- New visualization tool
. available on any platform: windows, linux, mac, both in standalone and using a browser
- available on any platform: windows, linux, mac, both in standalone and using a browser
- Parallelization on clusters of machine
. available on Hadoop (Yarn, HDFS)
- available on Hadoop (Yarn, HDFS)
- New version of pykhiops
. more compliant with python PEP8 standard, using snake case
. distributed as a python package
. new features are available: see pykhiops release notes
- more compliant with python PEP8 standard, using snake case
- distributed as a python package
- new features are available: see pykhiops release notes

Upward compatibility with Khiops 9
- dictionaries of Khiops 9 are readable with Khiops 10
- visualization reports of Khiops 9 are usable with the former visualization tool
- python scripts using pykhiops 9 are running, with warnings for the deprecated features
- scenarios of Khiops 9 are compatible, with warnings for the deprecated features
- removed features in Khiops 10, that still work when used from former python scripts or scenarios:
. MAP Naive Bayes is removed
. Naive Bayes predictor is removed
. Preprocessing options MODLEqualWdth, MODLEqualFrequency and MODLBasic are removed
- MAP Naive Bayes is removed
- Naive Bayes predictor is removed
- Preprocessing options MODLEqualWidth, MODLEqualFrequency and MODLBasic are removed
- deprecated features, that still work but will be removed in next versions after Khiops 10:
. pykhiops 9 is replaced by pykhiops 10 (see migration guide within pykhiops release notes)


Technical prerequisite
----------------------
Configuration:
PC Windows (Seven and higher), 64 bits
Linux (supported distributions: see www.khiops.com), 64 bits
Windows software:
Java Runtime Environment V7 or higher, Adobe AIR runtime V30.0, MS MPI 9
Automatic detection and silent installation during the Khiops installation process on Windows
For specific installation (other than default installation), ask "get Java" or
"get Adobe AIR" on your web search engine to obtain the installer for each
prerequisite component, and proceed with a manual installation
For silent installation, run installer with /S option, and /D=installationDir to choose
a specific installation directory
- pykhiops 9 is replaced by pykhiops 10 (see migration guide within pykhiops release notes)


Technical prerequisites
-----------------------
Configuration:
- PC Windows (Seven and higher), 64 bits
- Linux (supported distributions: see https://khiops.org), 64 bits

Windows software:
- Java Runtime Environment V7 or higher
- Automatic detection and silent installation during the Khiops installation process on Windows
- For specific installation (other than default installation), search "get Java" on your search
engine to obtain the installer for each prerequisite component, and proceed with a manual
installation
- For a silent installation, run the installer with /S option, and /D=installationDir to choose a
specific installation directory.

Linux software:
Java Runtime Environment V7 or higher, mpich (>3.0), libstdc++6
Automatic detection and silent installation during the Khiops installation process

Software key, provided during the installation process.

Other configurations: contact us

Other configurations (ex. macOS): see https://khiops.org


Khiops files on Windows
-----------------------
Root directory:
readme.txt: this file
whatsnewV10.0.txt: detailed release notes
install.txt: installation process
KhiopsLicense.pdf: license file
Short-cuts to Khiops components

bin directory:
executable, batch files and libraries

doc directory:
reference guides and tutorial for Khiops components
start with KhiopsTutorial.pdf

python directory:
python library for Khiops (pykhiops) and samples of use of this library
see python/readme.txt
Install location (usually C:\Program Files\khiops):
- README.txt: this file
- WHATSNEW.txt: detailed release notes
- LICENSE.txt: license file
- Shortcuts to Khiops components
- bin sub-directory:
- executable, batch files and libraries
- doc sub-directory:
- reference guides and tutorial for Khiops components
- start with KhiopsTutorial.pdf

Other locations:
- %USERPROFILE%\khiops_data\lastrun directory (usually C:\Users\<USERNAME>\khiops_data\lastrun):
- contains scenario and log files for last run of Khiops and Khiops Coclustering

- %PUBLIC%\khiops_data\samples (usually C:\Users\Public\khiops_data\samples)
- directory tree with database samples (database files `.txt` and
dictionary files `.kdic`) see samples/README.txt

samples directory:
directory tree with database samples (database file (.txt) and dictionary file (.kdic))
see samples/readme.txt

key directory:
to store Khiops and Khiops Coclustering license files

lastrun directory:
contains scenario and log files for last run of Khiops and Khiops Coclustering



Khiops files on Linux
---------------------

/usr/bin :
executable, batch files
/usr/bin:
- executable, batch files

/usr/share/doc/khiops:
reference guides and tutorial for Khiops components
start with KhiopsTutorial.pdf
readme.txt: this file
whatsnewV10.0.txt: detailed release notes
samples directory:
directory tree with database samples (database file (.txt) and dictionary file (.kdic))
see samples/readme.txt

/opt/khiops/key/:
to store Khiops and Khiops Coclustering license files
- reference guides and tutorial for Khiops components
- start with KhiopsTutorial.pdf
- README.txt: this file
- WHATSNEW.txt: detailed release notes
- samples directory:
directory tree with database samples (database files `.txt` and dictionary files `.kdic`)
see samples/README.txt

/tmp/khiops/$USER:
contains scenario and log files for last run of Khiops and Khiops Coclustering
- contains scenario and log files for last run of Khiops and Khiops Coclustering
Loading

0 comments on commit 074784d

Please sign in to comment.