Compare commits

...

No commits in common. 'master' and 'gcc' have entirely different histories.
master ... gcc

  1. BIN
      0001-i386-Move-struct-ix86_frame-to-machine_function.diff.gz
  2. BIN
      0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.diff.gz
  3. BIN
      0003-i386-More-use-reference-of-struct-ix86_frame-to-avoi.diff.gz
  4. BIN
      0004-i386-Don-t-use-reference-of-struct-ix86_frame.diff.gz
  5. BIN
      0005-x86-Add-mindirect-branch-doc.diff.gz
  6. BIN
      0005-x86-Add-mindirect-branch.diff.gz
  7. BIN
      0006-x86-Add-mfunction-return-doc.diff.gz
  8. BIN
      0006-x86-Add-mfunction-return.diff.gz
  9. BIN
      0007-x86-Add-mindirect-branch-register-doc.diff.gz
  10. BIN
      0007-x86-Add-mindirect-branch-register.diff.gz
  11. BIN
      0008-x86-Add-V-register-operand-modifier-doc.diff.gz
  12. BIN
      0008-x86-Add-V-register-operand-modifier.diff.gz
  13. BIN
      0009-x86-Disallow-mindirect-branch-mfunction-return-with-.diff.gz
  14. BIN
      0009-x86-Disallow-mindirect-branch-mfunction-return-with-doc.diff.gz
  15. 95
      14.2/convert32-supported
  16. 144
      14.2/convert32pkg.sh
  17. 229
      14.2/kernel.SlackBuild
  18. 151
      14.2/makechroot-minimal.sh
  19. 63
      14.2/makechroot.sh
  20. 58
      14.2/massconvert32.sh
  21. 188
      14.2/update-repo.sh
  22. 143
      15.0/makechroot-minimal.sh
  23. 63
      15.0/makechroot.sh
  24. BIN
      antlr-runtime-3.4.jar
  25. 10
      c89.sh
  26. 10
      c99.sh
  27. 93
      create_gcj_jvm.sh
  28. BIN
      ecj-4.9.jar
  29. 5
      ecj.sh
  30. 1
      ecj.url
  31. BIN
      fastjar-0.97.tar.xz
  32. BIN
      fastjar-patches/1000-fastjar-0.97-segfault.patch.gz
  33. BIN
      fastjar-patches/1001-fastjar-0.97-len1.patch.gz
  34. BIN
      fastjar-patches/1002-fastjar-0.97-filename0.patch.gz
  35. BIN
      fastjar-patches/1003-fastjar-CVE-2010-0831.patch.gz
  36. BIN
      fastjar-patches/1004-fastjar-man.patch.gz
  37. BIN
      gcc-5.5.0.tar.xz
  38. BIN
      gcc-5.5.0.tar.xz.sig
  39. BIN
      gcc-no_fixincludes.diff.gz
  40. 889
      gcc.SlackBuild
  41. BIN
      isl-0.18.tar.xz
  42. 15
      readme.txt
  43. 19
      slack-desc.gcc
  44. 19
      slack-desc.gcc-g++
  45. 19
      slack-desc.gcc-gfortran
  46. 19
      slack-desc.gcc-gnat
  47. 19
      slack-desc.gcc-go
  48. 19
      slack-desc.gcc-java
  49. 19
      slack-desc.gcc-objc

BIN
0001-i386-Move-struct-ix86_frame-to-machine_function.diff.gz

Binary file not shown.

BIN
0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.diff.gz

Binary file not shown.

BIN
0003-i386-More-use-reference-of-struct-ix86_frame-to-avoi.diff.gz

Binary file not shown.

BIN
0004-i386-Don-t-use-reference-of-struct-ix86_frame.diff.gz

Binary file not shown.

BIN
0005-x86-Add-mindirect-branch-doc.diff.gz

Binary file not shown.

BIN
0005-x86-Add-mindirect-branch.diff.gz

Binary file not shown.

BIN
0006-x86-Add-mfunction-return-doc.diff.gz

Binary file not shown.

BIN
0006-x86-Add-mfunction-return.diff.gz

Binary file not shown.

BIN
0007-x86-Add-mindirect-branch-register-doc.diff.gz

Binary file not shown.

BIN
0007-x86-Add-mindirect-branch-register.diff.gz

Binary file not shown.

BIN
0008-x86-Add-V-register-operand-modifier-doc.diff.gz

Binary file not shown.

BIN
0008-x86-Add-V-register-operand-modifier.diff.gz

Binary file not shown.

BIN
0009-x86-Disallow-mindirect-branch-mfunction-return-with-.diff.gz

Binary file not shown.

BIN
0009-x86-Disallow-mindirect-branch-mfunction-return-with-doc.diff.gz

Binary file not shown.

95
14.2/convert32-supported

@ -1,95 +0,0 @@
# List of tested packages using convert32pkg.
# This list is safe to use with massconvert32.sh and safe to install.
# Note that these are from slackware 14.2, including patches. -current is unsupported.
# a
bzip2
dbus
eudev
xz
# ap
cups
mpg123
# d
libtool
llvm
# l
alsa-lib
atk
cairo
elfutils
expat
freetype
gdk-pixbuf2
glib2
glibc
gmp
gst-plugins-base
gstreamer
gtk+2
harfbuzz
icu4c
lcms2
libexif
libffi
libgphoto2
libidn
libieee1284
libjpeg-turbo
libnl3
libpcap
libpng
libtiff
libunistring
libusb
libxml2
libxslt
ncurses
orc
pango
sdl
svgalib
v4l-utils
zlib
gamin
# n
cyrus-sasl
gnutls
libgcrypt
libgpg-error
nettle
openldap-client
openssl
p11-kit
# x
fontconfig
glu
libX11
libXau
libXcomposite
libXcursor
libXdamage
libXdmcp
libXext
libXfixes
libXi
libXinerama
libXrandr
libXrender
libXv
libXvMC
libXxf86vm
libdrm
libpciaccess
libxcb
libxshmfence
mesa
pixman
# xap
sane

144
14.2/convert32pkg.sh

@ -1,144 +0,0 @@
#!/bin/sh -e
pkginfodir='/var/log/packages/'
pkgscriptdir='/var/log/scripts/'
if [ "$#" -lt 1 ]; then
echo "Usage: $0 <package32> [package64]" 1>&2
exit 1
fi
pkg32="$(realpath "$1")"
unset pkg64
[ "$2" ] && pkg64="$(realpath "$2")"
# Extract all package info
# See /sbin/installpkg
pkgbase="$(echo "$pkg32" | sed -e 's?.*/??;s/\.t[bglx]z$//')"
pkgext="$(echo "$pkg32" | sed -e 's?.*/??;s/.*\.\(t[bglx]z\)$/\1/')"
pkgname="$(echo "$pkgbase" | sed -e 's?-[^-]*-[^-]*-[^-]*$??')"
pkgver="$(echo "$pkgbase" | sed -e 's?.*-\([^-]*\)-[^-]*-[^-]*$?\1?')"
pkgarch="$(echo "$pkgbase" | sed -e 's?.*-[^-]*-\([^-]*\)-[^-]*$?\1?')"
pkgbuild="$(echo "$pkgbase" | sed -e 's?.*-[^-]*-[^-]*-\([^-]*\)$?\1?')"
case "$pkgarch" in
i?86) pkgarch=x86_64 ;;
*)
echo "Unsupported package architecture '$pkgarch'. Can't proceed." 1>&2
exit 1
;;
esac
pkginfo="$pkginfodir/$pkgname-$pkgver-$pkgarch-$pkgbuild"
pkgscript="$pkgscriptdir/$pkgname-$pkgver-$pkgarch-$pkgbuild"
case "$pkgext" in
tgz) tool=gzip ;;
tbz) tool=bzip2 ;;
tlz) tool=lzma ;;
txz) tool=xz ;;
esac
temp="$(mktemp -d)"
trap "rm -rf '$temp'" EXIT
cd "$temp"
explodepkg "$pkg32"
# Remove all files present in the 64bit package
if [ "$pkg64" ]; then
echo
echo "Removing files:"
$tool -cd "$pkg64" | tar-1.13 t | grep -v '^install/' | while read -r file; do
echo "./$file"
rm -f "./$file" 2> /dev/null || true
done
else
if [ ! -f "$pkginfo" ]; then
echo "Package '$pkgname-$pkgver-$pkgarch-$pkgbuild' is not installed. Can't proceed." 1>&2
exit 1
fi
# See /sbin/removepkg
if fgrep './' "$pkginfo" 1> /dev/null 2>&1; then
TRIGGER='^\.\/'
else
TRIGGER='FILE LIST:'
fi
echo
echo 'Removing files:'
sed -n "/$TRIGGER/,/^$/p" "$pkginfo" | fgrep -v 'FILE LIST:' | grep -v '^install/' | while read -r file; do
echo "./$file"
rm -f "./$file" 2> /dev/null || true
done
fi
# Clean empty directories
echo
echo 'Empty directories:'
find . -type d -empty -print -delete
# Remove all symlinks present in the 64bit package
if [ -f install/doinst.sh ]; then
if [ "$pkg64" ]; then
if ! $tool -cd "$pkg64" | tar-1.13 xO install/doinst.sh > install/doinst.64; then
echo "Failed to extract install/doinst.sh from '$pkg64'. Can't proceed." 1>&2
exit 1
fi
else
if [ ! -f "$pkgscript" ]; then
echo "Package '$pkgname-$pkgver-$pkgarch-$pkgbuild' is installed but has no installation script. Can't proceed." 1>&2
exit 1
fi
cp "$pkgscript" install/doinst.64
fi
# There's some packages that need special treatment
if [ "$pkgname" = 'glib2' -o "$pkgname" = 'cups' -o "$pkgname" = 'sane' ]; then
sed -i -e '/^for file in/,/^done/d' install/doinst.sh
fi
if [ "$pkgname" = 'cups' ]; then
sed -i -e '/^if \[ -e etc\/rc.d\/rc.cups \]; then/,/^fi/d' install/doinst.sh
fi
if [ "$pkgname" = 'eudev' ]; then
sed -i -e '/^if \[ \(-e etc\/rc.d\/rc.udev\|-r etc\/rc.d\/rc.udev.new\) \]; then/,/^fi/d' install/doinst.sh
fi
if [ "$pkgname" = 'dbus' ]; then
sed -i -e '/^if \[ \(-e etc\/rc.d\/rc.messagebus\|-r etc\/rc.d\/rc.messagebus.new\) \]; then/,/^fi/d' install/doinst.sh
fi
# Extract all lines treating with symlinks or config files. See /sbin/removepkg
sed -n -e 's,^[ ]*( [ ]*cd[ ]* .* [ ]*; [ ]*\(rm\|ln\) [ ]*-\(rf\|sf\)[ ]* .* [ ]*)[ ]*$,&,p' \
-e 's,^[ ]*config .*[ ]*$,&,p' install/doinst.64 > install/doinst
rm install/doinst.64
echo
echo 'Removed lines in doinst.sh:'
if [ -s install/doinst ]; then
fgrep -xf install/doinst install/doinst.sh || true
# Remove all symlinks present in the 64bit package
fgrep -vxf install/doinst install/doinst.sh > install/doinst.sh.new || true
mv install/doinst.sh.new install/doinst.sh
# If the resulting doinst.sh is empty, remove it.
if [ ! -s install/doinst.sh ]; then
rm install/doinst.sh
fi
fi
rm install/doinst
fi
# Rename package in slack-desc
if [ -f install/slack-desc ]; then
sed -i -e '/^\$\|#\| *|/!s/^[^:]*:/convert32-&/' install/slack-desc
fi
if ! find . | grep -v '^.$\|^./install' > /dev/null; then
echo
echo 'Package is empty. Not running makepkg.' 1>&2
exit 0
fi
makepkg -l n -c n "$OLDPWD/convert32-$pkgname-$pkgver-$pkgarch-$pkgbuild.$pkgext"

