From 8e4836c7c757fa887b69a3dc9379c974904a0c88 Mon Sep 17 00:00:00 2001 From: Zhu Qun-Ying Date: Tue, 1 Oct 2024 09:28:52 +0700 Subject: development/gnatstudio-bin: Added (powerful and lightweight IDE). Signed-off-by: Willy Sudiarto Raharjo --- development/gnatstudio-bin/README | 7 + development/gnatstudio-bin/doinst.sh | 14 ++ development/gnatstudio-bin/douninst.sh | 1 + .../gnatstudio-bin/gnatstudio-bin.SlackBuild | 269 +++++++++++++++++++++ development/gnatstudio-bin/gnatstudio-bin.csh | 3 + development/gnatstudio-bin/gnatstudio-bin.info | 10 + development/gnatstudio-bin/gnatstudio-bin.sh | 3 + development/gnatstudio-bin/slack-desc | 19 ++ 8 files changed, 326 insertions(+) create mode 100644 development/gnatstudio-bin/README create mode 100644 development/gnatstudio-bin/doinst.sh create mode 100644 development/gnatstudio-bin/douninst.sh create mode 100644 development/gnatstudio-bin/gnatstudio-bin.SlackBuild create mode 100644 development/gnatstudio-bin/gnatstudio-bin.csh create mode 100644 development/gnatstudio-bin/gnatstudio-bin.info create mode 100644 development/gnatstudio-bin/gnatstudio-bin.sh create mode 100644 development/gnatstudio-bin/slack-desc diff --git a/development/gnatstudio-bin/README b/development/gnatstudio-bin/README new file mode 100644 index 000000000000..907f306d2782 --- /dev/null +++ b/development/gnatstudio-bin/README @@ -0,0 +1,7 @@ +gnatstudio-bin (GNAT Studio) + +GNAT Studio is a lightweight, extensible IDE, intended to develop +high-integrity software in Ada and SPARK, with support for C and +C++ as well. + +This is a binary package. diff --git a/development/gnatstudio-bin/doinst.sh b/development/gnatstudio-bin/doinst.sh new file mode 100644 index 000000000000..e633e9fb82e6 --- /dev/null +++ b/development/gnatstudio-bin/doinst.sh @@ -0,0 +1,14 @@ +# Update gdkpixbuf loaders cache + +basedir=/opt/gnatstudio +LD_LIBRARY_PATH=$basedir/lib/gnatstudio:$LD_LIBRARY_PATH \ +GDK_PIXBUF_MODULE_FILE=$basedir/lib/gnatstudio/gdk-pixbuf-2.0/2.10.0/loaders.cache \ +GDK_PIXBUF_MODULEDIR=$basedir/lib/gnatstudio/gdk-pixbuf-2.0/2.10.0/loaders \ +./$basedir/bin/gdk-pixbuf-query-loaders --update-cache + +# Update immodules cache + +LD_LIBRARY_PATH=$basedir/lib/gnatstudio:$LD_LIBRARY_PATH \ +GTK_IM_MODULE_FILE=$basedir/lib/gnatstudio/gtk-3.0/3.0.0/immodules.cache \ +GTK_PATH=$basedir/lib/gnatstudio/gtk-3.0 \ +./$basedir/bin/gtk-query-immodules-3.0 --update-cache diff --git a/development/gnatstudio-bin/douninst.sh b/development/gnatstudio-bin/douninst.sh new file mode 100644 index 000000000000..772e50e06e07 --- /dev/null +++ b/development/gnatstudio-bin/douninst.sh @@ -0,0 +1 @@ +rm -rf /opt/gnatstudio diff --git a/development/gnatstudio-bin/gnatstudio-bin.SlackBuild b/development/gnatstudio-bin/gnatstudio-bin.SlackBuild new file mode 100644 index 000000000000..98723d7a844e --- /dev/null +++ b/development/gnatstudio-bin/gnatstudio-bin.SlackBuild @@ -0,0 +1,269 @@ +#!/bin/bash + +# Slackware build script for gnatstudio-bin + +# Copyright 2024, Zhu, Qun-Ying +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PRGNAM=gnatstudio-bin +VERSION=${VERSION:-25.0w.20240506} +SRC_FILE="gnatstudio-25.0w-20240506-x86_64-linux-bin.tar.gz" +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} +PKGTYPE=${PKGTYPE:-tgz} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + x86_64 ) ARCH=x86_64 ;; + * ) echo "Only x86_64 is supported." + exit ;; + esac +fi + +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" + exit 0 +fi + +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP + +mkdir -p $PKG/opt/gnatstudio +tar xvf $CWD/$SRC_FILE -C $PKG/opt/gnatstudio --strip-components=1 +cd $PKG/opt/gnatstudio +rm doinstall +chown -R root:root . + +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +mkdir -p $PKG/etc/profile.d +cat $CWD/gnatstudio-bin.sh > $PKG/etc/profile.d/gnatstudio-bin.sh +cat $CWD/gnatstudio-bin.csh > $PKG/etc/profile.d/gnatstudio-bin.csh +chmod +x $PKG/etc/profile.d/* + +# the binary release of gnatstudio has so many duplicate files, most of them +# are suppose to be symbolic links :( +# change directory to support libs and replase those duplicate files with +# symbolic link +(cd $PKG/opt/gnatstudio/lib/gnatstudio/ + ln -sf libatk-1.0.so.0 libatk-1.0.so + ln -sf libatk-bridge-2.0.so.0 libatk-bridge-2.0.so + ln -sf libatspi.so.0 libatspi.so + ln -sf libcairo-gobject.so.2 libcairo-gobject.so + ln -sf libcairo-script-interpreter.so.2 libcairo-script-interpreter.so + ln -sf libcairo.so.2 libcairo.so + ln -sf libcroco-0.6.so.3 libcroco-0.6.so + ln -sf libcups.so.2 libcups.so + ln -sf libcupsimage.so.2 libcupsimage.so + ln -sf libdbus-1.so.3 libdbus-1.so + ln -sf libepoxy.so.0 libepoxy.so + ln -sf libexpat.so.1 libexpat.so + ln -sf libffi.so.8 libffi.so + ln -sf libfontconfig.so.1 libfontconfig.so + ln -sf libfreetype.so.6 libfreetype.so + ln -sf libfribidi.so.0 libfribidi.so + ln -sf libgailutil-3.so.0 libgailutil-3.so + ln -sf libgdk-3.so.0 libgdk-3.so + ln -sf libgdk_pixbuf-2.0.so.0 libgdk_pixbuf-2.0.so + ln -sf libgettextlib-0.20.2.so libgettextlib.so + ln -sf libgettextpo.so.0 libgettextpo.so + ln -sf libgettextsrc-0.20.2.so libgettextsrc.so + ln -sf libgio-2.0.so.0 libgio-2.0.so + ln -sf libgirepository-1.0.so.1 libgirepository-1.0.so + ln -sf libgladeui-2.so.13 libgladeui-2.so + ln -sf libglib-2.0.so.0 libglib-2.0.so + ln -sf libgmodule-2.0.so libgmodule-2.0.so.0 + ln -sf libgnatcoll_core.so.25.0w libgnatcoll_core.so.25 + ln -sf libgnatcoll_gmp.so.25.0w libgnatcoll_gmp.so.25 + ln -sf libgnatcoll_iconv.so.25.0w libgnatcoll_iconv.so.25 + ln -sf libgnatcoll_projects.so.25.0w libgnatcoll_projects.so.25 + ln -sf libgnatcoll_python3.so.25.0w libgnatcoll_python3.so.25 + ln -sf libgnatcoll_sql.so.25.0w libgnatcoll_sql.so.25 + ln -sf libgnatcoll_sqlite.so.25.0w libgnatcoll_sqlite.so.25 + ln -sf libgnatcoll_xref.so.25.0w libgnatcoll_xref.so.25 + ln -sf libgobject-2.0.so.0 libgobject-2.0.so + ln -sf libgthread-2.0.so.0 libgthread-2.0.so + ln -sf libgtk-3.so.0 libgtk-3.so + ln -sf libgtkada.so.25.0w libgtkada.so.25 + ln -sf libharfbuzz-gobject.so.0 libharfbuzz-gobject.so + ln -sf libharfbuzz-subset.so.0 libharfbuzz-subset.so + ln -sf libharfbuzz.so.0 libharfbuzz.so + ln -sf libjpeg.so.8 libjpeg.so + ln -sf libpango-1.0.so.0 libpango-1.0.so + ln -sf libpangocairo-1.0.so.0 libpangocairo-1.0.so + ln -sf libpangoft2-1.0.so.0 libpangoft2-1.0.so + ln -sf libpixman-1.so.0 libpixman-1.so + ln -sf libpng16.so.16 libpng16.so + ln -sf libpng16.so libpng.so + ln -sf librsvg-2.so.2 librsvg-2.so + ln -sf libtextstyle.so.0 libtextstyle.so + ln -sf libxml2.so.2 libxml2.so + ln -sf libxmlada_dom.so.25.0w libxmlada_dom.so.25 + ln -sf libxmlada_input_sources.so.25.0w libxmlada_input_sources.so.25 + ln -sf libxmlada_sax.so.25.0w libxmlada_sax.so.25 + ln -sf libxmlada_schema.so.25.0w libxmlada_schema.so.25 + ln -sf libxmlada_unicode.so.25.0w libxmlada_unicode.so.25 + ln -sf libz.so.1 libz.so + chmod +x libgcc_s* preloadable_libintl.so +) +(cd $PKG/opt/gnatstudio/share/gnatstudio/python/lib/python3.9/site-packages/libadalang/ + ln -sf /opt/gnatstudio/lib/gnatstudio/libadalang.so + ln -sf /opt/gnatstudio/lib/gnatstudio/libadasat.so + ln -sf /opt/gnatstudio/lib/gnatstudio/libgcc_s.so.1 + ln -sf /opt/gnatstudio/lib/gnatstudio/libgnarl-25.20240411.so + ln -sf /opt/gnatstudio/lib/gnatstudio/libgnat-25.20240411.so + ln -sf /opt/gnatstudio/lib/gnatstudio/libgnatcoll_core.so.25 + ln -sf /opt/gnatstudio/lib/gnatstudio/libgnatcoll_core.so.25.0w + ln -sf /opt/gnatstudio/lib/gnatstudio/libgnatcoll_gmp.so.25 + ln -sf /opt/gnatstudio/lib/gnatstudio/libgnatcoll_gmp.so.25.0w + ln -sf /opt/gnatstudio/lib/gnatstudio/libgnatcoll_iconv.so.25 + ln -sf /opt/gnatstudio/lib/gnatstudio/libgnatcoll_iconv.so.25.0w + ln -sf /opt/gnatstudio/lib/gnatstudio/libgnatcoll_projects.so.25 + ln -sf /opt/gnatstudio/lib/gnatstudio/libgnatcoll_projects.so.25.0w + ln -sf /opt/gnatstudio/lib/gnatstudio/libgpr.so + ln -sf /opt/gnatstudio/lib/gnatstudio/libgpr2.so + ln -sf /opt/gnatstudio/lib/gnatstudio/liblangkit_support.so + ln -sf /opt/gnatstudio/lib/gnatstudio/libprettier_ada.so + ln -sf /opt/gnatstudio/lib/gnatstudio/libvss-gnat.so + ln -sf /opt/gnatstudio/lib/gnatstudio/libvss-json.so + ln -sf /opt/gnatstudio/lib/gnatstudio/libvss-regexp.so + ln -sf /opt/gnatstudio/lib/gnatstudio/libvss.so + ln -sf /opt/gnatstudio/lib/gnatstudio/libxmlada_dom.so.25 + ln -sf /opt/gnatstudio/lib/gnatstudio/libxmlada_dom.so.25.0w + ln -sf /opt/gnatstudio/lib/gnatstudio/libxmlada_input_sources.so.25 + ln -sf /opt/gnatstudio/lib/gnatstudio/libxmlada_input_sources.so.25.0w + ln -sf /opt/gnatstudio/lib/gnatstudio/libxmlada_sax.so.25 + ln -sf /opt/gnatstudio/lib/gnatstudio/libxmlada_sax.so.25.0w + ln -sf /opt/gnatstudio/lib/gnatstudio/libxmlada_schema.so.25 + ln -sf /opt/gnatstudio/lib/gnatstudio/libxmlada_schema.so.25.0w + ln -sf /opt/gnatstudio/lib/gnatstudio/libxmlada_unicode.so.25 + ln -sf /opt/gnatstudio/lib/gnatstudio/libxmlada_unicode.so.25.0w +) +(cd $PKG/opt/gnatstudio/share/doc/gnatstudio/html/tutorial + rm -rf _static + ln -sf /opt/gnatstudio/share/doc/gnatdoc/html/users_guide/_static + cd $PKG/opt/gnatstudio/share/doc/gnatstudio/html/users_guide + rm -rf _static + ln -sf /opt/gnatstudio/share/doc/gnatdoc/html/users_guide/_static +) +# move some packages only in +# opt/gnatstudio/libexec/gnatstudio/gnathub/share/gnathub/python +# to opt/gnatstudio/share/gnatstudio/python, then replace it with a softlink + python_libexec_path="$PKG/opt/gnatstudio/libexec/gnatstudio/gnathub/share/gnathub/python/" + python_share_path="$PKG/opt/gnatstudio/share/gnatstudio/python" + mv ${python_libexec_path}/bin/flask ${python_share_path}/bin + mv ${python_libexec_path}/bin/pygmentize ${python_share_path}/bin + +( cd ${python_libexec_path}/lib/python3.9/site-packages + rm -rf _distutils_hack pip* pkg_resources setuptools* wheel* README.txt \ + distutils-precedence.pth +) + mv ${python_libexec_path}/lib/python3.9/site-packages/* ${python_share_path}/lib/python3.9/site-packages/ + rm -rf ${python_libexec_path} + +( cd $PKG/opt/gnatstudio/libexec/gnatstudio/gnathub/share/gnathub/ + ln -sf /opt/gnatstudio/share/gnatstudio/python +) + +function symlink_duplicate_file() { + file_prefix=$(echo $1 | rev | cut -d . -f 3- | rev) + file0=${file_prefix}.pyc + file1=${file_prefix}.opt-1.pyc + file2=${file_prefix}.opt-2.pyc + sum0=$(md5sum $file0 2> /dev/null | cut -d ' ' -f 1) + sum1=$(md5sum $file1 2> /dev/null | cut -d ' ' -f 1) + sum2=$(md5sum $file2 2> /dev/null | cut -d ' ' -f 1) + if [ ! -z "$sum2" -a "$sum2" = "$sum1" ]; then + ln -sf $file2 $file1 + fi + if [ ! -z "$sum1" -a "$sum0" = "$sum1" ]; then + ln -sf $file1 $file0 + fi + if [ ! -z "$sum2" -a "$sum2" = "$sum0" ]; then + ln -sf $file2 $file0 + fi +} + +function remove_duplicate_pycache_files() { + base_name=$(basename $1) + if [ "$base_name" = "__pycache__" ] ; then + (cd $1 + mapfile -t match_files < <(find -name "*.opt-1.pyc" -printf '%f\n') + for each_file in "${match_files[@]}"; do + symlink_duplicate_file $each_file + done + if [ "$1" = "$PKG/opt/gnatstudio/share/gnatstudio/python/lib/python3.9/test/__pycache__" ]; then + if [ -f "test_tcl.cpython-39.opt-2.pyc" ]; then + symlink_duplicate_file "test_tcl.cpython-39.opt-2.pyc" + elif [ -f "test_pprint.cpython-39.opt-2.pyc" ]; then + symlink_duplicate_file "test_pprint.cpython-39.opt-2.pyc" + else + echo "no opt-2.pyc found" + fi + fi + ) + else + mapfile -t subdirs < <(find $1 -maxdepth 1 -type d) + for each_subdir in "${subdirs[@]}" ; do + if [ "$each_subdir" != "$1" ]; then + remove_duplicate_pycache_files $each_subdir + fi + done + fi +} + +( cd ${python_share_path}/bin + ln -sf coverage-3.9 coverage3 + ln -sf coverage-3.9 coverage + ln -sf python3 python + + + # use system terminfo + cd ${python_share_path}/lib/python3.9/lib-dynext/share + rm -rf terminfo + ln -sf /usr/share/terminfo + + remove_duplicate_pycache_files ${python_share_path}/lib/python3.9 +) + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +mv COPYING3 README $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/doinst.sh > $PKG/install/doinst.sh +cat $CWD/douninst.sh > $PKG/install/douninst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE diff --git a/development/gnatstudio-bin/gnatstudio-bin.csh b/development/gnatstudio-bin/gnatstudio-bin.csh new file mode 100644 index 000000000000..de8566498db1 --- /dev/null +++ b/development/gnatstudio-bin/gnatstudio-bin.csh @@ -0,0 +1,3 @@ +#!/bin/csh +setenv PATH ${PATH}:/opt/gnatstudio/bin +setenv GNATSTUDIO_DOC_PATH /opt/gnatstudio/share/doc/gnatstudio/html diff --git a/development/gnatstudio-bin/gnatstudio-bin.info b/development/gnatstudio-bin/gnatstudio-bin.info new file mode 100644 index 000000000000..03794f184530 --- /dev/null +++ b/development/gnatstudio-bin/gnatstudio-bin.info @@ -0,0 +1,10 @@ +PRGNAM="gnatstudio-bin" +VERSION="25.0w.20240506" +HOMEPAGE="https://github.com/AdaCore/gnatstudio/" +DOWNLOAD="UNSUPPORTED" +MD5SUM="" +DOWNLOAD_x86_64="https://github.com/AdaCore/gnatstudio/releases/download/gnatstudio-cr-20240506/gnatstudio-25.0w-20240506-x86_64-linux-bin.tar.gz" +MD5SUM_x86_64="64608fec05da9eb42a4bb3455975f232" +REQUIRES="" +MAINTAINER="Zhu Qun-Ying" +EMAIL="zhu.qunying@gmail.com" diff --git a/development/gnatstudio-bin/gnatstudio-bin.sh b/development/gnatstudio-bin/gnatstudio-bin.sh new file mode 100644 index 000000000000..8d82904e3c43 --- /dev/null +++ b/development/gnatstudio-bin/gnatstudio-bin.sh @@ -0,0 +1,3 @@ +#!/bin/sh +export PATH=$PATH:/opt/gnatstudio/bin +export GNATSTUDIO_DOC_PATH=/opt/gnatstudio/share/doc/gnatstudio/html diff --git a/development/gnatstudio-bin/slack-desc b/development/gnatstudio-bin/slack-desc new file mode 100644 index 000000000000..4c37e6f20dee --- /dev/null +++ b/development/gnatstudio-bin/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +gnatstudio-bin: gnatstudio-bin (GNAT Studio) +gnatstudio-bin: +gnatstudio-bin: GNAT Studio is a lightweight, extensible IDE, intended to develop +gnatstudio-bin: high-integrity software in Ada and SPARK, with support for C and +gnatstudio-bin: C++ as well. +gnatstudio-bin: +gnatstudio-bin: https://github.com/AdaCore/gnatstudio +gnatstudio-bin: +gnatstudio-bin: +gnatstudio-bin: +gnatstudio-bin: -- cgit v1.2.3