mirror of
https://github.com/KeithDHedger/LFSPkg.git
synced 2026-01-14 03:01:32 +00:00
345 lines
7.7 KiB
Bash
Executable File
345 lines
7.7 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
#©keithhedger Thu 5 Oct 11:51:31 BST 2023 kdhedger68713@gmail.com
|
|
|
|
. /usr/share/LFSPkg/LFSFunctions
|
|
|
|
SCRIPTPKGNAME="${SCRIPTPKGNAME:-$NAME}"
|
|
SCRIPTTARNAME=""
|
|
SCRIPTPKGVERSION=""
|
|
SCRIPTPKGSECTION=""
|
|
SCRIPTSUFFIX=""
|
|
SCRIPTTARBALL=""
|
|
SCRIPTARCHIVEDIR=""
|
|
SCRIPTTARURL=""
|
|
|
|
getBool ()
|
|
{
|
|
if [[ -z "$1" ]];then
|
|
echo 0
|
|
else
|
|
echo 1
|
|
fi
|
|
}
|
|
|
|
makeGetArchive ()
|
|
{
|
|
local gitoptions=""
|
|
|
|
if [ $ISGITREPO -eq 0 ];then
|
|
echo gettar \"${SCRIPTPKGARCHIVEDIR}/\${TARBALL}\" \$SECTION
|
|
else
|
|
if [[ $GITTYPE = "tag" ]];then
|
|
gitoptions=" --branch ${GITTAG} --single-branch"
|
|
fi
|
|
|
|
cat<<EOF
|
|
mkdir -p \${SOURCEARCHIVES}/GITREPOS
|
|
pushd \${SOURCEARCHIVES}/GITREPOS
|
|
if [[ ! -e \${TARNAME} ]];then
|
|
git clone ${SCRIPTPKGTARURL}/\${TARNAME}.git$gitoptions
|
|
EOF
|
|
if [[ $GITTYPE = "commit" ]];then
|
|
cat<<EOF
|
|
cd \${TARNAME}
|
|
git reset --hard ${GITTAG}
|
|
git clean -df
|
|
EOF
|
|
fi
|
|
cat<<EOF
|
|
else
|
|
if [ "X\${DOWHAT:0:2}" = "Xup" ];then
|
|
cd \${TARNAME}
|
|
git pull
|
|
fi
|
|
fi
|
|
popd
|
|
EOF
|
|
fi
|
|
}
|
|
|
|
makeCommonHeader ()
|
|
{
|
|
mkdir -vp $SCRIPTPKGNAME||true
|
|
echo -e "#!/bin/bash\n#©$USER $(date)\n\n. /usr/share/LFSPkg/LFSFunctions\n">${SCRIPTPKGNAME}/preinstall
|
|
echo -e "#!/bin/bash\n#©$USER $(date)\n\n. /usr/share/LFSPkg/LFSFunctions\n">${SCRIPTPKGNAME}/postinstall
|
|
|
|
infodata=$(lfspkg -I ${SCRIPTPKGNAME} 2>/dev/null) 2>/dev/null||true
|
|
if [ "X$infodata" != X ];then
|
|
echo "$infodata" > ${SCRIPTPKGNAME}/info
|
|
fi
|
|
|
|
cat >"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"<< EOF
|
|
#!/bin/bash -e
|
|
|
|
. /usr/share/LFSPkg/LFSFunctions
|
|
|
|
trap 'echo -e "\$0 \${RED}FAILED\${NORMAL} at line \${GREEN}\${LINENO}\${NORMAL}"' ERR
|
|
|
|
DEPENDS=""
|
|
if ! lfspkg -B "\$DEPENDS";then
|
|
exit 100
|
|
fi
|
|
|
|
PKGNAME="$SCRIPTPKGNAME"
|
|
TARNAME="$SCRIPTTARNAME"
|
|
VERSION="$SCRIPTPKGVERSION"
|
|
BUILD=\${BUILD:-1}
|
|
SECTION="$SCRIPTPKGSECTION"
|
|
SUFFIX="LFSPKG"
|
|
$(if [ $ISGITREPO -eq 0 ];then echo "TARBALL=\"\${TARNAME}-\${VERSION}${SCRIPTPKGSUFFIX}\"";else echo TARBALL=\"\";fi)
|
|
PKG="\${OUTPUT}/\${PKGNAME}"
|
|
DOWHAT=\${1:-"build"}
|
|
CWD=\$(pwd)
|
|
|
|
rm -rf "\$PKG" || true
|
|
mkdir -p "\$PKG"
|
|
scriptLog "\${PKGNAME}-\${VERSION}"
|
|
EOF
|
|
if [ $ISPIP -eq 0 ];then
|
|
cat >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"<< EOF
|
|
$(makeGetArchive)
|
|
|
|
if [ \$USESYSTEMD -eq 0 ];then
|
|
:
|
|
fi
|
|
|
|
pushd \$COMPILEAT 2>/dev/null||true
|
|
EOF
|
|
else
|
|
echo -e "\npip install --root="\$PKG" \${TARNAME}\n" >> "${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"
|
|
return
|
|
fi
|
|
|
|
if [ $ISGITREPO -eq 0 ];then
|
|
echo -e "\textractarchive \"\${SOURCEARCHIVES}/\${SECTION}/\${TARBALL}\"" >> "${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"
|
|
echo -e "\tpushd \"\${TARNAME}-\${VERSION}\"" >> "${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"
|
|
else
|
|
echo -e "\tpushd \"\${SOURCEARCHIVES}/GITREPOS/\${TARNAME}\"" >> "${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"
|
|
fi
|
|
}
|
|
|
|
makeCommonFooter ()
|
|
{
|
|
if [ $ISPIP -eq 0 ];then
|
|
TABS=" "
|
|
TAB1=" "
|
|
else
|
|
TAB1=""
|
|
TABS=" "
|
|
fi
|
|
|
|
if [ $ISPIP -eq 0 ];then
|
|
cat >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"<< EOF
|
|
${TABS}popd
|
|
|
|
EOF
|
|
fi
|
|
|
|
cat >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"<< EOF
|
|
${TAB1}checketc \$PKG
|
|
${TAB1}packageclean "\$PKG" "\$CWD"
|
|
|
|
${TAB1}pushd "\$PKG"
|
|
${TAB1}${TABS}lfspkg -n "\$PKGNAME" -p "\$VERSION" -d "\$SECTION" -b "\$BUILD" -s "\$SUFFIX" -m
|
|
${TAB1}popd
|
|
|
|
${TAB1}case \$DOWHAT in
|
|
${TAB1}${TABS}up*)
|
|
${TAB1}${TABS}${TABS}lfspkg "^\${PKGNAME}-[0-9][0-9]*" "\${PKGARCHIVES}/\${SECTION}/\${PKGNAME}-\${VERSION}-\${BUILD}_\${SECTION}_\${SUFFIX}.tar.gz" -u
|
|
${TAB1}${TABS}${TABS};;
|
|
${TAB1}${TABS}"install")
|
|
${TAB1}${TABS}${TABS}lfspkg "\${PKGARCHIVES}/\${SECTION}/\${PKGNAME}-\${VERSION}-\${BUILD}_\${SECTION}_\${SUFFIX}.tar.gz" -i
|
|
${TAB1}${TABS}${TABS};;
|
|
${TAB1}${TABS}"build")
|
|
${TAB1}${TABS}${TABS}echo "Just built"
|
|
${TAB1}${TABS}${TABS};;
|
|
${TAB1}${TABS}*)
|
|
${TAB1}${TABS}${TABS}echo "*** Unknown command ***"
|
|
${TAB1}${TABS}${TABS}exit 1
|
|
${TAB1}esac
|
|
EOF
|
|
if [ $ISPIP -eq 0 ];then
|
|
cat >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"<< EOF
|
|
|
|
${TAB1}rm -rf "\$PKG"$(if [ $ISGITREPO -eq 0 ];then echo " "\"\${TARNAME}-\${VERSION}\";fi)
|
|
popd 2>/dev/null||true
|
|
EOF
|
|
else
|
|
cat >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"<< EOF
|
|
|
|
${TAB1}rm -rf "\$PKG"
|
|
EOF
|
|
fi
|
|
}
|
|
|
|
getScriptData ()
|
|
{
|
|
local url bn section
|
|
|
|
url=${DOWNLOADARCHIVE}
|
|
bn="$(basename "$url")"
|
|
section="$(basename "$(pwd)")"
|
|
|
|
SCRIPTPKGSECTION=${section^^}
|
|
SCRIPTPKGARCHIVEDIR=$(dirname "$url")
|
|
SCRIPTPKGVERSION=$PKGVERSION
|
|
|
|
if [ $ISGITREPO -eq 0 ];then
|
|
if [[ -z "$NAME" ]];then
|
|
SCRIPTPKGNAME=${bn%-?*}
|
|
SCRIPTTARNAME="\$PKGNAME"
|
|
else
|
|
SCRIPTPKGNAME="$NAME"
|
|
SCRIPTTARNAME="${bn%-?*}"
|
|
fi
|
|
if [[ -z $PKGVERSION ]];then
|
|
SCRIPTPKGVERSION="$(echo ${bn##?*-}|sed -n 's/\([[:digit:]][\.[[:digit:]]*]*\)\...*/\1/p')"
|
|
fi
|
|
SCRIPTPKGSUFFIX="$(echo ${bn##?*-}|sed -n 's/[[:digit:]][\.[[:digit:]]*]*\(\...*\)/\1/p')"
|
|
SCRIPTPKGTARBALL=${SCRIPTPKGNAME}-${SCRIPTPKGVERSION}.${SCRIPTPKGSUFFIX}
|
|
SCRIPTPKGTARURL=${SCRIPTPKGARCHIVEDIR}/${SCRIPTPKGTARBALL}
|
|
else
|
|
SCRIPTPKGNAME="${SCRIPTPKGNAME:-${bn%.git}}"
|
|
if [[ -z $PKGVERSION ]];then
|
|
SCRIPTPKGVERSION="$LFSVERSION"
|
|
fi
|
|
SCRIPTPKGTARURL=${SCRIPTPKGARCHIVEDIR}
|
|
if [[ -z "$NAME" ]];then
|
|
SCRIPTTARNAME="\$PKGNAME"
|
|
else
|
|
SCRIPTTARNAME="$(basename "$bn" .git)"
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
if false;then
|
|
echo -------------------
|
|
echo SCRIPTPKGNAME=$SCRIPTPKGNAME
|
|
echo SCRIPTTARNAME=$SCRIPTTARNAME
|
|
echo SCRIPTPKGVERSION=$SCRIPTPKGVERSION
|
|
echo SCRIPTPKGSECTION=$SCRIPTPKGSECTION
|
|
echo SCRIPTPKGSUFFIX=$SCRIPTPKGSUFFIX
|
|
echo SCRIPTPKGTARBALL=$SCRIPTPKGTARBALL
|
|
echo SCRIPTPKGARCHIVEDIR=$SCRIPTPKGARCHIVEDIR
|
|
echo SCRIPTPKGTARURL=$SCRIPTPKGTARURL
|
|
echo GITTAG=$GITTAG
|
|
echo ===================
|
|
echo $NAME
|
|
echo $PKGVERSION
|
|
echo +++++++++++++++++++
|
|
fi
|
|
}
|
|
|
|
makeConfigureScript ()
|
|
{
|
|
cat >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"<< EOF
|
|
CFLAGS="\$LFSFLAGS" CXXFLAGS="\$LFSFLAGS" ./configure \${CONFIGOPTIONS}
|
|
make \$MAKEFLAGS||make -j1|| exit 100
|
|
make install DESTDIR=\$PKG || exit 100
|
|
EOF
|
|
}
|
|
|
|
makeMesonScript ()
|
|
{
|
|
cat >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"<< EOF
|
|
mkdir -p build
|
|
cd build
|
|
CFLAGS="\$LFSFLAGS" CXXFLAGS="\$LFSFLAGS" meson setup \${MESONCONFIGOPTIONS} ..
|
|
ninja \$MAKEFLAGS||ninja -j1||exit 100
|
|
DESTDIR=\$PKG ninja install
|
|
EOF
|
|
}
|
|
|
|
makeCMakeScript ()
|
|
{
|
|
cat >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"<< EOF
|
|
mkdir -p build
|
|
cd build
|
|
cmake \$CMAKEOPTIONS ..
|
|
make \$MAKEFLAGS||make -j1|| exit 100
|
|
make install DESTDIR=\$PKG || exit 100
|
|
EOF
|
|
}
|
|
|
|
makePerlScript ()
|
|
{
|
|
cat >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"<< EOF
|
|
perl Makefile.PL
|
|
make \$MAKEFLAGS||make -j1|| exit 100
|
|
make install DESTDIR=\$PKG || exit 100
|
|
EOF
|
|
}
|
|
|
|
makePythonScript ()
|
|
{
|
|
if [[ ${1} -eq 2 ]] || [[ ${1} -eq 23 ]];then
|
|
echo -e "\t\tpython2 setup.py build||exit 100" >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"
|
|
echo -e "\t\tpython2 setup.py install --optimize=1 --root=\$PKG||exit 100" >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"
|
|
fi
|
|
if [[ $1 -eq 3 ]] || [[ ${1} -eq 23 ]];then
|
|
echo -e "\t\tpython3 setup.py build||exit 100" >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"
|
|
echo -e "\t\tpython3 setup.py install --optimize=1 --root=\$PKG||exit 100" >>"${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"
|
|
fi
|
|
}
|
|
|
|
DOWNLOADARCHIVE="$2"
|
|
ISGITREPO=$(getBool "$3")
|
|
GITTYPE=""
|
|
GITTAG=""
|
|
|
|
case "${3%%=?*}" in
|
|
tag)
|
|
GITTYPE="tag"
|
|
GITTAG=${3##?*=}
|
|
;;
|
|
commit)
|
|
GITTYPE="commit"
|
|
GITTAG=${3##?*=}
|
|
;;
|
|
git)
|
|
GITTYPE="git"
|
|
GITTAG=""
|
|
;;
|
|
esac
|
|
|
|
getScriptData
|
|
if [[ ${1} = "pip" ]];then
|
|
ISPIP=1
|
|
SCRIPTPKGVERSION=$(pip index versions $SCRIPTPKGNAME 2>/dev/null|head -n1|sed 's/.*(\(.*\))/\1/')
|
|
else
|
|
ISPIP=0
|
|
fi
|
|
|
|
makeCommonHeader
|
|
|
|
case ${1} in
|
|
conf*)
|
|
makeConfigureScript
|
|
;;
|
|
meson)
|
|
makeMesonScript
|
|
;;
|
|
cmake)
|
|
makeCMakeScript
|
|
;;
|
|
perl)
|
|
makePerlScript
|
|
;;
|
|
python)
|
|
makePythonScript 23
|
|
;;
|
|
python2)
|
|
makePythonScript 2
|
|
;;
|
|
python3)
|
|
makePythonScript 3
|
|
;;
|
|
esac
|
|
|
|
makeCommonFooter
|
|
chmod +x "${SCRIPTPKGNAME}/$SCRIPTPKGNAME.LFSBuild"
|
|
chmod +x "${SCRIPTPKGNAME}/preinstall"
|
|
chmod +x "${SCRIPTPKGNAME}/postinstall"
|