229
14.2/kernel.SlackBuild

@ -1,229 +0,0 @@
#!/bin/sh
set -e
# This is a SlackBuild script for building as-original-as-possible kernel packages.
# It combines existing SlackBuilds and other files in the slackware source tree with vanilla SlackBuild conventions in a way that is clean and functional.
# Unlike the "official" method of building a Slackware kernel, it builds and installs everything in $TMP, so it doesn't taint the host system, and you can build it as a regular user under fakeroot, if you wanted to.
# This often means that the $PKG directory is used as an intermediate directory to run a SlackBuild in, and that said SlackBuilds may need to be modified to run properly in $PKG.
# This script is tailored for x86_64. i?86 support is untested, and would need more modifications (such as building the -smp kernels and fixing $TMP in the packaging SlackBuilds).
# Other architectures can be added, provided the source tree for them is anywhere close to the original slackware tree.
# This SlackBuild should be placed in the "source/k" directory of the source DVD.
# However, this directory doesn't contain all the files we need, as they're scattered all throughout the slackware tree.
# This code may help prepare the source directory:
if [ "$1" = prepare ]; then
shift
if [ $# -lt 3 ]; then
echo Usage: $0 prepare \<source\> \<install\> \<output\> 1>&2
echo e.g. $0 prepare /mnt/tmp/slackware-14.2-source-dvd/source /mnt/tmp/slackware64-14.2-install-dvd/slackware64 ./kernel 1>&2
exit 1
fi
SOURCE=$1
INSTALL=$2
OUT=$3
# Copy the "source/k" directory
cp -aT $SOURCE/k $OUT
# Copy the "source/d/kernel-headers" and "source/a/kernel-firmware" directories into it
cp -at $OUT $SOURCE/d/kernel-headers $SOURCE/a/kernel-firmware
# Copy "slackware*/k/kernel-source-*-noarch-*.txt" to use as slack-desc for kernel-source into it
mkdir -p $OUT/kernel-source
cp -aT $INSTALL/k/kernel-source-*-noarch-*.txt $OUT/kernel-source/slack-desc
# Copy the SlackBuild
cp -at $OUT $0
exit
fi
PKGNAM=${PKGNAM:-linux}
BASEVER=${BASEVER:-4.4.14}
VERSION=${VERSION:-$BASEVER}
ARCH=${ARCH:-x86_64}
KARCH=${KARCH:-x86}
BUILD=${BUILD:-1}
CWD=$(pwd)
TMP=${TMP:-/tmp/kernel}
NUMJOBS=${NUMJOBS:-" -j7 "}
export VERSION ARCH BUILD TMP
# Extract the kernel source
mkdir -p $TMP
cd $TMP
rm -rf $PKGNAM-$BASEVER $PKGNAM-$VERSION
tar xvf $CWD/$PKGNAM-$BASEVER.tar.xz
# Rename the kernel source directory to the proper VERSION
# This is useful if you're applying stable patches and the actual VERSION is different from the one the tarball is named after
if [ "$BASEVER" != "$VERSION" ]; then
mv $PKGNAM-$BASEVER $PKGNAM-$VERSION
fi
# Apply patches
cd $PKGNAM-$VERSION
#xzcat $CWD/patch-x.x.xx.xz | patch -p1 --verbose
#
# Build kernel-headers
#
cd $TMP/$PKGNAM-$VERSION
# Install the kernel headers
PKG=$TMP/package-kernel-headers
rm -rf $PKG
mkdir -p $PKG/usr
make $NUMJOBS INSTALL_HDR_PATH=$PKG/usr headers_install
# Apply some modifications that are present in the original kernel-headers package
find $PKG/usr -type f -a ! -name '*.h' -delete
rm -rf $PKG/usr/include/drm
mv $PKG/usr/include/asm $PKG/usr/include/asm-$KARCH
ln -sf asm-$KARCH $PKG/usr/include/asm
# Install the slack-desc
mkdir -p $PKG/install
cat $CWD/kernel-headers/slack-desc > $PKG/install/slack-desc
# Create the package
cd $PKG
/sbin/makepkg -l y -c n $TMP/kernel-headers-$(echo $VERSION | tr - _)-$KARCH-$BUILD.txz
#
# Build kernel-huge
#
cd $TMP/$PKGNAM-$VERSION
# Build the kernel image
make $NUMJOBS mrproper
cat $CWD/config-$ARCH/config-huge-* > .config
make $NUMJOBS oldconfig
make $NUMJOBS bzImage
# Prepare the directory to run the packaging SlackBuild in
PKG=$TMP/kernel-huge
rm -rf $PKG
mkdir -p $PKG
cp arch/$KARCH/boot/bzImage $PKG
cp System.map $PKG
cp .config $PKG/config
# Copy the packaging SlackBuild
cp -aT $CWD/packaging-$ARCH/kernel-huge $PKG
# Run the packaging SlackBuild
cd $PKG
./kernel-huge.SlackBuild
#
# Build kernel-generic
#
cd $TMP/$PKGNAM-$VERSION
# Build the kernel image
make $NUMJOBS mrproper
cat $CWD/config-$ARCH/config-generic-* > .config
make $NUMJOBS oldconfig
make $NUMJOBS bzImage
# Prepare the directory to run the packaging SlackBuild in
PKG=$TMP/kernel-generic
rm -rf $PKG
mkdir -p $PKG
cp arch/$KARCH/boot/bzImage $PKG
cp System.map $PKG
cp .config $PKG/config
# Copy the packaging SlackBuild
cp -aT $CWD/packaging-$ARCH/kernel-generic $PKG
# Run the packaging SlackBuild
cd $PKG
./kernel-generic.SlackBuild
#
# Build kernel-modules
#
cd $TMP/$PKGNAM-$VERSION
# Build the kernel modules with the already-present kernel-generic config
make $NUMJOBS modules
# Prepare the directory to run the packaging SlackBuild in
PKG=$TMP/kernel-modules
rm -rf $PKG
mkdir -p $PKG
make $NUMJOBS INSTALL_MOD_PATH=$PKG modules_install
# Point the build and source links to the proper source directory in /usr/src, as packaged in kernel-source
rm -f $PKG/lib/modules/$VERSION/build $PKG/lib/modules/$VERSION/source
ln -s /usr/src/$PKGNAM-$VERSION $PKG/lib/modules/$VERSION/build
ln -s /usr/src/$PKGNAM-$VERSION $PKG/lib/modules/$VERSION/source
# Copy the packaging SlackBuild
cp -aT $CWD/packaging-$ARCH/kernel-modules $PKG
# Prefix absolute module paths in the SlackBuild with $CWD, since we installed the modules there
sed -i -e 's@/lib/modules/@$CWD&@' $PKG/kernel-modules.SlackBuild
# Run the packaging SlackBuild
cd $PKG
KERNELRELEASE=$VERSION ./kernel-modules.SlackBuild
#
# Build kernel-source
#
cd $TMP/$PKGNAM-$VERSION
# Cleanup the source directory that was prepared and built with the kernel-generic config
make $NUMJOBS clean
make $NUMJOBS prepare
rm .version .config.old
# Install the kernel source
PKG=$TMP/package-kernel-source
rm -rf $PKG
mkdir -p $PKG/usr/src
ln -s $PKGNAM-$VERSION $PKG/usr/src/$PKGNAM
# Install the slack-desc
mkdir -p $PKG/install
cat $CWD/kernel-source/slack-desc > $PKG/install/slack-desc
# Create the package
cd $PKG
mv $TMP/$PKGNAM-$VERSION usr/src
/sbin/makepkg -l y -c n $TMP/kernel-source-$(echo $VERSION | tr - _)-noarch-$BUILD.txz
#
# Build kernel-firmware
#
cd $TMP
# Prepare the directory to run the packaging SlackBuild in
PKG=$TMP/kernel-firmware
rm -rf $PKG
mkdir -p $PKG
cp -aT $CWD/kernel-firmware $PKG
# Use --depth=1 to cause git to not to download the entire history
sed -i -e 's/git clone/& --depth=1/' $PKG/kernel-firmware.SlackBuild
# Run the packaging SlackBuild
cd $PKG
unset VERSION # The script uses `date` to make a $VERSION
./kernel-firmware.SlackBuild

151
14.2/makechroot-minimal.sh

@ -1,151 +0,0 @@
#!/bin/sh
set -eu
if [ "$(id -u)" != 0 ]; then
echo "This script needs root permissions!" 1>&2
exit 1
fi
if [ "$#" -lt 2 ]; then
echo "Usage: $0 [-a arch] [-v version] [-m mirror] [-b localmirror]" 1>&2
exit 1
fi
version='14.2'
arch="$(uname -m)"
mirror='https://mirrors.slackware.com/slackware'
base=''
# Minimal amount of packages required to run installpkg, removepkg and upgradepkg
# bzip2 and gzip are optional, but required to support .tgz and .tbz packages
# All of these exist in the 'a' package set
packages_pkgtools='
aaa_base
aaa_elflibs
bash
bzip2
coreutils
etc
findutils
glibc-solibs
grep
gzip
pkgtools
sed
tar
util-linux
xz
'
# Minimal amount of packages required to run slackpkg without the dialog interface
# gnupg is optional, but required to verify the GPG signatures of packages
# ca-certificates, openssl, bin and perl are optional, but required for HTTPS support
# These exist over the 'a', 'ap' and 'n' package sets
# perl exists in the 'd' package set
# openssl and ca-certificates need to be installed last (after perl and bin, at least) for the doinst.sh to run correctly
packages_slackpkg='
bin
diffutils
gawk
gnupg
openssl-solibs
perl
slackpkg
wget
which
openssl
ca-certificates
'
# Parse arguments
while getopts "v:a:m:b:" opt; do
case "$opt" in
v) version="$OPTARG" ;;
a) arch="$OPTARG" ;;
m) mirror="$OPTARG" ;;
b) base="$(realpath "$OPTARG")" # Path to local mirror, to get the files from.
esac
done
# Build final variables
case "$arch" in
x86_64)
pkgmain='slackware64'
;;
*)
pkgmain='slackware'
;;
esac
release="$pkgmain-$version"
initrd='isolinux/initrd.img'
checksums='CHECKSUMS.md5'
# Create working directory
temp="$(mktemp -d -t "$(basename "$0")".XXXXXX)"
trap "rm -rf '$temp'" EXIT
destdir="$PWD"
cd "$temp"
# Function to download (or copy) a file
get() {
if [ "$base" ]; then
cp "$base/$1" "$2"
else
wget "$mirror/$release/$1" -O "$2"
fi
}
# Function to verify files based on the checksums file
check() {
printf '%s' "$(tail +13 CHECKSUMS.md5 | grep "^[0-9a-f]* ./$1$" | cut -d ' ' -f 1) $2" | md5sum -c --quiet -
}
# Get the full path to a package
package() {
tail +13 CHECKSUMS.md5 | grep "^[0-9a-f]* ./$pkgmain/[^/]*/$1-[^-]*-[^-]*-[^-]*\.t.z$" | cut -d ' ' -f 3- | cut -c 3-
}
# Download checksums
get "$checksums" CHECKSUMS.md5
# Download installer initrd.img
get "$initrd" initrd.img
check "$initrd" initrd.img
# Unpack and prepare the installer
zcat initrd.img | cpio -id
rm -rf initrd.img mnt pkg
mkdir -p mnt/pkg pkg
# Download packages
for pkg in $packages_pkgtools; do
path="$(package "$pkg")"
name="$(basename "$path")"
get "$path" "pkg/$name"
check "$path" "pkg/$name"
echo "$name" >> pkg/_
done
for pkg in $packages_slackpkg; do
path="$(package "$pkg")"
name="$(basename "$path")"
get "$path" "mnt/pkg/$name"
check "$path" "mnt/pkg/$name"
echo "$name" >> mnt/pkg/_
done
# Bootstrap pkgtools and it's dependencies
env -i chroot . sh -l -c 'while read pkg; do /usr/lib/setup/installpkg --root /mnt --terse "/pkg/$pkg"; done < /pkg/_'
# Install slackpkg and it's dependencies
env -i chroot mnt sh -l -c 'while read pkg; do /sbin/installpkg --terse "/pkg/$pkg"; done < /pkg/_'
# Configuration
printf '%s\n' "$mirror/$release/" >> mnt/etc/slackpkg/mirrors
# Compress the package
tar cvJf "$destdir/$release.tar.xz" --sort=name --exclude=./pkg -C mnt .

