diff --git a/rust-package-dir.sh b/rust-package-dir.sh
index 0438aadc0500ffa716bf5e4a6cffae75e12f930d..413a77e8e414ee73b39c1c12404bce43d00ab5eb 100755
--- a/rust-package-dir.sh
+++ b/rust-package-dir.sh
@@ -3,6 +3,16 @@
 set -e
 set -x
 
+post_package() {
+    if [ -x post-package-$1-$2 ] ; then
+        $(realpath post-package-$1-$2) $3
+    elif [ -x post-package-$1 ] ; then
+       $(realpath post-package-$1) $3
+    elif [ -x post-package ] ; then
+        $(realpath post-package) $3
+    fi
+}
+
 CACHE=${HOME}/.cache/rust2rpm
 cargo package
 mkdir -p ${CACHE}
@@ -16,6 +26,11 @@ for f in $(pwd)/target/package/*.crate ; do
     if [[ "$(basename "$f")" =~ (.*)-(.*).crate ]] ; then
         NAME=${BASH_REMATCH[1]}
         VERSION=${BASH_REMATCH[2]}
-        rust2rpm --stdout ${NAME} ${VERSION} > rust-${NAME}-${VERSION}.spec
+        SPEC=rust-${NAME}-${VERSION}.spec
+        rust2rpm -t plain --stdout ${NAME} ${VERSION} > ${SPEC}
+        sed -i -re 's/(BuildRequires:\s*)\((crate[\(][^\)]+\)).*/&\n\1\2/' \
+            ${SPEC}
+        post_package ${NAME} ${VERSION} ${SPEC}
+        rpmbuild -bs ${SPEC} -D'_sourcedir target/package/.' -D'_srcrpmdir .'
     fi
 done