Radix cross Linux 3pp sources

RcL sources – is a tree of Third Party and Radix source tarballs

343 Commits   0 Branches   0 Tags
author: kx <kx@radix.pro> 2023-04-07 15:29:50 +0300 committer: kx <kx@radix.pro> 2023-04-07 15:29:50 +0300 commit: d8b69aa468bb1efa108e032ccde0b85fa63a5c64 parent: 63c35171c66d6e0f9add54c01bf81c127b0d9384
Commit Summary:
X packages
Diffstat:
67 files changed, 2646 insertions, 0 deletions
diff --git a/packages/Makefile b/packages/Makefile
index 012cafa..a72fa5c 100644
--- a/packages/Makefile
+++ b/packages/Makefile
@@ -7,6 +7,7 @@
 SUBDIRS := b \
            d \
            s \
+           x \
            y
 
 
diff --git a/packages/x/Makefile b/packages/x/Makefile
new file mode 100644
index 0000000..ae0b3d1
--- /dev/null
+++ b/packages/x/Makefile
@@ -0,0 +1,74 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := Vulkan               \
+           WindowMaker          \
+           conky                \
+           dejavu-fonts         \
+           dejavu-fonts-ttf     \
+           desktop-file-utils   \
+           feh                  \
+           fontconfig           \
+           fonts-tlwg           \
+           freeglut             \
+           gimp                 \
+           glew                 \
+           glu                  \
+           gst-plugins-bad      \
+           gst-plugins-base     \
+           gst-plugins-good     \
+           gst-plugins-ugly     \
+           gstreamer            \
+           hicolor-icon-theme   \
+           libdrm               \
+           libepoxy             \
+           liberation-fonts     \
+           liberation-fonts-ttf \
+           libevdev             \
+           libglvnd             \
+           libinput             \
+           libtxc_dxtn          \
+           libvdpau             \
+           libwacom             \
+           libxkbcommon         \
+           lxappearance         \
+           lxappearance-obconf  \
+           lxinput              \
+           mesa                 \
+           mesa-demos           \
+           mozilla-firefox      \
+           mozilla-thunderbird  \
+           mtdev                \
+           nitrogen             \
+           obconf               \
+           openbox              \
+           pyxdg                \
+           qt5                  \
+           startup-notification \
+           terminus-font        \
+           thaixfonts           \
+           tint2                \
+           vaapi                \
+           xdg-user-dirs        \
+           xdg-utils            \
+           xterm
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/x/Vulkan/Makefile b/packages/x/Vulkan/Makefile
new file mode 100644
index 0000000..32d0809
--- /dev/null
+++ b/packages/x/Vulkan/Makefile
@@ -0,0 +1,31 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := Vulkan-Docs                 \
+           Vulkan-ExtensionLayer-sdk   \
+           Vulkan-Headers-sdk          \
+           Vulkan-Loader-sdk           \
+           Vulkan-LunarG-Tools-sdk     \
+           Vulkan-Tools-sdk            \
+           Vulkan-ValidationLayers-sdk \
+           gfxreconstruct
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/x/Vulkan/Vulkan-Docs/Makefile b/packages/x/Vulkan/Vulkan-Docs/Makefile
new file mode 100644
index 0000000..0da98a9
--- /dev/null
+++ b/packages/x/Vulkan/Vulkan-Docs/Makefile
@@ -0,0 +1,59 @@
+#
+# Project Home:
+# ============
+# https://github.com/KhronosGroup/Vulkan-Docs
+#
+# Clone:
+# =====
+# https://github.com/KhronosGroup/Vulkan-Docs.git
+#
+
+url        = https://github.com/KhronosGroup
+
+repo_name  = Vulkan-Docs
+pkg_name   = vulkan-docs
+suffix     = tar.xz
+
+versions   = 1.3.239
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=v`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/Vulkan/Vulkan-ExtensionLayer-sdk/Makefile b/packages/x/Vulkan/Vulkan-ExtensionLayer-sdk/Makefile
new file mode 100644
index 0000000..f04bcc2
--- /dev/null
+++ b/packages/x/Vulkan/Vulkan-ExtensionLayer-sdk/Makefile
@@ -0,0 +1,59 @@
+#
+# Project Home:
+# ============
+# https://github.com/KhronosGroup/Vulkan-ExtensionLayer
+#
+# Clone:
+# =====
+# https://github.com/KhronosGroup/Vulkan-ExtensionLayer.git
+#
+
+url        = https://github.com/KhronosGroup
+
+repo_name  = Vulkan-ExtensionLayer
+pkg_name   = vulkan-extension-layer-sdk
+suffix     = tar.xz
+
+versions   = 1.3.239.0
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=sdk-`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/Vulkan/Vulkan-Headers-sdk/Makefile b/packages/x/Vulkan/Vulkan-Headers-sdk/Makefile
new file mode 100644
index 0000000..829c527
--- /dev/null
+++ b/packages/x/Vulkan/Vulkan-Headers-sdk/Makefile
@@ -0,0 +1,59 @@
+#
+# Project Home:
+# ============
+# https://github.com/KhronosGroup/Vulkan-Headers
+#
+# Clone:
+# =====
+# https://github.com/KhronosGroup/Vulkan-Headers.git
+#
+
+url        = https://github.com/KhronosGroup
+
+repo_name  = Vulkan-Headers
+pkg_name   = vulkan-headers-sdk
+suffix     = tar.xz
+
+versions   = 1.3.239.0
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=sdk-`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/Vulkan/Vulkan-Loader-sdk/Makefile b/packages/x/Vulkan/Vulkan-Loader-sdk/Makefile
new file mode 100644
index 0000000..8a04654
--- /dev/null
+++ b/packages/x/Vulkan/Vulkan-Loader-sdk/Makefile
@@ -0,0 +1,59 @@
+#
+# Project Home:
+# ============
+# https://github.com/KhronosGroup/Vulkan-Loader
+#
+# Clone:
+# =====
+# https://github.com/KhronosGroup/Vulkan-Loader.git
+#
+
+url        = https://github.com/KhronosGroup
+
+repo_name  = Vulkan-Loader
+pkg_name   = vulkan-loader-sdk
+suffix     = tar.xz
+
+versions   = 1.3.239.0
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=sdk-`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/Vulkan/Vulkan-LunarG-Tools-sdk/Makefile b/packages/x/Vulkan/Vulkan-LunarG-Tools-sdk/Makefile
new file mode 100644
index 0000000..d93dda7
--- /dev/null
+++ b/packages/x/Vulkan/Vulkan-LunarG-Tools-sdk/Makefile
@@ -0,0 +1,65 @@
+#
+# Project Home:
+# ============
+# https://github.com/LunarG/VulkanTools
+#
+# Clone:
+# =====
+# https://github.com/LunarG/VulkanTools.git
+#
+
+url        = https://github.com/LunarG
+
+repo_name  = VulkanTools
+pkg_name   = vulkan-lunarg-tools-sdk
+suffix     = tar.xz
+
+versions   = 1.3.239.0
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=sdk-`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) ; \
+	      git submodule update --init ; \
+	      git archive --format=tar --prefix=$(pkg_name)-$${version}/ --output=../$(pkg_name)-$${version}.tar $${tag} ; \
+	      cmd="git submodule foreach --recursive 'git archive --format=tar --prefix=$(pkg_name)-$${version}/\$$sm_path/ HEAD --output=\$$toplevel/../$(pkg_name)-$${version}-sub-\$$sha1.tar'" ; \
+	      eval $${cmd} ; \
+	    ) ; \
+	    tar --concatenate --file $(pkg_name)-$${version}.tar $(pkg_name)-$${version}-sub-*.tar ; \
+	    rm -f $(pkg_name)-$${version}-sub-*.tar ; \
+	    xz $(pkg_name)-$${version}.tar ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/Vulkan/Vulkan-Tools-sdk/Makefile b/packages/x/Vulkan/Vulkan-Tools-sdk/Makefile
new file mode 100644
index 0000000..487b632
--- /dev/null
+++ b/packages/x/Vulkan/Vulkan-Tools-sdk/Makefile
@@ -0,0 +1,59 @@
+#
+# Project Home:
+# ============
+# https://github.com/KhronosGroup/Vulkan-Tools
+#
+# Clone:
+# =====
+# https://github.com/KhronosGroup/Vulkan-Tools.git
+#
+
+url        = https://github.com/KhronosGroup
+
+repo_name  = Vulkan-Tools
+pkg_name   = vulkan-tools-sdk
+suffix     = tar.xz
+
+versions   = 1.3.239.0
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=sdk-`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/Vulkan/Vulkan-ValidationLayers-sdk/Makefile b/packages/x/Vulkan/Vulkan-ValidationLayers-sdk/Makefile
new file mode 100644
index 0000000..1b41e15
--- /dev/null
+++ b/packages/x/Vulkan/Vulkan-ValidationLayers-sdk/Makefile
@@ -0,0 +1,59 @@
+#
+# Project Home:
+# ============
+# https://github.com/KhronosGroup/Vulkan-ValidationLayers
+#
+# Clone:
+# =====
+# https://github.com/KhronosGroup/Vulkan-ValidationLayers.git
+#
+
+url        = https://github.com/KhronosGroup
+
+repo_name  = Vulkan-ValidationLayers
+pkg_name   = vulkan-validation-layers-sdk
+suffix     = tar.xz
+
+versions   = 1.3.239.0
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=sdk-`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/Vulkan/gfxreconstruct/Makefile b/packages/x/Vulkan/gfxreconstruct/Makefile
new file mode 100644
index 0000000..fb2a6af
--- /dev/null
+++ b/packages/x/Vulkan/gfxreconstruct/Makefile
@@ -0,0 +1,65 @@
+#
+# Project Home:
+# ============
+# https://github.com/LunarG/gfxreconstruct
+#
+# Clone:
+# =====
+# https://github.com/LunarG/gfxreconstruct.git
+#
+
+url        = https://github.com/LunarG
+
+repo_name  = gfxreconstruct
+pkg_name   = gfxreconstruct
+suffix     = tar.xz
+
+versions   = 1.3.239.0
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=sdk-`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) ; \
+	      git submodule update --init ; \
+	      git archive --format=tar --prefix=$(pkg_name)-$${version}/ --output=../$(pkg_name)-$${version}.tar $${tag} ; \
+	      cmd="git submodule foreach --recursive 'git archive --format=tar --prefix=$(pkg_name)-$${version}/\$$sm_path/ HEAD --output=\$$toplevel/../$(pkg_name)-$${version}-sub-\$$sha1.tar'" ; \
+	      eval $${cmd} ; \
+	    ) ; \
+	    tar --concatenate --file $(pkg_name)-$${version}.tar $(pkg_name)-$${version}-sub-*.tar ; \
+	    rm -f $(pkg_name)-$${version}-sub-*.tar ; \
+	    xz $(pkg_name)-$${version}.tar ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/WindowMaker/Makefile b/packages/x/WindowMaker/Makefile
new file mode 100644
index 0000000..bba0b80
--- /dev/null
+++ b/packages/x/WindowMaker/Makefile
@@ -0,0 +1,73 @@
+#
+# Project Home:
+# ============
+# http://windowmaker.org
+#
+# Git:
+# ===
+# https://repo.or.cz/wmaker-crm.git
+#
+
+url        = https://repo.or.cz
+
+repo_name  = wmaker-crm
+pkg_name   = WindowMaker
+
+#
+# List of 'amber' branch versions to be extracted:
+# ===============================================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = f9bc310fa686c226da42164ca04462e32a314b15:0.95.9
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(pkg_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$hash | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	    tar xJf $(pkg_name)-$$version.$(suffix) ; \
+	    ( cd $(pkg_name)-$$version ; ./autogen.sh ; rm -rf autom4te.cache ; rm -f .git* *~ ) ; \
+	    tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	    rm -rf $(pkg_name)-$$version ; \
+	  fi ; \
+	done
+
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/conky/Makefile b/packages/x/conky/Makefile
new file mode 100644
index 0000000..0a2b830
--- /dev/null
+++ b/packages/x/conky/Makefile
@@ -0,0 +1,63 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/conky
+#
+# GitHub:
+# ======
+# https://github.com/brndnmtthws/conky
+#
+# Clone:
+# =====
+# git clone https://github.com/brndnmtthws/conky.git
+#
+
+url         = https://github.com/brndnmtthws
+
+repo_name  = conky
+pkg_name   = conky
+suffix     = tar.xz
+
+versions   = 1.18.3
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=v`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/dejavu-fonts-ttf/Makefile b/packages/x/dejavu-fonts-ttf/Makefile
new file mode 100644
index 0000000..e2c2590
--- /dev/null
+++ b/packages/x/dejavu-fonts-ttf/Makefile
@@ -0,0 +1,44 @@
+#
+# Project Home:
+# ============
+#   https://dejavu-fonts.github.io
+#
+# Downloads:
+# =========
+#   https://dejavu-fonts.github.io/Download.html
+#
+# GitHub:
+# ======
+#   https://github.com/dejavu-fonts/dejavu-fonts/releases/download/version_2_37/dejavu-fonts-2.37-ttf.tar.bz2
+#   https://ftp.radix.pro/3pp/fonts/dejavu
+#
+
+url         = https://ftp.radix.pro/3pp/fonts/dejavu
+
+versions    = 2.37
+
+pkg_name    = dejavu-fonts-ttf
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/dejavu-fonts/Makefile b/packages/x/dejavu-fonts/Makefile
new file mode 100644
index 0000000..48349ac
--- /dev/null
+++ b/packages/x/dejavu-fonts/Makefile
@@ -0,0 +1,75 @@
+#
+# Project Home:
+# ============
+#   https://dejavu-fonts.github.io
+#
+# Downloads:
+# =========
+#   https://dejavu-fonts.github.io/Download.html
+#
+# GitHub:
+# ======
+#   git clone https://github.com/dejavu-fonts/dejavu-fonts.git
+#   https://github.com/dejavu-fonts/dejavu-fonts/releases/download/version_2_37/dejavu-fonts-2.37.tar.bz2
+#
+
+url        = https://github.com/dejavu-fonts
+
+repo_name  = dejavu-fonts
+pkg_name   = dejavu-fonts
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = e055422f2643c8dc4718fb2269daeb3f707ccc4b:2.35
+revisions += fd97ab8eb2b5f5bc41af2cce4583954b7d0903c2:2.36
+revisions += 0eda8a319c08835009849583cd090bb5b141ce25:2.37
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(pkg_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$hash | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/desktop-file-utils/Makefile b/packages/x/desktop-file-utils/Makefile
new file mode 100644
index 0000000..9dca63a
--- /dev/null
+++ b/packages/x/desktop-file-utils/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.freedesktop.org/wiki/Software/desktop-file-utils
+#
+# Downloads:
+# =========
+# https://www.freedesktop.org/software/desktop-file-utils/releases
+#
+
+url         = https://www.freedesktop.org/software/desktop-file-utils/releases
+
+versions    = 0.22 0.26
+
+pkgname     = desktop-file-utils
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/feh/Makefile b/packages/x/feh/Makefile
new file mode 100644
index 0000000..46f4232
--- /dev/null
+++ b/packages/x/feh/Makefile
@@ -0,0 +1,63 @@
+#
+# Project Home:
+# ============
+# https://feh.finalrewind.org
+#
+# cGit:
+# ====
+# https://git.finalrewind.org/feh
+#
+# Clone:
+# =====
+# git clone https://git.finalrewind.org/feh.git
+#
+
+url        = https://git.finalrewind.org
+
+repo_name  = feh
+pkg_name   = feh
+suffix     = tar.xz
+
+versions   = 3.9.1
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name) $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/fontconfig/Makefile b/packages/x/fontconfig/Makefile
new file mode 100644
index 0000000..948f7a5
--- /dev/null
+++ b/packages/x/fontconfig/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.freedesktop.org/wiki/Software/fontconfig
+#
+# Downloads:
+# =========
+# https://www.freedesktop.org/software/fontconfig/release
+#
+
+url         = https://www.freedesktop.org/software/fontconfig/release
+
+versions    = 2.13.95
+
+pkgname     = fontconfig
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/fonts-tlwg/Makefile b/packages/x/fonts-tlwg/Makefile
new file mode 100644
index 0000000..c40f7ff
--- /dev/null
+++ b/packages/x/fonts-tlwg/Makefile
@@ -0,0 +1,24 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := ttf-tlwg
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/x/fonts-tlwg/ttf-tlwg/Makefile b/packages/x/fonts-tlwg/ttf-tlwg/Makefile
new file mode 100644
index 0000000..eada5cf
--- /dev/null
+++ b/packages/x/fonts-tlwg/ttf-tlwg/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://linux.thai.net/projects/thaixfonts
+#
+# Downloads:
+# =========
+# https://linux.thai.net/pub/thailinux/software/fonts-tlwg/fonts
+#
+
+url         = https://linux.thai.net/pub/thailinux/software/fonts-tlwg/fonts
+
+versions    = 0.7.3
+
+pkgname     = ttf-tlwg
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/freeglut/Makefile b/packages/x/freeglut/Makefile
new file mode 100644
index 0000000..c80776d
--- /dev/null
+++ b/packages/x/freeglut/Makefile
@@ -0,0 +1,63 @@
+#
+# Project Home:
+# ============
+# https://freeglut.sourceforge.net
+#
+# GitHub:
+# ======
+# https://github.com/FreeGLUTProject/freeglut
+#
+# Clone:
+# =====
+# git clone https://github.com/FreeGLUTProject/freeglut.git
+#
+
+url        = https://github.com/FreeGLUTProject
+
+repo_name  = freeglut
+pkg_name   = freeglut
+suffix     = tar.xz
+
+versions   = 3.4.0
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=v`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/gimp/Makefile b/packages/x/gimp/Makefile
new file mode 100644
index 0000000..7079d0f
--- /dev/null
+++ b/packages/x/gimp/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.gimp.org
+#
+# Downloads:
+# =========
+# https://download.gimp.org/pub/gimp
+#
+
+
+url       = https://download.gimp.org/pub
+
+versions  = 2.8.6 2.8.14 2.8.16 2.9.2 2.10.34
+
+pkg_name  = gimp
+arch_type = tar.bz2
+suffixes  = $(arch_type)
+
+files     = $(foreach suffix, $(suffixes), $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions))))
+
+tarballs  = $(addsuffix .$(arch_type), $(addprefix $(pkg_name)-, $(versions)))
+sha1s     = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(files) $(sha1s)
+
+
+.PHONY: downloads_clean
+
+$(files):
+	@echo -e "\n======= Downloading '$(pkg_name)' sourses =======\n"
+	@for version in $(versions) ; do \
+	  major_minor=`echo $$version | sed 's/\([0-9][.0-9][0-9]*\)\([\.].*\)/\1/'` ; \
+	  for suffix in $(suffixes) ; do \
+	    wget -N $(url)/$(pkg_name)/v$$major_minor/$(pkg_name)-$$version.$$suffix ;  \
+	  done ; \
+	done
+
+$(sha1s): %.$(arch_type).sha1sum : %.$(arch_type)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -f $(files) $(sha1s)
diff --git a/packages/x/glew/Makefile b/packages/x/glew/Makefile
new file mode 100644
index 0000000..8f3e357
--- /dev/null
+++ b/packages/x/glew/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://glew.sourceforge.net
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/project/glew/glew/${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/glew/glew
+
+versions    = 1.11.0 1.12.0 1.13.0 2.2.0
+
+pkgname     = glew
+suffix      = tgz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9][.0-9]*[.0-9]*\)\(\..*\)/\2/'` ; \
+	  wget -N $(url)/$$version/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/glu/Makefile b/packages/x/glu/Makefile
new file mode 100644
index 0000000..5b8609a
--- /dev/null
+++ b/packages/x/glu/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.mesa3d.org
+#
+# Downloads:
+# =========
+# https://archive.mesa3d.org/glu
+#
+
+url         = https://archive.mesa3d.org/glu
+
+versions    = 9.0.2
+
+pkgname     = glu
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/gst-plugins-bad/Makefile b/packages/x/gst-plugins-bad/Makefile
new file mode 100644
index 0000000..d337b1a
--- /dev/null
+++ b/packages/x/gst-plugins-bad/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://gstreamer.com
+# https://gstreamer.freedesktop.org
+#
+# Downloads:
+# =========
+# https://gstreamer.freedesktop.org/src
+# https://gstreamer.freedesktop.org/src/gst-plugins-bad
+#
+
+url         = https://gstreamer.freedesktop.org/src/gst-plugins-bad
+
+versions    = 1.22.0 1.22.1
+
+pkgname     = gst-plugins-bad
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/gst-plugins-base/Makefile b/packages/x/gst-plugins-base/Makefile
new file mode 100644
index 0000000..ff9797e
--- /dev/null
+++ b/packages/x/gst-plugins-base/Makefile
@@ -0,0 +1,42 @@
+#
+# Project Home:
+# ============
+# https://gstreamer.com
+# https://gstreamer.freedesktop.org
+#
+# Downloads:
+# =========
+# https://gstreamer.freedesktop.org/src
+# https://gstreamer.freedesktop.org/src/gst-plugins-base
+#
+
+url         = https://gstreamer.freedesktop.org/src/gst-plugins-base
+
+versions    = 0.10.36 1.4.5 1.6.4 1.7.1 1.8.2
+versions   += 1.22.0 1.22.1
+
+pkgname     = gst-plugins-base
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/gst-plugins-good/Makefile b/packages/x/gst-plugins-good/Makefile
new file mode 100644
index 0000000..dc9750e
--- /dev/null
+++ b/packages/x/gst-plugins-good/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://gstreamer.com
+# https://gstreamer.freedesktop.org
+#
+# Downloads:
+# =========
+# https://gstreamer.freedesktop.org/src
+# https://gstreamer.freedesktop.org/src/gst-plugins-good
+#
+
+url         = https://gstreamer.freedesktop.org/src/gst-plugins-good
+
+versions    = 1.22.0 1.22.1
+
+pkgname     = gst-plugins-good
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/gst-plugins-ugly/Makefile b/packages/x/gst-plugins-ugly/Makefile
new file mode 100644
index 0000000..0df9a54
--- /dev/null
+++ b/packages/x/gst-plugins-ugly/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://gstreamer.com
+# https://gstreamer.freedesktop.org
+#
+# Downloads:
+# =========
+# https://gstreamer.freedesktop.org/src
+# https://gstreamer.freedesktop.org/src/gst-plugins-ugly
+#
+
+url         = https://gstreamer.freedesktop.org/src/gst-plugins-ugly
+
+versions    = 1.22.0 1.22.1
+
+pkgname     = gst-plugins-ugly
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/gstreamer/Makefile b/packages/x/gstreamer/Makefile
new file mode 100644
index 0000000..30a7d83
--- /dev/null
+++ b/packages/x/gstreamer/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://gstreamer.com
+# https://gstreamer.freedesktop.org
+#
+# Downloads:
+# =========
+# https://gstreamer.freedesktop.org/src
+# https://gstreamer.freedesktop.org/src/gstreamer
+#
+
+url         = http://gstreamer.freedesktop.org/src/gstreamer
+
+versions    = 0.10.36 1.4.5 1.6.4 1.7.1 1.8.2 1.22.0
+
+pkgname     = gstreamer
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/hicolor-icon-theme/Makefile b/packages/x/hicolor-icon-theme/Makefile
new file mode 100644
index 0000000..3598ab0
--- /dev/null
+++ b/packages/x/hicolor-icon-theme/Makefile
@@ -0,0 +1,74 @@
+#
+# Project Home:
+# ============
+# https://cgit.freedesktop.org/xdg/default-icon-theme
+#
+# cGit:
+# ====
+# https://cgit.freedesktop.org/xdg/default-icon-theme
+#
+# Clone:
+# =====
+# git clone git://anongit.freedesktop.org/xdg/default-icon-theme
+# git clone https://anongit.freedesktop.org/git/xdg/default-icon-theme.git
+#
+
+url        = git://anongit.freedesktop.org/git/xdg/default-icon-theme
+
+repo_name  = default-icon-theme
+
+prefix     = hicolor-icon-theme
+
+#
+# List of tags to be extracted:
+#
+TAGS       = 0.12 0.13 0.14 0.15 0.17
+
+suffix     = tar.xz
+
+git_repo   = .git_clone
+versions   = $(foreach tag, $(TAGS), $(shell echo $(tag)))
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(prefix)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@if [ "$(url)" = 'git://radix.pro' ]; then \
+	   git clone $(url)/$(repo_name).git $(repo_name) ; \
+	 else \
+	   git clone $(url) $(repo_name) ; \
+	 fi
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for tag in $(TAGS) ; do \
+	  version=`echo $$tag` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(prefix)-$$version/ $$tag | \
+	      xz >../$(prefix)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/libdrm/Makefile b/packages/x/libdrm/Makefile
new file mode 100644
index 0000000..0dd4205
--- /dev/null
+++ b/packages/x/libdrm/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://dri.freedesktop.org/wiki
+#
+# Downloads:
+# =========
+# https://dri.freedesktop.org/libdrm
+#
+
+url         = https://dri.freedesktop.org/libdrm
+
+versions    = 2.4.114
+
+pkgname     = libdrm
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/libepoxy/Makefile b/packages/x/libepoxy/Makefile
new file mode 100644
index 0000000..f26fbd5
--- /dev/null
+++ b/packages/x/libepoxy/Makefile
@@ -0,0 +1,65 @@
+#
+# Project Home:
+# ============
+#   https://github.com/anholt/libepoxy
+#
+# Gitweb:
+#   https://github.com/anholt/libepoxy
+#
+# Clone:
+# =====
+#   git clone https://github.com/anholt/libepoxy.git
+#
+
+url        = https://github.com/anholt/libepoxy.git
+
+repo_name  = libepoxy
+
+versions   = 1.5.10
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url) $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  if [ ! -f $(repo_name)-$$version.tar.xz ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.tar.xz' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$version | \
+	      xz >../$(repo_name)-$$version.tar.xz ) ; \
+	  fi ; \
+	done
+
+#	  tar xjf $(repo_name)-$$version.tar.bz2 ; \
+#	  ( cd $(repo_name)-$$version ; ./autogen.sh ; make distclean ; rm -rf autom4te.cache ) ; \
+#	  tar cjf $(repo_name)-$$version.tar.bz2 $(repo_name)-$$version ; \
+#	  rm -rf $(repo_name)-$$version ; \
+
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/liberation-fonts-ttf/Makefile b/packages/x/liberation-fonts-ttf/Makefile
new file mode 100644
index 0000000..fc11bac
--- /dev/null
+++ b/packages/x/liberation-fonts-ttf/Makefile
@@ -0,0 +1,44 @@
+#
+# Project Home:
+# ============
+#   https://github.com/liberationfonts/liberation-fonts
+#
+# Downloads:
+# =========
+#   https://github.com/liberationfonts/liberation-fonts/releases
+#
+# GitHub:
+# ======
+#   git clone https://github.com/liberationfonts/liberation-fonts.git
+#   https://ftp.radix.pro/3pp/fonts/liberation
+#
+
+url         = https://ftp.radix.pro/3pp/fonts/liberation
+
+versions    = 2.1.5
+
+pkg_name    = liberation-fonts-ttf
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/liberation-fonts/Makefile b/packages/x/liberation-fonts/Makefile
new file mode 100644
index 0000000..6239a9a
--- /dev/null
+++ b/packages/x/liberation-fonts/Makefile
@@ -0,0 +1,72 @@
+#
+# Project Home:
+# ============
+#   https://github.com/liberationfonts/liberation-fonts
+#
+# Downloads:
+# =========
+#   https://github.com/liberationfonts/liberation-fonts/releases
+#
+# GitHub:
+# ======
+#   git clone https://github.com/liberationfonts/liberation-fonts.git
+#
+
+url        = https://github.com/liberationfonts
+
+repo_name  = liberation-fonts
+pkg_name   = liberation-fonts
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 4b0192046158094654e865245832c66d2104219e:2.1.5
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(pkg_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$hash | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/libevdev/Makefile b/packages/x/libevdev/Makefile
new file mode 100644
index 0000000..45a95d4
--- /dev/null
+++ b/packages/x/libevdev/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.freedesktop.org/wiki/Software/libevdev
+#
+# Downloads:
+# =========
+# https://www.freedesktop.org/software/libevdev
+#
+
+url         = https://www.freedesktop.org/software/libevdev
+
+versions    = 1.3 1.3.1 1.3.2 1.4.6 1.5.1 1.12.1 1.13.0
+
+pkgname     = libevdev
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/libglvnd/Makefile b/packages/x/libglvnd/Makefile
new file mode 100644
index 0000000..d8dde4a
--- /dev/null
+++ b/packages/x/libglvnd/Makefile
@@ -0,0 +1,71 @@
+#
+# Project Home:
+# ============
+# https://gitlab.freedesktop.org/glvnd/libglvnd
+#
+# GitLab:
+# ======
+# https://gitlab.freedesktop.org/glvnd/libglvnd
+#
+# Clone:
+# =====
+# git clone https://gitlab.freedesktop.org/glvnd/libglvnd.git
+#
+
+url        = https://gitlab.freedesktop.org/glvnd
+
+repo_name  = libglvnd
+
+#
+# List of versions to be extracted:
+# ================================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = b05bbcdaeb9b700cf7877e6d66f8fc3ac952295b:1.6.0
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/libinput/Makefile b/packages/x/libinput/Makefile
new file mode 100644
index 0000000..ea9798b
--- /dev/null
+++ b/packages/x/libinput/Makefile
@@ -0,0 +1,63 @@
+#
+# Project Home:
+# ============
+# https://www.freedesktop.org/wiki/Software/libinput
+#
+# GitLab:
+# ======
+# https://gitlab.freedesktop.org/libinput/libinput
+#
+# Clone:
+# =====
+# git clone https://gitlab.freedesktop.org/libinput/libinput.git
+#
+
+url         = https://gitlab.freedesktop.org/libinput
+
+repo_name  = libinput
+pkg_name   = libinput
+suffix     = tar.xz
+
+versions   = 1.22.1
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/libtxc_dxtn/Makefile b/packages/x/libtxc_dxtn/Makefile
new file mode 100644
index 0000000..60640cd
--- /dev/null
+++ b/packages/x/libtxc_dxtn/Makefile
@@ -0,0 +1,44 @@
+#
+# Project Home:
+# ============
+# https://dri.freedesktop.org/wiki/S3TC
+# https://people.freedesktop.org/~cbrill/libtxc_dxtn
+#
+# Git:
+# ===
+# https://cgit.freedesktop.org/~mareko/libtxc_dxtn
+#
+# Downloads:
+# =========
+# https://people.freedesktop.org/~cbrill/libtxc_dxtn
+#
+
+url         = https://people.freedesktop.org/~cbrill/libtxc_dxtn
+
+versions    = 1.0.1
+
+pkgname     = libtxc_dxtn
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/libvdpau/Makefile b/packages/x/libvdpau/Makefile
new file mode 100644
index 0000000..9f59b0e
--- /dev/null
+++ b/packages/x/libvdpau/Makefile
@@ -0,0 +1,67 @@
+#
+# Project Home:
+# ============
+# https://freedesktop.org/wiki/Software/vaapi
+#
+# Cgit:
+# ====
+# https://cgit.freedesktop.org/~aplattner/libvdpau
+#
+# Clone:
+# =====
+# git clone git://people.freedesktop.org/~aplattner/libvdpau
+#
+# Downloads:
+# =========
+# https://people.freedesktop.org/~aplattner/vdpau
+#
+
+url        = git://people.freedesktop.org/~aplattner
+
+repo_name  = libvdpau
+pkg_name   = libvdpau
+suffix     = tar.xz
+
+versions   = 1.5
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/libwacom/Makefile b/packages/x/libwacom/Makefile
new file mode 100644
index 0000000..00fe5b0
--- /dev/null
+++ b/packages/x/libwacom/Makefile
@@ -0,0 +1,69 @@
+#
+# Project Home:
+# ============
+# https://github.com/linuxwacom/libwacom/wiki
+#
+# GitHub:
+# ======
+# https://github.com/linuxwacom/libwacom.git
+#
+
+url        = https://github.com/linuxwacom
+
+repo_name  = libwacom
+pkg_name   = libwacom
+
+#
+# List of versions to be extracted:
+# ================================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = cb36c462763a321454d5c08fe974a3d7dec4ed1a:2.6.0
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(pkg_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$hash | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/libxkbcommon/Makefile b/packages/x/libxkbcommon/Makefile
new file mode 100644
index 0000000..a0d2ab5
--- /dev/null
+++ b/packages/x/libxkbcommon/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://xkbcommon.org
+#
+# Downloads:
+# =========
+# https://xkbcommon.org/download/libxkbcommon-1.5.0.tar.xz
+#
+
+url         = https://xkbcommon.org/download
+
+versions    = 1.5.0
+
+pkgname     = libxkbcommon
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/lxappearance-obconf/Makefile b/packages/x/lxappearance-obconf/Makefile
new file mode 100644
index 0000000..c2e5adc
--- /dev/null
+++ b/packages/x/lxappearance-obconf/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/lxde
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/lxde/files/LXAppearance Obconf
+#
+
+url         = https://downloads.sourceforge.net/project/lxde/LXAppearance%20Obconf
+
+versions    = 0.2.3
+
+pkgname     = lxappearance-obconf
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/lxappearance/Makefile b/packages/x/lxappearance/Makefile
new file mode 100644
index 0000000..92e6c2c
--- /dev/null
+++ b/packages/x/lxappearance/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/lxde
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/lxde/files/LXAppearance
+#
+
+url         = https://downloads.sourceforge.net/project/lxde/LXAppearance
+
+versions    = 0.6.1 0.6.2 0.6.3
+
+pkgname     = lxappearance
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/lxinput/Makefile b/packages/x/lxinput/Makefile
new file mode 100644
index 0000000..ec9d3bd
--- /dev/null
+++ b/packages/x/lxinput/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/lxde
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/project/lxde/LXInput%20%28Kbd%20and%20amp_%20mouse%20config%29/LXInput%200.3.x
+#
+
+url         = https://downloads.sourceforge.net/project/lxde/LXInput%20%28Kbd%20and%20amp_%20mouse%20config%29/LXInput%200.3.x
+
+versions    = 0.3.5
+
+pkgname     = lxinput
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/mesa-demos/Makefile b/packages/x/mesa-demos/Makefile
new file mode 100644
index 0000000..3a59d6c
--- /dev/null
+++ b/packages/x/mesa-demos/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://www.mesa3d.org
+#
+# Downloads:
+# =========
+# https://archive.mesa3d.org/demos/${VERSION}
+#
+
+url         = https://archive.mesa3d.org/demos
+
+versions    = 8.2.0 8.3.0 8.5.0
+
+pkgname     = mesa-demos
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9]*[.][0-9]*[.][0-9]*\)\([\.]tar.*\)/\2/'` ; \
+	  wget -N $(url)/$$version/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/mesa/21.x/Makefile b/packages/x/mesa/21.x/Makefile
new file mode 100644
index 0000000..9057988
--- /dev/null
+++ b/packages/x/mesa/21.x/Makefile
@@ -0,0 +1,75 @@
+#
+# Project Home:
+# ============
+# https://www.mesa3d.org
+#
+# Downloads:
+# =========
+# https://docs.mesa3d.org/download.html
+#
+# GitLab:
+# ======
+# https://gitlab.freedesktop.org/mesa/mesa
+#
+# Clone:
+# =====
+# git clone https://gitlab.freedesktop.org/mesa/mesa.git
+#
+
+url        = https://gitlab.freedesktop.org/mesa
+
+repo_name  = mesa
+
+#
+# List of 'amber' branch versions to be extracted:
+# ===============================================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 14d7da24640dadfb55769cfc93e13ab653996fed:21.3.9
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/mesa/22.x/Makefile b/packages/x/mesa/22.x/Makefile
new file mode 100644
index 0000000..de09d23
--- /dev/null
+++ b/packages/x/mesa/22.x/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.mesa3d.org
+#
+# Downloads:
+# =========
+# https://docs.mesa3d.org/download.html
+#
+
+url         = https://archive.mesa3d.org
+
+versions    = 22.3.4
+
+pkgname     = mesa
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/mesa/Makefile b/packages/x/mesa/Makefile
new file mode 100644
index 0000000..7ac6945
--- /dev/null
+++ b/packages/x/mesa/Makefile
@@ -0,0 +1,25 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := 21.x \
+           22.x
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/x/mozilla-firefox/Makefile b/packages/x/mozilla-firefox/Makefile
new file mode 100644
index 0000000..5cee90b
--- /dev/null
+++ b/packages/x/mozilla-firefox/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://www-archive.mozilla.org/projects/
+#
+# Downloads:
+# =========
+# https://archive.mozilla.org/pub/firefox/releases/$(VERSION)/
+#
+
+url         = https://archive.mozilla.org/pub/firefox/releases
+
+versions    = 44.0 45.0.1 45.0.2 52.0 70.0
+versions   += 111.0.1
+
+pkgname     = firefox
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addsuffix .source, $(addprefix $(pkgname)-, $(versions))))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9]*[.0-9]*\)\([\.].*\)/\2/'` ; \
+	  wget -N $(url)/$$version/source/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/mozilla-thunderbird/Makefile b/packages/x/mozilla-thunderbird/Makefile
new file mode 100644
index 0000000..ab543e7
--- /dev/null
+++ b/packages/x/mozilla-thunderbird/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://www-archive.mozilla.org/projects/
+#
+# Downloads:
+# =========
+# https://archive.mozilla.org/pub/thunderbird/releases/${VERSION}
+#
+
+url         = https://archive.mozilla.org/pub/thunderbird/releases
+
+versions    = 45.0 45.8.0
+versions   += 102.9.1
+
+pkgname     = thunderbird
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addsuffix .source, $(addprefix $(pkgname)-, $(versions))))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9]*[.0-9]*\)\([\.].*\)/\2/'` ; \
+	  wget -N $(url)/$$version/source/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/mtdev/Makefile b/packages/x/mtdev/Makefile
new file mode 100644
index 0000000..8da0ed1
--- /dev/null
+++ b/packages/x/mtdev/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://bitmath.org/code/mtdev
+#
+# Downloads:
+# =========
+# https://bitmath.org/code/mtdev
+#
+
+url         = https://bitmath.org/code/mtdev
+
+versions    = 1.1.4 1.1.5 1.1.6
+
+pkgname     = mtdev
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/nitrogen/Makefile b/packages/x/nitrogen/Makefile
new file mode 100644
index 0000000..f212021
--- /dev/null
+++ b/packages/x/nitrogen/Makefile
@@ -0,0 +1,67 @@
+#
+# Project Home:
+# ============
+# https://github.com/l3ib/nitrogen
+#
+# GitHub:
+# ======
+# https://github.com/l3ib/nitrogen
+#
+# Clone:
+# =====
+# git clone https://github.com/l3ib/nitrogen.git
+#
+
+url        = https://github.com/l3ib
+
+repo_name  = nitrogen
+pkg_name   = nitrogen
+suffix     = tar.xz
+
+versions   = 1.6.1
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	    tar xJf $(pkg_name)-$$version.$(suffix) ; \
+	    ( cd $(pkg_name)-$$version ; autoreconf -vif ; rm -rf autom4te.cache .mailmap *~ ) ; \
+	    tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	    rm -rf $(pkg_name)-$$version ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/obconf/Makefile b/packages/x/obconf/Makefile
new file mode 100644
index 0000000..9aee0d4
--- /dev/null
+++ b/packages/x/obconf/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# http://openbox.org/wiki/Main_Page
+#
+# Downloads:
+# =========
+# http://openbox.org/wiki/Openbox:Download
+#
+
+url         = http://openbox.org/dist/obconf
+
+versions    = 2.0.4
+
+pkgname     = obconf
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/openbox/Makefile b/packages/x/openbox/Makefile
new file mode 100644
index 0000000..06cf076
--- /dev/null
+++ b/packages/x/openbox/Makefile
@@ -0,0 +1,67 @@
+#
+# Project Home:
+# ============
+# http://openbox.org/wiki/Main_Page
+#
+# GitHub:
+# ======
+# https://github.com/Mikachu/openbox
+#
+# Clone:
+# =====
+# git clone https://github.com/Mikachu/openbox.git
+#
+
+url        = https://github.com/Mikachu
+
+repo_name  = openbox
+pkg_name   = openbox
+suffix     = tar.xz
+
+versions   = 3.6.1
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=release-`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	    tar xJf $(pkg_name)-$$version.$(suffix) ; \
+	    ( cd $(pkg_name)-$$version ; ./bootstrap ; rm -rf autom4te.cache .gitignore ) ; \
+	    tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	    rm -rf $(pkg_name)-$$version ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/pyxdg/Makefile b/packages/x/pyxdg/Makefile
new file mode 100644
index 0000000..fc68f04
--- /dev/null
+++ b/packages/x/pyxdg/Makefile
@@ -0,0 +1,63 @@
+#
+# Project Home:
+# ============
+# https://freedesktop.org/wiki/Software/pyxdg
+#
+# Git:
+# ===
+# https://cgit.freedesktop.org/xdg/pyxdg
+#
+# Clone:
+# =====
+# git clone https://gitlab.freedesktop.org/xdg/pyxdg.git
+#
+
+url        = https://gitlab.freedesktop.org/xdg
+
+repo_name  = pyxdg
+pkg_name   = pyxdg
+suffix     = tar.xz
+
+versions   = 0.28
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=rel-`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/qt5/Makefile b/packages/x/qt5/Makefile
new file mode 100644
index 0000000..d110cd1
--- /dev/null
+++ b/packages/x/qt5/Makefile
@@ -0,0 +1,76 @@
+#
+# Project Home:
+# ============
+# https://www.qt.io/ide
+#
+# GitLab:
+# ======
+# git clone https://invent.kde.org/qt/qt/qt5.git
+#
+
+url        = https://invent.kde.org/qt/qt
+
+versions   = 5.15.8
+
+repo_name  = qt5
+pkg_name   = qt-everywhere-src
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  short_version=`echo $$version | cut -f1,2 -d '.'` ; \
+	  if [ ! -f $(pkg_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) ; \
+	      git checkout kde/$${short_version} ; \
+	      ./init-repository ; \
+	      for i in $$(find . -type d -name "qt*" -maxdepth 1) ; do \
+	        cd $${i} ; \
+	          ../qtbase/bin/syncqt.pl -version $${version} ; \
+	        cd .. ; \
+	      done ; \
+	      rm -rf qtqa qtrepotools qtsystems qtpim qtfeedback qtdocgallery qtcanvas3d ; \
+	      rm -rf qtdatavis3d/tools qtcharts/tools                                    ; \
+	      rm -f init-repository README.git .commit-template                          ; \
+	    ) ; \
+	    mv $(repo_name) $(pkg_name)-$${version} ; \
+	    tar --exclude-vcs -cf qt-everywhere-src-$${version}.tar qt-everywhere-src-$${version} ; \
+	    tar -cf qt5-gitmodules.tar qt-everywhere-src-$${version}/**/.gitmodules qt-everywhere-src-$${version}/.gitmodules ; \
+	    tar --concatenate --file=qt-everywhere-src-$${version}.tar qt5-gitmodules.tar ; \
+	    xz qt-everywhere-src-$${version}.tar ; \
+	    rm -rf $(pkg_name)-$${version} ; \
+	    rm -f qt5-gitmodules.tar ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/startup-notification/Makefile b/packages/x/startup-notification/Makefile
new file mode 100644
index 0000000..05c1bd2
--- /dev/null
+++ b/packages/x/startup-notification/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.freedesktop.org/wiki/Software/startup-notification
+#
+# Downloads:
+# =========
+# https://www.freedesktop.org/software/startup-notification/releases
+#
+
+url         = https://www.freedesktop.org/software/startup-notification/releases
+
+versions    = 0.12
+
+pkgname     = startup-notification
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/terminus-font/Makefile b/packages/x/terminus-font/Makefile
new file mode 100644
index 0000000..5b095dc
--- /dev/null
+++ b/packages/x/terminus-font/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://terminus-font.sourceforge.net
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/project/terminus-font/terminus-font-${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/terminus-font
+
+versions    = 4.38 4.39 4.40 4.49.1
+
+pkgname     = terminus-font
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  ver=`echo "$$version" | cut -f1,2 -d'.'` ; \
+	  wget -N $(url)/$(pkgname)-$$ver/$(pkgname)-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/thaixfonts/Makefile b/packages/x/thaixfonts/Makefile
new file mode 100644
index 0000000..227ca57
--- /dev/null
+++ b/packages/x/thaixfonts/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://linux.thai.net/projects/thaixfonts
+#
+# Downloads:
+# =========
+# ftp://linux.thai.net/pub/thailinux/software/thaixfonts
+# https://linux.thai.net/pub/thailinux/software/thaixfonts
+#
+
+url         = https://linux.thai.net/pub/thailinux/software/thaixfonts
+
+versions    = 1.2.6 1.2.7
+
+pkgname     = thaixfonts
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/tint2/Makefile b/packages/x/tint2/Makefile
new file mode 100644
index 0000000..576f327
--- /dev/null
+++ b/packages/x/tint2/Makefile
@@ -0,0 +1,63 @@
+#
+# Project Home:
+# ============
+# https://gitlab.com/o9000/tint2
+#
+# GitLab:
+# ======
+# https://gitlab.com/o9000/tint2
+#
+# Clone:
+# =====
+# git clone https://gitlab.com/o9000/tint2.git
+#
+
+url        = https://gitlab.com/o9000
+
+repo_name  = tint2
+pkg_name   = tint2
+suffix     = tar.xz
+
+versions   = 17.0.2
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/vaapi/Makefile b/packages/x/vaapi/Makefile
new file mode 100644
index 0000000..ad3c2dc
--- /dev/null
+++ b/packages/x/vaapi/Makefile
@@ -0,0 +1,26 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := intel-vaapi-driver \
+           libva              \
+           libva-vdpau-driver
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/x/vaapi/intel-vaapi-driver/Makefile b/packages/x/vaapi/intel-vaapi-driver/Makefile
new file mode 100644
index 0000000..c4b2d97
--- /dev/null
+++ b/packages/x/vaapi/intel-vaapi-driver/Makefile
@@ -0,0 +1,74 @@
+#
+# Project Home:
+# ============
+# https://01.org/linuxmedia/vaapi
+#
+# GitHub:
+# ======
+# https://github.com/intel/intel-vaapi-driver
+#
+
+url        = https://github.com/intel
+
+repo_name  = intel-vaapi-driver
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 9a1f0c64174f970a26380d4957583c71372fbb7c:2.4.1
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	  tar xJf $(repo_name)-$$version.$(suffix) ; \
+	  ( cd $(repo_name)-$$version ; autoreconf -vif ; \
+	    rm -rf autom4te.cache .github .gitignore .travis.yml *~ ; \
+	  ) ; \
+	  tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	  rm -rf $(repo_name)-$$version ; \
+	done
+
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/vaapi/libva-vdpau-driver/Makefile b/packages/x/vaapi/libva-vdpau-driver/Makefile
new file mode 100644
index 0000000..6a2c89a
--- /dev/null
+++ b/packages/x/vaapi/libva-vdpau-driver/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://freedesktop.org/wiki/Software/vaapi
+#
+# Downloads:
+# =========
+# https://www.freedesktop.org/software/vaapi/releases
+#
+
+url         = https://www.freedesktop.org/software/vaapi/releases/libva-vdpau-driver
+
+versions    = 0.7.4
+
+pkgname     = libva-vdpau-driver
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/vaapi/libva/Makefile b/packages/x/vaapi/libva/Makefile
new file mode 100644
index 0000000..7f8272e
--- /dev/null
+++ b/packages/x/vaapi/libva/Makefile
@@ -0,0 +1,72 @@
+#
+# Project Home:
+# ============
+# https://01.org/linuxmedia/vaapi
+#
+# GitHub:
+# ======
+# https://github.com/intel/libva
+#
+
+url        = https://github.com/intel
+
+repo_name  = libva
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = df3c584bb79d1a1e521372d62fa62e8b1c52ce6c:2.17.0
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	  tar xJf $(repo_name)-$$version.$(suffix) ; \
+	  ( cd $(repo_name)-$$version ; ./autogen.sh ; make distclean ; rm -rf autom4te.cache .github .gitignore *~ ) ; \
+	  tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	  rm -rf $(repo_name)-$$version ; \
+	done
+
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/xdg-user-dirs/Makefile b/packages/x/xdg-user-dirs/Makefile
new file mode 100644
index 0000000..4e086ea
--- /dev/null
+++ b/packages/x/xdg-user-dirs/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.freedesktop.org/wiki/Software/xdg-user-dirs
+#
+# Downloads:
+# =========
+# https://user-dirs.freedesktop.org/releases
+#
+
+url         = https://user-dirs.freedesktop.org/releases
+
+versions    = 0.14 0.15 0.18
+
+pkgname     = xdg-user-dirs
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/x/xdg-utils/Makefile b/packages/x/xdg-utils/Makefile
new file mode 100644
index 0000000..65aa19d
--- /dev/null
+++ b/packages/x/xdg-utils/Makefile
@@ -0,0 +1,77 @@
+#
+# Project Home:
+# ============
+# https://cgit.freedesktop.org/xdg/xdg-utils
+#
+# cGit:
+# ====
+# https://cgit.freedesktop.org/xdg/xdg-utils
+#
+# Clone:
+# =====
+# git clone git://anongit.freedesktop.org/xdg/xdg-utils
+# git clone https://anongit.freedesktop.org/git/xdg/xdg-utils.git
+#
+
+url        = git://anongit.freedesktop.org/git/xdg/xdg-utils
+
+repo_name  = xdg-utils
+
+#
+# List of tags to be extracted:
+#
+TAGS       = 8c65fb00f55ec676b24872885dc2dbf7a4dacf25:1.0.2
+TAGS      += 9595033d358a7d78e2b882c36ac11f29697f064d:1.1.0-rc2
+TAGS      += f0df41402e827051ec16bac212c8eaf08ada75e4:1.1.0
+TAGS      += ef8a58be4049697bb6347c3c5b8fff4d2b2deb86:1.1.1
+TAGS      += 159fc37075db2decf446f453fe1a796da6921aad:1.1.3
+
+suffix     = tar.xz
+
+git_repo   = .git_clone
+versions   = $(foreach tag, $(TAGS), $(shell echo $(tag) | cut -f 2 -d ':'))
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@if [ "$(url)" = 'git://radix.pro' ]; then \
+	   git clone $(url)/$(repo_name).git $(repo_name) ; \
+	 else \
+	   git clone $(url) $(repo_name) ; \
+	 fi
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for tag in $(TAGS) ; do \
+	  version=`echo $$tag | cut -f 2 -d ':'` ; \
+	  hash=`echo $$tag | cut -f 1 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/x/xterm/Makefile b/packages/x/xterm/Makefile
new file mode 100644
index 0000000..2882824
--- /dev/null
+++ b/packages/x/xterm/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://invisible-island.net/xterm
+#
+# Downloads:
+# =========
+# https://invisible-island.net/archives/xterm
+#
+
+url         = https://invisible-island.net/archives/xterm
+
+versions    = 313 322 324 325 379
+
+pkgname     = xterm
+suffix      = tgz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)