63
14.2/makechroot.sh

@ -1,63 +0,0 @@
#!/bin/sh -e
set -e
if [ "$(id -u)" != 0 ]; then
echo "This script needs root permissions!" 1>&2
exit 1
fi
if [ "$#" -lt 2 ]; then
echo "Usage: $0 <slackware> <chroot>" 1>&2
exit 1
fi
slackware="$(realpath "$1")"
chroot="$(realpath "$2")"
temp="$(mktemp -d -t makechroot.XXXXXX)"
# Make sure we clean up properly before exitting
cleanup() {
mountpoint -q "$temp/mnt" && umount "$temp/mnt"
mountpoint -q "$temp/dvd" && umount "$temp/dvd"
rm -rf "$temp"
}
trap 'cleanup' EXIT
# Extract the initrd
cd "$temp"
gzip -cd "$slackware/isolinux/initrd.img" | cpio -id
# Mount the dvd
mkdir dvd
mount --bind "$slackware" dvd
# Mount the destination
mkdir -p "$chroot"
mount --bind "$chroot" mnt
# Install the packages
env -i chroot . sh -l -c '
/usr/lib/setup/installpkg --root /mnt --terse /dvd/slackware*/*/*.t?z
cd /mnt
for script in \
04.mkfontdir \
05.fontconfig \
07.update-desktop-database \
07.update-mime-database \
08.gtk-update-icon-cache \
11.cacerts \
cups-genppdupdate
do
var/log/setup/setup.$script
done
chroot . /usr/bin/update-gtk-immodules > /dev/null 2>&1
chroot . /usr/bin/update-gdk-pixbuf-loaders > /dev/null 2>&1
chroot . /usr/bin/update-pango-querymodules > /dev/null 2>&1
chroot . /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas > /dev/null 2>&1
'
# We only run a few setup scripts that do not require user interaction, and deal with updating caches and such, which is not done (properly) by the doinst.sh scripts.
# To get a full list, run: bzcat MANIFEST.bz2 | awk '{print $6}' | grep '^var/log/setup/setup\.' | sort
# Besides the setup scripts, we also need to run some programs which are usually ran from /etc/rc.d/rc.M, but not from the setup scripts.
# This is tailored to Slackware 14.2. I'm unsure whether it'll work properly on any other version.

58
14.2/massconvert32.sh

@ -1,58 +0,0 @@
#!/bin/sh
set -e
# DISCLAIMER
# Don't ever think of installing every single package generated with this script.
# While it *should* not cause any problems, doing so is simply overkill, untested, and not recommended in the least.
if [ "$#" -lt 2 ]; then
echo "Usage: $0 <slackware> <slackware64> [whitelist]" 1>&2
exit 1
fi
scriptdir="$(realpath "$(dirname "$0")")"
slackware="$1"
slackware64="$2"
whitelist="$3"
find "$slackware" -type f -name "*.t?z" -printf '%P\n' | sort | while read -r pkg; do
# See /sbin/installpkg
pkgbase="$(echo "$pkg" | sed -e 's?.*/??;s/\.t[bglx]z$//')"
pkgext="$(echo "$pkg" | sed -e 's?.*/??;s/.*\.\(t[bglx]z\)$/\1/')"
pkgname="$(echo "$pkgbase" | sed -e 's?-[^-]*-[^-]*-[^-]*$??')"
pkgver="$(echo "$pkgbase" | sed -e 's?.*-\([^-]*\)-[^-]*-[^-]*$?\1?')"
pkgarch="$(echo "$pkgbase" | sed -e 's?.*-[^-]*-\([^-]*\)-[^-]*$?\1?')"
if [ "$whitelist" ]; then
if ! grep -v '^#' "$whitelist" | fgrep -xq "$pkgname"; then
continue
fi
fi
case "$pkgarch" in
i?86) pkgarch=x86_64 ;;
# Architecture-independent stuff
noarch|fw) continue ;;
# Only kernel-headers uses x86 as pkgarch. That doesn't need conversion.
x86) continue ;;
*)
echo "WARNING: Package '$pkg' has an unsupported architecture: '$pkgarch'"
exit
;;
esac
if [ ! -f "$slackware64/$(dirname "$pkg")/$pkgname-$pkgver-$pkgarch-"*".$pkgext" ]; then
echo "WARNING: Package '$pkg' doesn't exist in slackware64, or there were multiple with different build versions."
continue
fi
rpkg="$(realpath "$slackware/$pkg")"
rpkg64="$(realpath "$slackware64/$(dirname "$pkg")/$pkgname-$pkgver-$pkgarch-"*".$pkgext")"
mkdir -p "$(dirname "$pkg")"
( cd "$(dirname "$pkg")"
"$scriptdir/convert32pkg.sh" "$rpkg" "$rpkg64"
)
done

188
14.2/update-repo.sh

