From a585fef02ea1701b69832f6f64ea2b3772d04e74 Mon Sep 17 00:00:00 2001 From: UnlimitedCookies <49200216+UnlimitedCookies@users.noreply.github.com> Date: Sun, 22 Aug 2021 23:12:38 +0200 Subject: [PATCH] Cool Stuff --- .drone.yml | 14 +++++++++ LICENSE | 51 ++++++++++--------------------- Makefile | 31 +++++++++++++++++++ README.md | 29 +++++++++++++++++- control | 37 +++++++++++++++++++++++ install.ins | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ logo.png | Bin 0 -> 7283 bytes remove.ins | 31 +++++++++++++++++++ 8 files changed, 242 insertions(+), 36 deletions(-) create mode 100644 .drone.yml create mode 100644 Makefile create mode 100644 control create mode 100644 install.ins create mode 100644 logo.png create mode 100644 remove.ins diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..171feb4 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,14 @@ +pipeline: + build: + image: debian + commands: + - echo "HALLO WELT, KANNST DU MICH HÖREN" + when: + event: [push, tag] + + package: + image: debian + command: + - "zap" + when: + event: tag diff --git a/LICENSE b/LICENSE index 7689d97..01b2d9a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,39 +1,20 @@ -The SFL License Agreement +MIT License -This license agreement covers your use of the iMatix STANDARD FUNCTION LIBRARY (SFL), its source code, documentation, and executable files, hereinafter referred to as "the Product". +Copyright (c) 2021 Kevin Dorner -The Product is Copyright (c) 1991-2000 iMatix Corporation. You may use it and distribute it according to this following License Agreement. If you do not agree with these terms, please remove the Product from your system. By incorporating the Product in your work or distributing the Product to others you implicitly agree to these license terms. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: -Statement Of Copyright +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -The Product is, and remains, Copyright © 1991-2000 iMatix Corporation, with exception of specific copyrights as noted in the individual source files. - -Conditions Of Use - -You do not need to provide the source code for the Product as part of your product. However, you must do one of these things to comply with the Product License Agreement: - - 1. Provide the source code for Product modules that you use, or - 2. Make your product freely available according to a license similar to the GNU General Public License, or the Perl Artistic License, or - 3. Add this phrase to the documentation for your product: "This product uses parts of the iMatix SFL, Copyright © 1991-2000 iMatix Corporation ". - -Rights Of Usage - -You may freely and at no cost use the Product in any project, commercial, academic, military, or private, so long as you respect the License Agreement. The License Agreement does not affect any software except the Product. In particular, any application that uses the Product does not itself fall under the License Agreement. - -You may modify any part of the Product, including sources and documentation, except this License Agreement, which you may not modify. - -You must clearly indicate any modifications at the start of each source file. The user of any modified Product code must know that the source file is not original. - -At your discretion, you may rewrite or reuse any part of the Product so that your derived code is not obviously part of the Product. This derived code does not fall under the Product License Agreement directly, but you must include a credit at the start of each source file indicating the original authorship and source of the code, and a statement of copyright as follows:"Parts copyright (c) 1991-2000 iMatix Corporation." - -Rights Of Distribution - -You may freely distribute the Product, or any subset of the Product, by any means. The License, in the form of the file called "LICENSE.TXT" must accompany any such distribution. - -You may charge a fee for distributing the Product, for providing a warranty on the Product, for making modifications to the Product, or for any other service provided in relation to the Product. You are not required to ask our permission for any of these activities. - -At no time will iMatix associate itself with any distribution of the Product except that supplied from the Internet site http://www.imatix.com. - -Disclaimer Of Warranty - -The Product is provided as free software, in the hope that it will be useful. It is provided "as-is", without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the Product is with you. Should the Product prove defective, the full cost of repair, servicing, or correction lies with you. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bb3873c --- /dev/null +++ b/Makefile @@ -0,0 +1,31 @@ +#Config +UPSTREAM_VERSION = 3.9.2 +PKG_SUB_RELEASE = 1.0 +PKG_FULL_VERSION = ${UPSTREAM_VERSION}-${PKG_SUB_RELEASE} + +SOURCE = https://www.python.org/ftp/python/${UPSTREAM_VERSION}/python-${UPSTREAM_VERSION}-amd64.exe +CHECKSUM = efb20aa1b648a2baddd949c142d6eb06 +## Download Link and Checksums can be found on https://www.python.org/downloads/windows/ + +all: clean install + +install: setversion + @[ -d "./data/" ] || mkdir ./data/ + @echo "INFO: Downloading the Git for Windows executable..." + @wget -O ./data/python-${UPSTREAM_VERSION}-amd64.exe ${SOURCE} + @echo "${CHECKSUM} ./data/python-${UPSTREAM_VERSION}-amd64.exe" | md5sum -c && echo "SUCCESS: Checksums match" || { ec=$$?; echo "ERROR: Checksum mismatch" >&2; rm -rf ./data/ >&2; exit $$ec; } + @echo "SUCCESS: Installed Successfully" + +clean: + @echo "INFO: Cleaning ./data/" + @rm -rf ./data/ + @[ ! -d "./data/" ] && echo "SUCCESS: Cleaned" + +setversion: + @echo "INFO: Writing version ${PKG_FULL_VERSION} to control file" + @sed -i "s/^version: [0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$$/version: ${UPSTREAM_VERSION}/" ./control + @sed -i "s/^packageVersion: [0-9]\{1,3\}\.[0-9]\{1,3\}$$/packageVersion: ${PKG_SUB_RELEASE}/" ./control +package: + @echo "MEEP!" +.PHONY: all install clean setversion package + diff --git a/README.md b/README.md index 4d63a4e..d1c6730 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,29 @@ -# CI-Test +# mdg-python +A better Python for Windows OPSI package aimed to work with IServ +## Features +- Latest Python version +- Slim and simple package +- Automated Python package installation through pip + +## Prerequisites +This package only supports **Microsoft Windows 10 64bit** + +## Manual Installation +### Method 1: Git +0. Install git and make as root user +```sh +apt install git make +``` +1. Clone the repository +```sh +git clone --depth 1 https://gitea.mdg-hamburg.de/MDG-Packages/winst-mdg-python.git /srv/deploy/install/mdg-python/ +``` +2. Download the required binaries +```sh +cd /srv/deploy/install/mdg-python/ && make +``` +3. Run chkdeploy to make IServ aware of the new package +```sh +chkdeploy +``` \ No newline at end of file diff --git a/control b/control new file mode 100644 index 0000000..fb81a96 --- /dev/null +++ b/control @@ -0,0 +1,37 @@ +[Product] +type: localboot +id: mdg-python +name: MDG Python +description: Python für Microsoft Windows mit pip-Unterstützung +advice: Vereinfachtes Paket mit neuer Python-Version und funktionsfähiger pip-Unterstützung +version: 3.9.2 +packageVersion: 1.0 +setupScript: install.ins +uninstallScript: remove.ins + +[ProductProperty] +name: shortcut +type: bool +description: Startmenü Verknüpfungen erstellen +default: True + +[ProductProperty] +name: associatefiles +type: bool +description: Assoziere Python-Dateiendungen +helptext: Zu den Python-Dateiendungen gehören u. a. ".py", ".pyw", ".pyc". Doppelklick auf Python-Dateien im Windows-Explorer nutzt dann den Python-Launcher. +default: True + +[ProductProperty] +name: prependpath +type: bool +description: Python zum PATH hinzufügen +helptext: Fügt Python selbst und zugehörige Skripte zum systemweiten PATH hinzu. Dies erlaubt das direkte Verwenden von Python-Werkzeugen in der Kommandozeile. +default: True + +[ProductProperty] +name: pippackages +type: unicode +description: Installiere pip Pakete +helptext: Die Pakete werden mit jeder Installation des Programms installiert oder aktualisiert. Zum Hinzufügen von neuen Pakten kann einfach eine Neuinstallation vorgenommen werden. Die Pakete werden mit einem Leerzeichen getrennt und können auf https://pypi.org/ gefunden werden. Diese Pakete werden systemweit installiert. Durch Nutzer installierte Pakete werden im jeweiligen Appdata Verzeichnis installiert. +pattern: numpy scikit-learn rsa \ No newline at end of file diff --git a/install.ins b/install.ins new file mode 100644 index 0000000..3342bda --- /dev/null +++ b/install.ins @@ -0,0 +1,85 @@ +[Initial] +Message=Installiere Python... +DefVar $Version$ +DefVar $ExitCode$ +DefVar $AssociateFiles$ +DefVar $AssociateFilesArguments$ +DefVar $CreateShortcut$ +DefVar $ShortcutArgument$ +DefVar $PrependPath$ +DefVar $PrependPathArgument$ +DefVar $PackageList$ + +[Aktionen] +ShowBitmap "%ScriptPath%\logo.png" "MDG Python" +Sub_GetProperties +Sub_ConfigureProperties +WinBatch_Uninstall +Files_Cleanup +WinBatch_Setup +WinBatch_UpdatePip +Sub_CheckPackages +Sub_HandleExitCode + +[Sub_GetProperties] +Set $Version$ = GetValue("productversion", GetProductMap) +Set $AssociateFiles$ = GetProductProperty("associatefiles", "true") +Set $CreateShortcut$ = GetProductProperty("shortcut", "true") +Set $PrependPath$ = GetProductProperty("prependpath", "true") +Set $PackageList$ = GetProductProperty("pippackages", "") + +[Sub_ConfigureProperties] +if ($AssociateFiles$ = "true") + Set $AssociateFilesArguments$ = "AssociateFiles=1" +else + Set $AssociateFilesArguments$ = "AssociateFiles=0" +endif + +if ($CreateShortcut$ = "true") + Set $ShortcutArgument$ = "Shortcuts=1" +else + Set $ShortcutArgument$ = "Shortcuts=0" +endif + +if ($PrependPath$ = "true") + Set $PrependPathArgument$ = "PrependPath=1" +else + Set $PrependPathArgument$ = "PrependPath=0" +endif + +[WinBatch_Uninstall] +; First uninstall Python due to an upstream issue with the installer on existing installations: https://bugs.python.org/issue41800 +"%ScriptPath%\data\python-$Version$-amd64.exe" /quiet /uninstall + +[Files_Cleanup] +; This ensures all data has been removed +delete -sf "%ProgramFiles64Dir%\python39\" + +[WinBatch_Setup] +; https://docs.python.org/3/using/windows.html#installing-without-ui +"%ScriptPath%\data\python-$Version$-amd64.exe" /passive InstallAllUsers=1 InstallLauncherAllUsers=1 $AssociateFilesArguments$ $ShortcutArgument$ $PrependPathArgument$ /log "%opsiLogDir%\python-install.log" + +[WinBatch_UpdatePip] +"%ProgramFiles64Dir%\python39\python.exe" -m pip install --upgrade pip + +[Sub_CheckPackages] +if not($PackageList$ = "") + WinBatch_Packages +endif + +[WinBatch_Packages] +"%ProgramFiles64Dir%\python39\Scripts\pip.exe" install -U $PackageList$ + +[Sub_HandleExitCode] +; check return code +Set $ExitCode$ = GetLastExitCode +comment "GetLastExitCode: " + $ExitCode$ +if not($ExitCode$ = "0" or $ExitCode$ = "3010" or $ExitCode$ = "2359302" or $ExitCode$ = "2359297") + ; 0 ERROR_SUCCESS + ; 3010 ERROR_SUCCESS_REBOOT_REQUIRED + ; List of WUSA ExitCodes: https://support.microsoft.com/en-us/kb/938205 + ; 2359297 (WUSA ExitCode, Hex: 0x240001) WU_S_SERVICE_STOP + ; 2359302 (WUSA ExitCode, Hex: 0x00240006) WU_S_ALREADY_INSTALLED + LogError "Fatal: setup returned exit code " + $ExitCode$ + IsFatalError +endif diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cd5d8ed354a3a73e43161453cf17dcf656db6ec8 GIT binary patch literal 7283 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 N002ovPDHLkV1h=mmWluX literal 0 HcmV?d00001 diff --git a/remove.ins b/remove.ins new file mode 100644 index 0000000..7c5fb0e --- /dev/null +++ b/remove.ins @@ -0,0 +1,31 @@ +[Initial] +Message=Deinstalliere Python... +DefVar $ExitCode$ +DefVar $Version$ + +[Aktionen] +ShowBitmap "%ScriptPath%\logo.png" "MDG Python" +Sub_PrepareSetup +WinBatch_Setup +Files_Cleanup + +[Sub_PrepareSetup] +Set $Version$ = GetValue("productversion", GetProductMap) + +[WinBatch_Setup] +"%ScriptPath%\data\python-$Version$-amd64.exe" /quiet /uninstall + +[Files_Cleanup] +delete -sf "%ProgramFiles64Dir%\Python39\" + +[Sub_HandleExitCode] +; check return code +Set $ExitCode$ = GetLastExitCode +comment "GetLastExitCode: " + $ExitCode$ +if not($ExitCode$ = "0" or $ExitCode$ = "1605" or $ExitCode$ = "3010") + ; 0 ERROR_SUCCESS + ; 1605 ERROR_UNKNOWN_PRODUCT + ; 3010 ERROR_SUCCESS_REBOOT_REQUIRED + LogError "Fatal: setup returned exit code " + $ExitCode$ + IsFatalError +endif