I compile from git, but must admit I've been using xfce most of the time recently, Cinnamon cam be a little heavy with mem use.
Anyhow, my compile script , bugs and lazy code included
I've added a few comments , but not many
You must remove any mint apt repos from your source.list(s)
the below script will pull in needed dependencies,
It sets up what I call a 'dumb repo'
My intention was to improve on that with one of these
https://wiki.debian.org/HowToSetupADebianRepository
Probably reprepro
If something is broken, script will exit
You fix it ( the script or the source ) anc re-run the script
It will skip past already built packages
Note, this script does not fix branding, the menu button will be mint's, but you can manually set it to deb swirl once 'up and running'
It is 'bleeding edge' cinnamon
If you know git ( or read up on it ) you should be able to set release branches
Code:
#!/bin/bash
BuildDir=$HOME/Src/Cinnamon
CleanForBuild () {
for debpkg in cinnamon cinnamon-bluetooth cinnamon-common cinnamon-control-center cinnamon-control-center-data cinnamon-dbg cinnamon-desktop-data cinnamon-screensaver cinnamon-session cinnamon-session-common cinnamon-settings-daemon cinnamon-settings-daemon-dev cinnamon-translations cjs gir1.2-cinnamondesktop-3.0 gir1.2-muffin-3.0 gir1.2-nemo-3.0 libcinnamon-control-center1 libcinnamon-control-center-dev libcinnamon-desktop0 libcinnamon-desktop-dev libcjs0c libcjs-dev libmuffin0 libmuffin-dev libnemo-extension1 libnemo-extension-dev muffin muffin-common muffin-dbg nemo nemo-compare nemo-data nemo-dbg nemo-dropbox nemo-fileroller nemo-media-columns nemo-pastebin nemo-preview nemo-rabbitvcs nemo-seahorse nemo-share python-nemo cinnamon-bluetooth cinnamon-control-center cinnamon-screensaver cinnamon-session cinnamon-settings-daemon libcinnamon-control-center1 libcjs0c libmuffin0 nemo-data;do sudo apt-get remove -y $debpkg;done
}
# ^^ not proud of that... I put no effort into it
# I just stuffed it in one day
#
DEBS=${BuildDir}/DEBS-$(date +%F)
[[ -e "$DEBS" ]] || CleanForBuild
mkdir -p ${DEBS} 2>/dev/null
BuildStatus=${DEBS}/.BuildStatus
GPGKey="your key here" # or just don't bother
# change the -k${GPGKey} below ( see compile() ) to -uc
# -uc will prevent 'error' as dpkg-buildpackage won't attempt to sign change files
CinnamonRepo=git://github.com/linuxmint/
BuildTools(){
sudo /usr/bin/apt-get update
sudo /usr/bin/apt-get install -y build-essential devscripts git dpkg-dev && \
touch .build-essentialDone || exit 1
}
gitclean(){
# had some issues where deb scripts messed with stuff
git checkout -- $(git status | awk '$2 == "modified:"{printf $3" "}')
}
GitCO(){
[[ -d $GitRepo ]] || git clone ${CinnamonRepo}${GitRepo}.git \
&& ( pushd ${GitRepo} && gitclean && git pull origin )
return $?
}
CheckBuildDeps(){
echo "Checking BuildDeps"
BuildDeps="$(dpkg-checkbuilddeps 2>&1 | awk 'BEGIN{RS=")"};{sub(/dpkg.*Unmet build dependencies:/,"",$0);gsub(/ \(>=.*$/,"",$0);print
f $0}')"
[[ "${BuildDeps}" == "" ]] || sudo /usr/bin/apt-get install -y --force-yes ${BuildDeps}
return $?
}
Compile(){
dpkg-buildpackage -tc -b -k${GPGKey} -j$(grep ^processor /proc/cpuinfo | wc -l)
return $?
}
Install(){
debsign ../*.deb
mv ../*.{deb,changes} ${DEBS}/
pushd "${DEBS}"
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
popd
sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/Cinnamon.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
return $?
}
#
mkdir -p ${BuildDir}
cd ${BuildDir}
[[ ! -e .build-essentialDone ]] && BuildTools
sudo sh -c "echo deb file:${DEBS}/ ./ > /etc/apt/sources.list.d/Cinnamon.list"
# Note, you may need to add/remove stuff from this list
# or possibly reorder things
for GitRepo in \
cinnamon-desktop \
muffin \
cjs \
cinnamon-translations \
cinnamon-session \
nemo \
cinnamon-settings-daemon \
cinnamon-control-center \
Cinnamon \
cinnamon-screensaver \
cinnamon-bluetooth \
nemo-extensions \
;do
grep -q "^${GitRepo}$" "${BuildStatus}" && continue
GitCO || exit 1
case $GitRepo in
nemo-extensions)
pushd $GitRepo || exit 1
for extension in $(find ./ -maxdepth 1 -mindepth 1 -type d ! -name .git );do
grep -q "^${extension//\.\/}$" "${BuildStatus}" && continue
#[[ $extension =~ nemo-preview ]] && continue
pushd ${extension}
CheckBuildDeps || exit 1
Compile && Install || ( [[ $extension =~ nemo-preview ]] && continue || exit 1 )
# nemo-preview kept breaking
popd
echo ${extension//\.\/} >> "${BuildStatus}"
done
;;
cinnamon-translations)
pushd $GitRepo || exit 1
CheckBuildDeps || exit 1
Compile && Install || exit 1
;;
*)
pushd $GitRepo || exit 1
CheckBuildDeps || exit 1
Compile && Install || exit 1
;;
esac
popd
echo $GitRepo >> $BuildStatus
done
sudo /usr/bin/apt-get install -y --force-yes cinnamon muffin nemo cinnamon-bluetooth cinnamon-control-center cinnamon-screensaver cinnamon-session cinnamon-settings-daemon libcinnamon-control-center1 libcjs0c libmuffin0 nemo-data
exit 0