@ -1,188 +0,0 @@
#!/bin/sh
set -e
gpgkey=''
timestamp="$(LC_ALL=C date -u)"
cachedir='.cache'
# Cleanup
if [ "$1" = 'clean' ]; then
rm -rf "$cachedir" ChangeLog.txt PACKAGES.TXT MANIFEST.bz2 FILELIST.TXT CHECKSUMS.md5 CHECKSUMS.md5.asc GPG-KEY
find . -regex '.*\.t[bglx]z$' | while read -r package; do
pkgbase="$(echo "$package" | sed 's?.*/??;s/\.t[bglx]z$//')"
rm -f "$(dirname "$package")/$pkgbase.txt"
rm -f "$package.asc"
done
exit
fi
mkdir -p "$cachedir"
# Process all packages
find . -regex '.*\.t[bglx]z$' | while read -r package; do
case "$package" in
*.tgz)
tool=gzip
;;
*.tbz)
tool=bzip2
;;
*.tlz)
tool=lzma
;;
*.txz)
tool=xz
;;
esac
# See the pkgbase and package_name functions in /sbin/installpkg
pkgbase="$(echo "$package" | sed 's?.*/??;s/\.t[bglx]z$//')"
pkgdir="$(dirname "$package")"
pkgname="$(echo "$pkgbase" | sed 's?-[^-]*-[^-]*-[^-]*$??')"
pkgtxt="$pkgdir/$pkgbase.txt"
pkgmeta="$cachedir/$pkgdir/$pkgbase.meta"
pkgmanifest="$cachedir/$pkgdir/$pkgbase.manifest"
pkgsize="$cachedir/$pkgdir/$pkgbase.size"
pkgusize="$cachedir/$pkgdir/$pkgbase.usize"
pkgsum="$cachedir/$pkgdir/$pkgbase.checksum"
if [ -f "$pkgtxt" -a \
-f "$pkgmeta" -a \
-f "$pkgmanifest" -a \
-f "$pkgsize" -a \
-f "$pkgusize" -a \
-f "$pkgsum" ]; then
if [ "$gpgkey" ]; then
if [ -f "$package.asc" ]; then
md5sum --status -c "$pkgsum" && continue
fi
else
md5sum --status -c "$pkgsum" && continue
fi
fi
echo "Adding $package..."
mkdir -p "$cachedir/$pkgdir"
# Decompress the package
tmppkg="$(mktemp)"
$tool -cd "$package" > "$tmppkg"
# Get package size
du -k "$package" | cut -f 1 > "$pkgsize"
du -k "$tmppkg" | cut -f 1 > "$pkgusize"
# Generate .txt file (see /usr/bin/slackdtxt)
(tar xOf "$tmppkg" install/slack-desc 2> /dev/null || echo "$pkgname:") | egrep -v '^($|#| *\|)' > "$pkgtxt"
# Create manifest for this package
cat > "$pkgmanifest" << EOF
++========================================
||
|| Package: $package
||
++========================================
$(TZ=EST tar tvvf "$tmppkg")
EOF
# Create metadata for this package
# Source for the sed line: https://stackoverflow.com/questions/1444406/how-can-i-delete-duplicate-lines-in-a-file-in-unix#1444433
cat > "$pkgmeta" << EOF
PACKAGE NAME: $(basename "$package")
PACKAGE LOCATION: $pkgdir
PACKAGE SIZE (compressed): $(cat "$pkgsize" | xargs) K
PACKAGE SIZE (uncompressed): $(cat "$pkgusize" | xargs) K
PACKAGE DESCRIPTION:
$(cat "$pkgtxt" | sed -e '$!N; /^\(.*\)\n\1$/!P; D')
EOF
# Sign the package
rm -f "$package.asc"
[ "$gpgkey" ] && gpg -bas --use-agent --batch -u "$gpgkey" "$package"
# Remove decompressed package
rm -f "$tmppkg"
# Save checksum
md5sum "$package" > "$pkgsum"
done
# Generate shitty ChangeLog.txt
echo "$timestamp" > ChangeLog.txt
# Create GPG-KEY
if [ "$gpgkey" ]; then
gpg --list-keys "$gpgkey" > GPG-KEY
gpg -a --export "$gpgkey" >> GPG-KEY
fi
# Generate PACKAGES.TXT
echo "Generating PACKAGES.TXT..."
cat > PACKAGES.TXT << EOF
PACKAGES.TXT; $timestamp
This file provides details on the Slackware packages found
in this directory.
Total size of all packages (compressed): $(expr \( 0$(find "$cachedir" -type f -name '*.size' | xargs cat | xargs printf ' + %s') \) / 1024 || true) MB
Total size of all packages (uncompressed): $(expr \( 0$(find "$cachedir" -type f -name '*.usize' | xargs cat | xargs printf ' + %s') \) / 1024 || true) MB
EOF
# https://stackoverflow.com/questions/4255603/sort-files-by-basename#4256095
find "$cachedir" -type f -name '*.meta' | perl -e 'print sort{($p=$a)=~s!.*/!!;($q=$b)=~s!.*/!!;$p cmp$q}<>' | xargs cat >> PACKAGES.TXT
echo >> PACKAGES.TXT
# Generate MANIFEST.bz2
echo "Generating MANIFEST.bz2..."
find "$cachedir" -type f -name '*.manifest' | sort | xargs cat | bzip2 -9 -z > MANIFEST.bz2
# Generate FILELIST.TXT
echo "Generating FILELIST.TXT..."
cat > FILELIST.TXT << EOF
$timestamp
Here is the file list for this directory. If you are using a
mirror site and find missing or extra files in the disk
subdirectories, please have the archive administrator refresh
the mirror.
EOF
find . ! -path "./$cachedir/*" -a ! -name "$cachedir" | sort | xargs fakeroot ls -ld --time-style=long-iso > FILELIST.TXT
# Generate CHECKSUMS.md5
echo "Generating CHECKSUMS.md5..."
cat > CHECKSUMS.md5 << EOF
These are the MD5 message digests for the files in this directory.
If you want to test your files, use 'md5sum' and compare the values to
the ones listed here.
To test all these files, use this command:
tail +13 CHECKSUMS.md5 | md5sum -c --quiet - | less
'md5sum' can be found in the GNU coreutils package on ftp.gnu.org in
/pub/gnu, or at any GNU mirror site.
MD5 message digest Filename
EOF
find . -type f -a ! -path "./$cachedir/*" | sort | xargs md5sum >> CHECKSUMS.md5
# Sign CHECKSUMS.md5
rm -f CHECKSUMS.md5.asc
[ "$gpgkey" ] && gpg -bas --use-agent --batch -u "$gpgkey" CHECKSUMS.md5
# Remove tmpdir
rm -rf "$tmpdir"

143
15.0/makechroot-minimal.sh

@ -1,143 +0,0 @@
#!/bin/sh
set -eu
if [ "$(id -u)" != 0 ]; then
echo "This script needs root permissions!" 1>&2
exit 1
fi
if [ "$#" -lt 1 ]; then
echo "Usage: $0 [-a arch] [-m mirror] <chroot>" 1>&2
exit 1
fi
arch="$(uname -m)"
mirror='https://mirrors.slackware.com/slackware/slackware64-current'
# Minimal amount of packages required to run installpkg, removepkg, upgradepkg, explodepkg and makepkg
# All of these exist in the 'a' package set
packages_pkgtools='
aaa_base
aaa_elflibs
bash
coreutils
etc
findutils
glibc-solibs
grep
pkgtools
sed
tar
util-linux
which
xz
'
# Minimal amount of packages required to run slackpkg without the dialog interface
# Supporting https, gpg, and upgrade-all.
# These exist over the 'a', 'ap', 'n' and 'l' package sets
# ca-certificates needs to be installed after openssl for the doinst.sh to run correctly
packages_extra='
bzip2
diffutils
gawk
gnupg
gzip
libpsl
libunistring
pcre2
slackpkg
wget
openssl
ca-certificates
'
# Parse arguments
while getopts "a:m:" opt; do
case "$opt" in
a) arch="$OPTARG" ;;
m)
if [ -d "$OPTARG" ]; then
mirror="$(realpath "$OPTARG")"
else
mirror="$OPTARG"
fi
;;
esac
done
shift $(expr $OPTIND - 1)
[ "$#" -ge 1 ] && [ "$1" = "--" ] && shift
# Build final variables
case "$arch" in
x86_64) pkgmain='slackware64' ;;
*) pkgmain='slackware' ;;
esac
initrd='isolinux/initrd.img'
checksums='CHECKSUMS.md5'
chroot="$(realpath "$1")"
# Create working directory
temp="$(mktemp -d -t "$(basename "$0")".XXXXXX)"
cleanup() {
if mountpoint -q "$temp/mnt/pkg"; then
umount "$temp/mnt/pkg"
rmdir "$temp/mnt/pkg"
fi
mountpoint -q "$temp/mnt" && umount "$temp/mnt"
rm -rf "$temp"
}
trap 'cleanup' EXIT
cd "$temp"
# Function to download (or copy) a file
get() {
if [ -d "$mirror" ]; then
cp "$mirror/$1" "$2"
else
wget "$mirror/$1" -O "$2"
fi
}
# Function to verify files based on the checksums file
check() {
printf '%s' "$(tail +13 CHECKSUMS.md5 | grep "^[0-9a-f]* ./$1$" | cut -d ' ' -f 1) $2" | md5sum -c --quiet -
}
# Get the full path to a package
package() {
tail +13 CHECKSUMS.md5 | grep "^[0-9a-f]* ./$pkgmain/[^/]*/$1-[^-]*-[^-]*-[^-]*\.t.z$" | cut -d ' ' -f 3- | cut -c 3-
}
# Download checksums
get "$checksums" CHECKSUMS.md5
# Download installer initrd.img
get "$initrd" initrd.img
check "$initrd" initrd.img
# Unpack and prepare the installer
xz -cd initrd.img | cpio -id
rm -f initrd.img
mkdir -p pkg "$chroot"
mount --bind "$chroot" mnt
mkdir -p mnt/pkg
mount --bind pkg mnt/pkg
# Download packages
for pkg in $packages_pkgtools $packages_extra; do
path="$(package "$pkg")"
name="$(basename "$path")"
get "$path" "pkg/$name"
check "$path" "pkg/$name"
done
for pkg in $packages_pkgtools; do echo "$(basename "$(package "$pkg")")" >> pkg/__; done
for pkg in $packages_extra; do echo "$(basename "$(package "$pkg")")" >> pkg/_; done
# Bootstrap pkgtools and its dependencies
env -i chroot . sh -l -c 'while read pkg; do /sbin/installpkg --root /mnt --terse "/pkg/$pkg"; done < /pkg/__'
# Install slackpkg and its dependencies
env -i chroot mnt sh -l -c 'while read pkg; do /sbin/installpkg --terse "/pkg/$pkg"; done < /pkg/_'

63
15.0/makechroot.sh

@ -1,63 +0,0 @@
#!/bin/sh -e
set -e
if [ "$(id -u)" != 0 ]; then
echo "This script needs root permissions!" 1>&2
exit 1
fi
if [ "$#" -lt 2 ]; then
echo "Usage: $0 <slackware> <chroot>" 1>&2
exit 1
fi
slackware="$(realpath "$1")"
chroot="$(realpath "$2")"
temp="$(mktemp -d -t makechroot.XXXXXX)"
# Make sure we clean up properly before exitting
cleanup() {
mountpoint -q "$temp/mnt" && umount "$temp/mnt"
mountpoint -q "$temp/dvd" && umount "$temp/dvd"
rm -rf "$temp"
}
trap 'cleanup' EXIT
# Extract the initrd
cd "$temp"
xz -cd "$slackware/isolinux/initrd.img" | cpio -id
# Mount the dvd
mkdir dvd
mount --bind "$slackware" dvd
# Mount the destination
mkdir -p "$chroot"
mount --bind "$chroot" mnt
# Install the packages
env -i chroot . sh -l -c '
/sbin/installpkg --root /mnt --terse /dvd/slackware*/*/*.t?z
cd /mnt
for script in \
04.mkfontdir \
05.fontconfig \
07.update-desktop-database \
07.update-mime-database \
08.gtk-update-icon-cache \
11.cacerts \
cups-genppdupdate
do
var/lib/pkgtools/setup/setup.$script
done
chroot . /usr/bin/update-gtk-immodules > /dev/null 2>&1
HOME=/root chroot . /usr/bin/update-gdk-pixbuf-loaders > /dev/null 2>&1
chroot . /usr/bin/update-pango-querymodules > /dev/null 2>&1
chroot . /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas > /dev/null 2>&1
'
# We only run a few setup scripts that do not require user interaction, and deal with updating caches and such, which is not done (properly) by the doinst.sh scripts.
# To get a full list, run: bzcat MANIFEST.bz2 | awk '{print $6}' | grep '^var/log/setup/setup\.' | sort
# Besides the setup scripts, we also need to run some programs which are usually ran from /etc/rc.d/rc.M, but not from the setup scripts.
# This is tailored to Slackware 15.0-current, I'm unsure whether it'll work properly on any other version.

BIN
antlr-runtime-3.4.jar

Binary file not shown.

10
c89.sh

@ -0,0 +1,10 @@
#!/bin/sh
fl="-std=c89"
for opt; do
case "$opt" in
-ansi|-std=c89|-std=iso9899:1990) fl="";;
-std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
exit 1;;
esac
done
exec gcc $fl ${1+"$@"}

10
c99.sh

@ -0,0 +1,10 @@
#!/bin/sh
fl="-std=c99"
for opt; do
case "$opt" in
-std=c99|-std=iso9899:1999) fl="";;
-std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2
exit 1;;
esac
done
exec gcc $fl ${1+"$@"}

93
create_gcj_jvm.sh

@ -0,0 +1,93 @@
# ---------------------------------------------------------------------------
# This script creates a directory structure below /usr/lib/jvm and populates
# it with symlinks to GCC binaries.
# This will work as a compatibility layer to emulate an Oracle JDK/JRE.
# This emulation is required in order to compile OpenJDK using GNU java.
#
# The same can automatically be achieved in Slackware's gcc packages if
# the 'configure' command is called with the following additional parameters:
# --enable-java-home \
# --with-java-home=/usr/lib$LIBDIRSUFFIX/jvm/jre \
# --with-jvm-root-dir=/usr/lib$LIBDIRSUFFIX/jvm \
# --with-jvm-jar-dir=/usr/lib$LIBDIRSUFFIX/jvm/jvm-exports \
# --with-arch-directory=$LIB_ARCH \
#
# Author: Eric Hameleers <alien@slackware.com> December 2011
# ---------------------------------------------------------------------------
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) export ARCH=i486 ;;
arm*) export ARCH=arm ;;
# Unless $ARCH is already set, use uname -m for all other archs:
*) export ARCH=$( uname -m ) ;;
esac
fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
LIB_ARCH=i386
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
LIB_ARCH=i386
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
LIB_ARCH=amd64
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
LIB_ARCH=$ARCH
fi
# Where does the OpenJDK SlackBuild expect the GNU java compatibility symlinks:
JVM=${1:-/usr/lib${LIBDIRSUFFIX}/jvm}
BINDIR=/usr/bin
# What version of GCC do we have installed:
GCJVER=$(gcj -dumpversion)
# First, remove the old set of symlinks if they should exist:
rm -fr $JVM
# Create a JDK compatible directory structure for GNU java:
mkdir -p $JVM
mkdir -p $JVM/bin
mkdir -p $JVM/jre/bin
mkdir -p $JVM/jre/lib/${LIB_ARCH}/client
mkdir -p $JVM/jre/lib/${LIB_ARCH}/server
mkdir -p $JVM/lib
ln -sf $BINDIR/gjar $JVM/bin/jar
ln -sf $BINDIR/grmic $JVM/bin/rmic
ln -sf $BINDIR/gjavah $JVM/bin/javah
ln -sf $BINDIR/jcf-dump $JVM/bin/javap
ln -sf $BINDIR/gappletviewer $JVM/bin/appletviewer
ln -sf $BINDIR/grmiregistry $JVM/bin/rmiregistry
ln -sf $BINDIR/grmiregistry $JVM/jre/bin/rmiregistry
ln -sf $BINDIR/gkeytool $JVM/bin/keytool
ln -sf $BINDIR/gkeytool $JVM/jre/bin/keytool
ln -sf $BINDIR/gij $JVM/bin/java
ln -sf $BINDIR/ecj $JVM/bin/javac
ln -sf /usr/lib/gcj-${GCJVER}-11/libjvm.so $JVM/jre/lib/${LIB_ARCH}/client/libjvm.so
ln -sf /usr/lib/gcj-${GCJVER}-11/libjvm.so $JVM/jre/lib/${LIB_ARCH}/server/libjvm.so
ln -sf /usr/lib/gcj-${GCJVER}-11/libjawt.so $JVM/jre/lib/${LIB_ARCH}/libjawt.so
ln -sf /usr/share/java/libgcj-${GCJVER}.jar $JVM/jre/lib/rt.jar
ln -sf /usr/share/java/libgcj-tools-${GCJVER}.jar $JVM/lib/tools.jar
ln -sf /usr/include/c++/${GCJVER}/gnu/java $JVM/include
# Add a Eclipse Java Compiler wrapper which is required
# for bootstrapping OpenJDK using GNU java:
cat <<EOT > /usr/bin/ecj
#!/bin/sh
CLASSPATH=/usr/share/java/ecj.jar\${CLASSPATH:+:}\$CLASSPATH \
java org.eclipse.jdt.internal.compiler.batch.Main "\$@"
EOT
chmod 755 /usr/bin/ecj

BIN
ecj-4.9.jar

Binary file not shown.

5
ecj.sh

@ -0,0 +1,5 @@
#!/bin/sh
CLASSPATH=@JAVADIR@/ecj.jar${CLASSPATH:+:}$CLASSPATH \
java org.eclipse.jdt.internal.compiler.batch.Main "$@"

1
ecj.url

@ -0,0 +1 @@
ftp://sourceware.org/pub/java/ecj-4.9.jar

BIN
fastjar-0.97.tar.xz

Binary file not shown.

BIN
fastjar-patches/1000-fastjar-0.97-segfault.patch.gz

Binary file not shown.

BIN
fastjar-patches/1001-fastjar-0.97-len1.patch.gz

Binary file not shown.

BIN
fastjar-patches/1002-fastjar-0.97-filename0.patch.gz

Binary file not shown.

BIN
fastjar-patches/1003-fastjar-CVE-2010-0831.patch.gz

Binary file not shown.

BIN
fastjar-patches/1004-fastjar-man.patch.gz

Binary file not shown.

BIN
gcc-5.5.0.tar.xz

Binary file not shown.

BIN
gcc-5.5.0.tar.xz.sig

Binary file not shown.

BIN
gcc-no_fixincludes.diff.gz

Binary file not shown.

889
gcc.SlackBuild

@ -0,0 +1,889 @@
#!/bin/sh
# GCC package build script (written by volkerdi@slackware.com)
#
# Copyright 2003, 2004 Slackware Linux, Inc., Concord, California, USA
# Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA
# 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.
#
# Modified 2011 by Eric Hameleers <alien at slackware.com> for OpenJDK.
# Some notes, Fri May 16 12:31:32 PDT 2003:
#
# Why i486 and not i386? Because the shared C++ libraries in gcc-3.2.x will
# require 486 opcodes even when a 386 target is used (so we already weren't
# compatible with the i386 for Slackware 9.0, didn't notice, and nobody
# complained :-). gcc-3.3 fixes this issue and allows you to build a 386
# compiler, but the fix is done in a way that produces binaries that are not
# compatible with gcc-3.2.x compiled binaries. To retain compatibility with
# Slackware 9.0, we'll have to use i486 (or better) as the compiler target
# for gcc-3.3.
#
# It's time to say goodbye to i386 support in Slackware. I've surveyed 386
# usage online, and the most common thing I see people say when someone asks
# about running Linux on a 386 is to "run Slackware", but then they also
# usually go on to say "be sure to get an OLD version, like 4.0, before glibc,
# because it'll be more efficient." Now, if that's the general advice, then
# I see no reason to continue 386 support in the latest Slackware (and indeed
# it's no longer easily possible).
# Some more notes, Mon Aug 3 19:49:51 UTC 2015:
#
# Changing to -march=i586 for 32-bit x86 as several things (Mesa being one of
# them) no longer work if constrained to -march=i486. We're not going to use
# -march=i686 since the only additional opcode is CMOV, which is actually less
# efficient on modern CPUs running in 32-bit mode than the alternate i586
# instructions. No need to throw i586 CPUs under the bus (yet).
PKGNAM=gcc
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1_slack14.2}
# How many jobs to run in parallel:
NUMJOBS=" -j 7 "
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
case "$(uname -m)" in
i?86) ARCH=i586 ;;
arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;;
# Unless $ARCH is already set, use uname -m for all other archs:
*) ARCH=$(uname -m) ;;
esac
export ARCH
fi
if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
LIBDIRSUFFIX=""
LIB_ARCH=i386
elif [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
LIB_ARCH=i386
elif [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
LIB_ARCH=i386
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686"
LIBDIRSUFFIX=""
LIB_ARCH=i386
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
LIB_ARCH=s390
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
LIB_ARCH=amd64
elif [ "$ARCH" = "armv7hl" ]; then
SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16"
LIBDIRSUFFIX=""
LIB_ARCH=armv7hl
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
LIB_ARCH=$ARCH
fi
case "$ARCH" in
arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
*) TARGET=$ARCH-slackware-linux ;;
esac
CWD=$(pwd)
# Temporary build location. This should *NOT* be a directory
# path a non-root user could create later...
TMP=${TMP:-"/gcc-$(mcookie)"}
# This is the main DESTDIR target:
PKG1=$TMP/package-gcc
# These are the directories to build other packages in:
PKG2=$TMP/package-gcc-g++
PKG3=$TMP/package-gcc-gfortran
PKG4=$TMP/package-gcc-gnat
PKG5=$TMP/package-gcc-java
PKG6=$TMP/package-gcc-objc
PKG7=$TMP/package-gcc-g++-gch
PKG8=$TMP/package-gcc-go
# Clear the build locations:
if [ -d $TMP ]; then
rm -rf $TMP
fi
mkdir -p $PKG{1,2,3,4,5,6,7,8}/usr/doc/gcc-$VERSION
# Insert package descriptions:
mkdir -p $PKG{1,2,3,4,5,6,7,8}/install
cat $CWD/slack-desc.gcc > $PKG1/install/slack-desc
cat $CWD/slack-desc.gcc-g++ > $PKG2/install/slack-desc
cat $CWD/slack-desc.gcc-gfortran > $PKG3/install/slack-desc
cat $CWD/slack-desc.gcc-gnat > $PKG4/install/slack-desc
cat $CWD/slack-desc.gcc-java > $PKG5/install/slack-desc
cat $CWD/slack-desc.gcc-objc > $PKG6/install/slack-desc
# cat $CWD/slack-desc.gcc-g++-gch > $PKG7/install/slack-desc
cat $CWD/slack-desc.gcc-go > $PKG8/install/slack-desc
cd $TMP
tar xvf $CWD/gcc-$VERSION.tar.?z || exit 1
# Patches based inside the gcc directory go here:
#( cd gcc-$VERSION/gcc
# #zcat $CWD/gcc.66782.diff.gz | patch -p0 --verbose || exit 1
#) || exit 1
# Add ISL to the source
( cd gcc-$VERSION
ISLVER=$(echo $CWD/isl-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
rm -rf isl isl-$ISLVER
tar xvf $CWD/isl-$ISLVER.tar.xz || exit 1
mv isl-$ISLVER isl || exit 1
) || exit 1
# Copy ecj.jar into the TLD of the source. Needed for java compiler.
# This can be retrieved from ftp://sourceware.org/pub/java
cp $CWD/ecj-4.9.jar gcc-$VERSION/ecj.jar
# Use an antlr runtime to compile javadoc.
# The runtime can be obtained from:
#https://oss.sonatype.org/content/repositories/releases/org/antlr/antlr-runtime/
ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1)
# install docs
( cd gcc-$VERSION
# Smite the fixincludes:
zcat $CWD/gcc-no_fixincludes.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
# Add retpoline support:
zcat $CWD/0001-i386-Move-struct-ix86_frame-to-machine_function.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0003-i386-More-use-reference-of-struct-ix86_frame-to-avoi.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0004-i386-Don-t-use-reference-of-struct-ix86_frame.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0005-x86-Add-mindirect-branch-doc.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0005-x86-Add-mindirect-branch.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0006-x86-Add-mfunction-return-doc.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0006-x86-Add-mfunction-return.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0007-x86-Add-mindirect-branch-register-doc.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0007-x86-Add-mindirect-branch-register.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0008-x86-Add-V-register-operand-modifier-doc.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0008-x86-Add-V-register-operand-modifier.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0009-x86-Disallow-mindirect-branch-mfunction-return-with-.diff.gz | patch -p2 --verbose || exit 1
zcat $CWD/0009-x86-Disallow-mindirect-branch-mfunction-return-with-doc.diff.gz | patch -p2 --verbose || exit 1
# Fix perms/owners
chown -R root:root .
find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 754 -exec chmod 755 {} \;
find . -perm 664 -exec chmod 644 {} \;
mkdir -p $PKG1/usr/doc/gcc-$VERSION
cp -a \
COPYING* ChangeLog* FAQ INSTALL \
LAST_UPDATED MAINTAINERS NEWS \
README* *.html \
$PKG1/usr/doc/gcc-$VERSION
# We will keep part of these, but they are really big...
if [ -r ChangeLog ]; then
DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION)
cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
touch -r ChangeLog $DOCSDIR/ChangeLog
fi
if [ -r NEWS ]; then
DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION)
cat NEWS | head -n 1000 > $DOCSDIR/NEWS
touch -r NEWS $DOCSDIR/NEWS
fi
mkdir -p $PKG1/usr/doc/gcc-${VERSION}/gcc
( cd gcc
cp -a \
ABOUT* COPYING* DATESTAMP DEV-PHASE LANG* ONEWS README* SERVICE \
$PKG1/usr/doc/gcc-$VERSION/gcc
mkdir -p $PKG3/usr/doc/gcc-${VERSION}/gcc/fortran
( cd fortran
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog
touch -r ChangeLog $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog
fi
)
mkdir -p $PKG4/usr/doc/gcc-${VERSION}/gcc/ada
( cd ada
cp -a \
ChangeLog.tree-ssa \
$PKG4/usr/doc/gcc-$VERSION/gcc/ada
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG4/usr/doc/gcc-$VERSION/gcc/ada/ChangeLog
touch -r ChangeLog $PKG4/usr/doc/gcc-$VERSION/gcc/ada/ChangeLog
fi
)
mkdir -p $PKG5/usr/doc/gcc-${VERSION}/gcc/java
( cd java
cp -a \
ChangeLog.tree-ssa \
$PKG5/usr/doc/gcc-${VERSION}/gcc/java
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog
touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog
fi
)
mkdir -p $PKG6/usr/doc/gcc-${VERSION}/gcc/objc
( cd objc
cp -a \
README* \
$PKG6/usr/doc/gcc-${VERSION}/gcc/objc
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG6/usr/doc/gcc-${VERSION}/gcc/objc/ChangeLog
touch -r ChangeLog $PKG6/usr/doc/gcc-${VERSION}/gcc/objc/ChangeLog
fi
)
mkdir -p $PKG8/usr/doc/gcc-${VERSION}/gcc/go
( cd go
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG8/usr/doc/gcc-${VERSION}/gcc/go/ChangeLog
touch -r ChangeLog $PKG8/usr/doc/gcc-${VERSION}/gcc/go/ChangeLog
fi
cp -a \
README* THREADS* \
gofrontend/{LICENSE,PATENTS,README} \
$PKG8/usr/doc/gcc-${VERSION}/gcc/go
)
) || exit 1
mkdir -p $PKG3/usr/doc/gcc-${VERSION}/libgfortran
( cd libgfortran
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog
touch -r ChangeLog $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog
fi
)
mkdir -p $PKG4/usr/doc/gcc-${VERSION}/libada
( cd libada
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG4/usr/doc/gcc-${VERSION}/libada/ChangeLog
touch -r ChangeLog $PKG4/usr/doc/gcc-${VERSION}/libada/ChangeLog
fi
)
mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libffi
( cd libffi
cp -a \
ChangeLog.libgcj ChangeLog.v1 \
LICENSE* README* \
$PKG5/usr/doc/gcc-${VERSION}/libffi
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/libffi/ChangeLog
touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/libffi/ChangeLog
fi
)
mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libjava
( cd libjava
cp -a \
COPYING* HACKING LIBGCJ_LICENSE \
NEWS README* THANKS \
$PKG5/usr/doc/gcc-${VERSION}/libjava
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/libjava/ChangeLog
touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/libjava/ChangeLog
fi
)
mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libmudflap
( cd libmudflap
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog
touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog
fi
)
mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libgomp
( cd libgomp
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog
touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog
fi
)
mkdir -p $PKG6/usr/doc/gcc-${VERSION}/libobjc
( cd libobjc
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG6/usr/doc/gcc-${VERSION}/libobjc/ChangeLog
touch -r ChangeLog $PKG6/usr/doc/gcc-${VERSION}/libobjc/ChangeLog
fi
cp -a \
README* THREADS* \
$PKG6/usr/doc/gcc-${VERSION}/libobjc
)
mkdir -p $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3
( cd libstdc++-v3
cp -a \
README* \
doc/html/faq.html \
$PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3
if [ -r ChangeLog ]; then
cat ChangeLog | head -n 1000 > $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog
touch -r ChangeLog $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog
fi
)
)
# Add fastjar to the gcc-java package:
( cd $TMP
FASTJARVER=$(echo $CWD/fastjar-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
echo
echo "Building fastjar-$FASTJARVER first"
echo
rm -rf fastjar-$FASTJARVER
tar xvf $CWD/fastjar-$FASTJARVER.tar.xz || exit 1
cd fastjar-$FASTJARVER || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
for patch in $CWD/fastjar-patches/*.gz ; do
zcat $patch | patch -p1 --verbose || exit 1
done
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib$LIBDIRSUFFIX \
--mandir=/usr/man \
--infodir=/usr/info \
--build=$TARGET
make $NUMJOBS || exit 1
make install DESTDIR=$PKG5 || exit 1
mkdir -p $PKG5/usr/doc/fastjar-$FASTJARVER
cp -a \
AUTHORS CHANGES COPYING* INSTALL NEWS README* TODO \
$PKG5/usr/doc/fastjar-$FASTJARVER
# If there's a ChangeLog, installing at least part of the recent history
# is useful, but don't let it get totally out of control:
if [ -r ChangeLog ]; then
DOCSDIR=$(echo $PKG5/usr/doc/fastjar-$FASTJARVER)
cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
touch -r ChangeLog $DOCSDIR/ChangeLog
fi
find $PKG5 | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
# Compress and if needed symlink the man pages:
if [ -d $PKG5/usr/man ]; then
( cd $PKG5/usr/man
for manpagedir in $(find . -type d -name "man*") ; do
( cd $manpagedir
for eachpage in $( find . -type l -maxdepth 1) ; do
ln -s $( readlink $eachpage ).gz $eachpage.gz
rm $eachpage
done
gzip -9 *.?
)
done
)
fi
# Compress info files, if any:
if [ -d $PKG5/usr/info ]; then
( cd $PKG5/usr/info
rm -f dir
gzip -9 *
)
fi
echo
) || exit 1
# build gcc
( mkdir gcc.build.lnx;
cd gcc.build.lnx;
# If enough people need "treelang" support for it may be considered.
# --enable-languages=ada,c,c++,fortran,java,objc,treelang
# I think it's incorrect to include this option (as it'll end up set
# to i586 on x86 platforms), and we want to tune the binary structure
# for i686, as that's where almost all of the optimization speedups
# are to be found.
# Correct me if my take on this is wrong.
# --with-cpu=$ARCH
if [ "$ARCH" != "x86_64" ]; then
GCC_ARCHOPTS="--with-arch=$ARCH"
else
GCC_ARCHOPTS="--enable-multilib"
fi
# NOTE: For Slackware 15.0, look into removing --with-default-libstdcxx-abi=gcc4-compatible,
# which will then require rebuilding all C++ libraries. That is, if there's any benefit.
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
../gcc-$VERSION/configure --prefix=/usr \
--libdir=/usr/lib$LIBDIRSUFFIX \
--mandir=/usr/man \
--infodir=/usr/info \
--enable-shared \
--enable-bootstrap \
--enable-languages=ada,c,c++,fortran,go,java,lto,objc \
--enable-threads=posix \
--enable-checking=release \
--enable-objc-gc \
--with-system-zlib \
--with-python-dir=/lib$LIBDIRSUFFIX/python2.7/site-packages \
--enable-libstdcxx-dual-abi \
--with-default-libstdcxx-abi=gcc4-compatible \
--disable-libunwind-exceptions \
--enable-__cxa_atexit \
--enable-libssp \
--enable-lto \
--disable-install-libiberty \
--with-gnu-ld \
--verbose \
--enable-java-home \
--with-java-home=/usr/lib$LIBDIRSUFFIX/jvm/jre \
--with-jvm-root-dir=/usr/lib$LIBDIRSUFFIX/jvm \
--with-jvm-jar-dir=/usr/lib$LIBDIRSUFFIX/jvm/jvm-exports \
--with-arch-directory=$LIB_ARCH \
--with-antlr-jar=$ANTLJAR \
--disable-gtktest \
$GCC_ARCHOPTS \
--target=${TARGET} \
--build=${TARGET} \
--host=${TARGET} || exit 1
# Start the build:
# Include all debugging info (for now):
make $NUMJOBS bootstrap;
( cd gcc
make $NUMJOBS gnatlib GNATLIBCFLAGS="$SLKCFLAGS"
# This wants a shared -ladd2line?
#make gnatlib-shared
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
make $NUMJOBS gnattools
)
make info
# Set GCCCHECK=something to run the tests
if [ ! -z $GCCCHECK ]; then
make $NUMJOBS check
fi
make install DESTDIR=$PKG1
# KLUDGE ALERT
# These *gdb.py files are causing ldconfig to complain, so they are going
# to be REMOVED for now... at some point, they might be moved somewhere
# else, in which case things should Just Work(tm). Keep an eye on it.
rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/*gdb.py
# Be sure the "specs" file is installed.
if [ ! -r $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs ]; then
cat stage1-gcc/specs > $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs
fi
# Make our 64bit gcc look for 32bit gcc binaries in ./32 subdirectory:
if [ "$ARCH" = "x86_64" ]; then
sed -i 's#;.\(:../lib !m64 m32;\)$#;32\1#' \
$PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs
fi
# Install liblto_plugin.so for binutils
mkdir -p $PKG1/usr/lib/bfd-plugins
ln -sf ../../libexec/gcc/${TARGET}/${VERSION}/liblto_plugin.so $PKG1/usr/lib/bfd-plugins/liblto_plugin.so
# make ada.install-common DESTDIR=$PKG1
# make install-gnatlib DESTDIR=$PKG1
make -i install-info DESTDIR=$PKG1
chmod 755 $PKG1/usr/lib${LIBDIRSUFFIX}/libgcc_s.so.1
if [ "$ARCH" = "x86_64" ]; then
chmod 755 $PKG1/usr/lib/libgcc_s.so.1
fi
# The (huge) static GNU java libraries are not packaged. In nearly all
# cases one or more dependencies will not be available as static anyway.
rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj.a
rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj-tools.a
if [ "$ARCH" = "x86_64" ]; then
rm -f $PKG1/usr/lib/libgcj.a
rm -f $PKG1/usr/lib/libgcj-tools.a
fi
# Fix stuff up:
( cd $PKG1/usr/info ; rm dir ; gzip -9 * )
( cd $PKG1
# *not* ${LIBDIRSUFFIX}
mkdir -p lib
cd lib
ln -sf /usr/bin/cpp .
)
( cd $PKG1/usr/bin
mv g++ g++-gcc-$VERSION
mv gcc gcc-$VERSION
mv ${TARGET}-gfortran gfortran-gcc-$VERSION
ln -sf g++-gcc-$VERSION g++
ln -sf gcc-$VERSION gcc
ln -sf g++ c++
ln -sf gcc cc
ln -sf gcc-$VERSION ${TARGET}-gcc
ln -sf gcc-$VERSION ${TARGET}-gcc-$VERSION
ln -sf gcc-ar ${TARGET}-gcc-ar
ln -sf gcc-nm ${TARGET}-gcc-nm
ln -sf gcc-ranlib ${TARGET}-gcc-ranlib
ln -sf gcj ${TARGET}-gcj
ln -sf gcjh ${TARGET}-gcjh
ln -sf g++-gcc-$VERSION ${TARGET}-c++
ln -sf g++-gcc-$VERSION ${TARGET}-g++
ln -sf gfortran-gcc-$VERSION gfortran
ln -sf gfortran-gcc-$VERSION ${TARGET}-gfortran
ln -sf gfortran-gcc-$VERSION ${TARGET}-gfortran-$VERSION
ln -sf gfortran-gcc-$VERSION ${TARGET}-g95
ln -sf gfortran g95
ln -sf gfortran f95
ln -sf gfortran-gcc-$VERSION ${TARGET}-g77
ln -sf gfortran g77
ln -sf gfortran f77
cat $CWD/c89.sh > c89
cat $CWD/c99.sh > c99
chmod 755 c89 c99
)
( cd $PKG1/usr/man
gzip -9 */*
cd man1
ln -sf g++.1.gz c++.1.gz
ln -sf gcc.1.gz cc.1.gz
)
## build the txz package
#(
# cd $PKG1;
# makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz
#)
# keep a log
) 2>&1 | tee $TMP/gcc.build.log
# OK, time to split the big package where needed:
# gcc-g++:
( cd $PKG2
mkdir -p usr/bin
mv $PKG1/usr/bin/*++* usr/bin
mkdir -p usr/include
mv $PKG1/usr/include/c++ usr/include
mkdir -p usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/*++* usr/lib${LIBDIRSUFFIX}
if [ "$ARCH" = "x86_64" ]; then
mkdir -p usr/lib
mv $PKG1/usr/lib/*++* usr/lib
fi
mkdir -p usr/libexec/gcc/$TARGET/$VERSION
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1plus usr/libexec/gcc/$TARGET/$VERSION/cc1plus
mkdir -p usr/man/man1
mv $PKG1/usr/man/man1/*++* usr/man/man1
)
# gcc-gfortran:
( cd $PKG3
mkdir -p usr/bin
mv $PKG1/usr/bin/*gfortran* usr/bin
mv $PKG1/usr/bin/*95* usr/bin
mv $PKG1/usr/bin/*77* usr/bin
# Doesn't this seem like a logical idea?
( cd usr/bin ; ln -sf gfortran-gcc-${VERSION} fortran )
mkdir -p usr/info
mv $PKG1/usr/info/gfortran* usr/info
mkdir -p usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgfortran* usr/lib${LIBDIRSUFFIX}
if [ "$ARCH" = "x86_64" ]; then
mkdir -p usr/lib
mv $PKG1/usr/lib/libgfortran* usr/lib
fi
mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/finclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/libgfortran* usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
if [ "$ARCH" = "x86_64" ]; then
mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/32
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/32/finclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/32
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/32/libgfortran* usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/32
fi
mkdir -p usr/libexec/gcc/$TARGET/$VERSION
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/f951 usr/libexec/gcc/$TARGET/$VERSION/f951
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/libgfortran* usr/libexec/gcc/$TARGET/$VERSION
mkdir -p usr/man/man1
mv $PKG1/usr/man/man1/gfortran* usr/man/man1
)
# gcc-gnat:
# First, relocate usr/bin/gnative2ascii to the gcc-java package so it
# isn't matched and accidentally put in gcc-gnat:
mkdir -p $PKG5/usr/bin
mv $PKG1/usr/bin/gnative2ascii $PKG5/usr/bin
# Now make the gcc-gnat package tree:
( cd $PKG4
mkdir -p usr/bin
mv $PKG1/usr/bin/gnat* usr/bin
mv $PKG1/usr/bin/gpr* usr/bin
mkdir -p usr/info
mv $PKG1/usr/info/gnat* usr/info
mkdir -p usr/libexec/gcc/$TARGET/$VERSION
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/gnat1 usr/libexec/gcc/$TARGET/$VERSION
mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adainclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adalib usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
if [ "$ARCH" = "x86_64" ]; then
mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/32
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/32/adainclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/32
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/32/adalib usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/32
fi
)
# gcc-java:
( cd $PKG5
mkdir -p usr/bin
mv $PKG1/usr/bin/aot-compile usr/bin
mv $PKG1/usr/bin/addr2name.awk usr/bin
# mv $PKG1/usr/bin/fastjar usr/bin
mv $PKG1/usr/bin/gappletviewer usr/bin
mv $PKG1/usr/bin/gc-analyze usr/bin
mv $PKG1/usr/bin/*gcj* usr/bin
mv $PKG1/usr/bin/gij usr/bin
mv $PKG1/usr/bin/gjar usr/bin
mv $PKG1/usr/bin/gjarsigner usr/bin
mv $PKG1/usr/bin/gjdoc usr/bin
mv $PKG1/usr/bin/gkeytool usr/bin
mv $PKG1/usr/bin/grepjar usr/bin
mv $PKG1/usr/bin/grmid usr/bin
mv $PKG1/usr/bin/grmic usr/bin
mv $PKG1/usr/bin/grmiregistry usr/bin
mv $PKG1/usr/bin/gserialver usr/bin
mv $PKG1/usr/bin/gtnameserv usr/bin
mv $PKG1/usr/bin/gjavah usr/bin
mv $PKG1/usr/bin/gorbd usr/bin
mv $PKG1/usr/bin/jar usr/bin
mv $PKG1/usr/bin/jcf-dump usr/bin
mv $PKG1/usr/bin/jv-* usr/bin
mv $PKG1/usr/bin/rmi* usr/bin
mkdir -p usr/include/c++/$VERSION
# Move some Java only C++ headers from the C++ package:
mv $PKG2/usr/include/c++/$VERSION/{gcj,gnu,java,javax,org,sun} usr/include/c++/$VERSION
mv $PKG1/usr/include/ffi.h usr/include
mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jawt.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/ffi.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/ffitarget.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jawt_md.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jni.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jni_md.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jvmpi.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/libffi usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
# aot-compile Python plugins:
if [ ! -d $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 ]; then
echo "NO $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 !"
exit 1
fi
mv $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 usr/lib${LIBDIRSUFFIX}
mkdir -p usr/info
mv $PKG1/usr/info/gcj.* usr/info
# mv $PKG1/usr/info/fastjar.* usr/info
mkdir -p usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/libffi* usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/logging.properties usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcj* usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj* usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgij* usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/lib-org* usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/security usr/lib${LIBDIRSUFFIX}
mkdir -p usr/lib${LIBDIRSUFFIX}/pkgconfig
mv $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig/libgcj*.pc usr/lib${LIBDIRSUFFIX}/pkgconfig
rmdir $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig 2> /dev/null
if [ "$ARCH" = "x86_64" ]; then
mkdir -p usr/lib
mv $PKG1/usr/lib/libffi* usr/lib
mv $PKG1/usr/lib/logging.properties usr/lib
mv $PKG1/usr/lib/gcj* usr/lib
mv $PKG1/usr/lib/libgcj* usr/lib
mv $PKG1/usr/lib/libgij* usr/lib
mv $PKG1/usr/lib/lib-org* usr/lib
mv $PKG1/usr/lib/security usr/lib
mkdir -p usr/lib/pkgconfig
mv $PKG1/usr/lib/pkgconfig/libgcj*.pc usr/lib/pkgconfig
rmdir $PKG1/usr/lib/pkgconfig 2> /dev/null
fi
mkdir -p usr/libexec/gcc/$TARGET/$VERSION
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/jc1 usr/libexec/gcc/$TARGET/$VERSION
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/ecj1 usr/libexec/gcc/$TARGET/$VERSION
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/jvgenmain usr/libexec/gcc/$TARGET/$VERSION
mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/gcj usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mkdir -p usr/man/man1
mv $PKG1/usr/man/man1/aot-compile.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gappletviewer.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gc-analyze.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gcj.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gcjh.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gcj-dbtool.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gij.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gjar.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gjarsigner.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gjavah.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gjdoc.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gjnih.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gkeytool.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gnative2ascii.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gorbd.1.gz usr/man/man1
mv $PKG1/usr/man/man1/grmic.1.gz usr/man/man1
mv $PKG1/usr/man/man1/grmid.1.gz usr/man/man1
mv $PKG1/usr/man/man1/grmiregistry.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gserialver.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gtnameserv.1.gz usr/man/man1
mv $PKG1/usr/man/man1/jcf-dump.1.gz usr/man/man1
mv $PKG1/usr/man/man1/jv-convert.1.gz usr/man/man1
mv $PKG1/usr/man/man1/jv-scan.1.gz usr/man/man1
mv $PKG1/usr/man/man1/rebuild-gcj-db.1.gz usr/man/man1
mkdir -p usr/man/man3
mv $PKG1/usr/man/man3/ffi* usr/man/man3
mkdir -p usr/share
mv $PKG1/usr/share/java usr/share
# The ecj wrapper script:
cat $CWD/ecj.sh | sed -e "s,@JAVADIR@,/usr/share/java," > usr/bin/ecj
chmod 755 usr/bin/ecj
# The JAVA_HOME compatibility links.
# Caution: non-multilib arch-independent stuff! No lib64 here.
mkdir -p usr/lib$LIBDIRSUFFIX
mv $PKG1/usr/lib$LIBDIRSUFFIX/jvm* usr/lib$LIBDIRSUFFIX
# And add the missing javac symlink:
ln -s ../../../bin/ecj usr/lib$LIBDIRSUFFIX/jvm/bin/javac
# Don't package libffi stuff anymore. GCC will link the internal version
# statically, and we'll need a newer one elsewhere.
find . -name "ffi*.h" | xargs rm
find . -name "libffi*" | xargs rm
rm -f usr/man/man3/ffi*
rm -f usr/info/libffi*
)
# gcc-objc:
( cd $PKG6
mkdir -p usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/libobjc* usr/lib${LIBDIRSUFFIX}
if [ "$ARCH" = "x86_64" ]; then
mkdir -p usr/lib
mv $PKG1/usr/lib/libobjc* usr/lib
fi
mkdir -p usr/libexec/gcc/$TARGET/$VERSION
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1obj usr/libexec/gcc/$TARGET/$VERSION
mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/objc usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
)
## NOTE: Thought about this, because the precompiled headers are so large.
## Probably easier to keep everything together, though.
## gcc-g++-gch (precompiled c++ headers)
#( cd $PKG7
# mkdir -p usr/include/c++/$VERSION/$TARGET/bits
# mv $PKG2/usr/include/c++/$VERSION/$TARGET/bits/stdc++.h.gch usr/include/c++/$VERSION/$TARGET/bits
#)
# gcc-go:
( cd $PKG8
mkdir -p usr/bin
mv $PKG1/usr/bin/*gccgo* usr/bin
mv $PKG1/usr/bin/go{,fmt} usr/bin
mkdir -p usr/libexec/gcc/$TARGET/$VERSION
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/{cgo,go1} usr/libexec/gcc/$TARGET/$VERSION
mkdir -p usr/info
mv $PKG1/usr/info/gccgo.info.gz usr/info
mkdir -p usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/go usr/lib${LIBDIRSUFFIX}
mv $PKG1/usr/lib${LIBDIRSUFFIX}/{libgo.la,libgo.so*,libgobegin.a,libgolibbegin.a,libnetgo.a} usr/lib${LIBDIRSUFFIX} || exit 1
# Ordinarily Slackware doesn't package static libraries, but in this case
# it is useful for deploying compiled binaries on machines that do not yet
# have libgo.so.0.0.0.
mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgo.a usr/lib${LIBDIRSUFFIX}
if [ "$ARCH" = "x86_64" ]; then
mkdir -p usr/lib
mv $PKG1/usr/lib/go usr/lib
mv $PKG1/usr/lib/{libgo.la,libgo.so*,libgobegin.a,libgolibbegin.a,libnetgo.a} usr/lib || exit 1
# Ordinarily Slackware doesn't package static libraries, but in this case
# it is useful for deploying compiled binaries on machines that do not yet
# have libgo.so.0.0.0.
mv $PKG1/usr/lib/libgo.a usr/lib
fi
mkdir -p usr/man/man1
mv $PKG1/usr/man/man1/gccgo.1.gz usr/man/man1
mv $PKG1/usr/man/man1/go.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gofmt.1.gz usr/man/man1
) || exit 1
# Filter all .la files (thanks much to Mark Post for the sed script):
( cd $TMP
for file in $(find . -type f -name "*.la") ; do
cat $file | sed -e 's%-L/gcc-[[:graph:]]* % %g' > $TMP/tmp-la-file
cat $TMP/tmp-la-file > $file
done
rm $TMP/tmp-la-file
)
## Strip bloated binaries and libraries:
for dir in $PKG{1,2,3,4,5,6,8}; do
( cd $dir
find . -name "lib*so*" -exec strip --strip-unneeded "{}" \;
find . -name "lib*a" -exec strip -g "{}" \;
strip --strip-unneeded usr/bin/* 2> /dev/null
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
done
( cd $PKG1
makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz )
( cd $PKG2
makepkg -l y -c n $TMP/gcc-g++-$VERSION-$ARCH-$BUILD.txz )
( cd $PKG3
makepkg -l y -c n $TMP/gcc-gfortran-$VERSION-$ARCH-$BUILD.txz )
( cd $PKG4
makepkg -l y -c n $TMP/gcc-gnat-$VERSION-$ARCH-$BUILD.txz )
( cd $PKG5
makepkg -l y -c n $TMP/gcc-java-$VERSION-$ARCH-$BUILD.txz )
( cd $PKG6
makepkg -l y -c n $TMP/gcc-objc-$VERSION-$ARCH-$BUILD.txz )
#( cd $PKG7
# makepkg -l y -c n $TMP/gcc-g++-gch-$VERSION-$ARCH-$BUILD.txz )
( cd $PKG8
makepkg -l y -c n $TMP/gcc-go-$VERSION-$ARCH-$BUILD.txz )
echo
echo "Slackware GCC package build complete!"
echo

BIN
isl-0.18.tar.xz

Binary file not shown.

15
readme.txt

@ -1,15 +0,0 @@
This repo contains all my slackware modifications of the base install.
Additional packages are contained in RocketLinux and built in a non-standard manner.
This branch contains a few scripts I use, related to slackware.
- kernel.SlackBuild is capable of building a near-identical slackware kernel
- convert32pkg.sh converts a 32bit package to be installable on 64bit (by
removing everything present in the 64bit package).
It is only designed to support some packages in the official slackware iso,
because there's all kinds of packages that need special treatment,
especially for their doinst.sh scripts.
- massconvert32.sh calls convert32pkg.sh over an entire package directory
- update-repo.sh is my shitty implementation of a slackware repo generator,
that tries to generate everything as close to the official slackware repo as
possible.

19
slack-desc.gcc

@ -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 ':'.
|-----handy-ruler------------------------------------------------------|
gcc: gcc (Base GCC package with C support)
gcc:
gcc: GCC is the GNU Compiler Collection.
gcc:
gcc: This package contains those parts of the compiler collection needed to
gcc: compile C code. Other packages add Ada, C++, Fortran, Go,
gcc: Objective-C, and Java support to the compiler core.
gcc:
gcc:
gcc:
gcc:

19
slack-desc.gcc-g++

@ -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 ':'.
|-----handy-ruler------------------------------------------------------|
gcc-g++: gcc-g++ (C++ for GCC)
gcc-g++:
gcc-g++: C++ support for the GNU Compiler Collection.
gcc-g++:
gcc-g++: This package contains those parts of the compiler collection needed to
gcc-g++: compile C++ code. The base gcc package is also required.
gcc-g++:
gcc-g++:
gcc-g++:
gcc-g++:
gcc-g++:

19
slack-desc.gcc-gfortran

@ -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 ':'.
|-----handy-ruler------------------------------------------------------|
gcc-gfortran: gcc-gfortran (Fortran support for GCC)
gcc-gfortran:
gcc-gfortran: The GNU Fortran compiler is fully compliant with the Fortran 95
gcc-gfortran: Standard and includes legacy F77 support. In addition, a significant
gcc-gfortran: number of Fortran 2003 and Fortran 2008 features are implemented.
gcc-gfortran: GNU Fortran also contains many standard and extensions and can be
gcc-gfortran: used to run real-world programs.
gcc-gfortran:
gcc-gfortran: This package contains those parts of the compiler collection
gcc-gfortran: needed to compile Fortran code. The gcc package is also required.
gcc-gfortran:

19
slack-desc.gcc-gnat

@ -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 ':'.
|-----handy-ruler------------------------------------------------------|
gcc-gnat: gcc-gnat (Ada support for GCC)
gcc-gnat:
gcc-gnat: Ada support for the GNU Compiler Collection.
gcc-gnat:
gcc-gnat: This package contains those parts of the compiler collection needed to
gcc-gnat: compile Ada code. GNAT implements Ada 95, Ada 2005 and Ada 2012, and
gcc-gnat: it may also be invoked in Ada 83 compatibility mode. By default, GNAT
gcc-gnat: assumes Ada 2012. The base gcc package is also required.
gcc-gnat:
gcc-gnat:
gcc-gnat:

19
slack-desc.gcc-go

@ -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 ':'.
|-----handy-ruler------------------------------------------------------|
gcc-go: gcc-go (Go support for GCC)
gcc-go:
gcc-go: Go is a compiled, garbage-collected, concurrent programming language
gcc-go: developed by Google Inc. The initial design of Go was started in
gcc-go: September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson.
gcc-go: Rob Pike has stated that Go is being used "for real stuff" at Google.
gcc-go: Go's "gc" compiler targets the Linux, Mac OS X, FreeBSD, OpenBSD and
gcc-go: Microsoft Windows operating systems, and the i386, amd64, and ARM
gcc-go: processor architectures.
gcc-go:
gcc-go: Homepage: http://golang.org

19
slack-desc.gcc-java

@ -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 ':'.
|-----handy-ruler------------------------------------------------------|
gcc-java: gcc-java (Java support for GCC)
gcc-java:
gcc-java: Java support for the GNU Compiler Collection.
gcc-java:
gcc-java: This package contains those parts of the compiler collection needed to
gcc-java: compile programs written in the Java programming language. The base
gcc-java: gcc package is also required.
gcc-java:
gcc-java:
gcc-java:
gcc-java:

19
slack-desc.gcc-objc

@ -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 ':'.
|-----handy-ruler------------------------------------------------------|
gcc-objc: gcc-objc (Objective-C support for GCC)
gcc-objc:
gcc-objc: Objective-C support for the GNU Compiler Collection.
gcc-objc:
gcc-objc: This package contains those parts of the compiler collection needed to
gcc-objc: compile code written in Objective-C. Objective-C was originally
gcc-objc: developed to add object-oriented extensions to the C language, and is
gcc-objc: best known as the native language of the NeXT computer.
gcc-objc:
gcc-objc: The base gcc package is also required.
gcc-objc:
Loading…
Cancel
Save