有没有不依赖服务器的版本控制软件?
时间:2006-03-30
来源:互联网
作者: shannleon 发布时间: 2006-03-30
版本控制的问题,看看这篇文章。
http://www.linux.com/article.pl?sid=06/03/02/174227
不过我还是不太理解你的意思。
作者: seamonkey 发布时间: 2006-03-30
CVS这样的版本控制软件需要个服务器,下源码都得连上这个服务器。分享 SlackBuild 这种小东西,有没有什么不需要服务器的版本控制软件?有点像 P2P 类型的。唉,我也就是突发奇想。高手们别笑话了。
Makefile 的问题是顺便一问。在尝试把我的 SlackBuild 脚本变成 Makefile 。现在我这个小小的库里只有 4 个软件:kmplayer kaffeine fcitx amarok 。还在找错误中,我自己都不信任。学学走走吧。
昨天才第一次看了一下 Makefile 的写法。说实在的,不懂。只是觉得 make 可以帮忙排除掉一些错误比较方便。写了个很初级的,当个示例,明白我意思就得了(我知道我写得很烂)。
目录结构是
slackbuilds/{chinese,multimedia,mk,distfiles,packages}
kaffeine 就是 slackbuilds/multimedia/kaffeine
make fetch 下载源码
make extract 解压源码,放在 /tmp/work 底下
make build 编译
make package 打成 Slackware 包。
现在基本还是一步步来,装个软件要用 make fetch build package clean 以后再搞一条龙的服务吧。
这是 kaffeine 的 Makefile :
# $Id: Makefile,v 1.1 2006/03/30 18:15:08 shannleon Exp $ NAME = kaffeine VERSION = 0.8 EXT = tar.bz2 SITE = http://jaist.dl.sourceforge.net/sourceforge/kaffeine PREFIX = /opt/kde OPTS = --without-dvb OPTS += --without-gstreamer OPTS += --without-oggvorbis OPTS += --without-lame include ../../mk/slack.build.mk
# $Id: slack.build.mk,v 1.1 2006/03/30 18:15:46 shannleon Exp $
NAME ?=
VERSION ?=
EXT ?= tar.bz2
SITE ?=
#----------------------------------------------------------------------
ARCH ?= i686
CPU ?= athlon64
BUILD ?= 1yjs
CC ?= gcc
CXX ?= g++
CFLAGS ?= -march=${ARCH} -mtune=${CPU} -O2 -pipe
CXXFLAGS ?= ${CFLAGS}
PREFIX ?= /usr
OPTS +=
#----------------------------------------------------------------------
REALNAME = ${NAME}-${VERSION}
FULLNAME = ${REALNAME}.${EXT}
PORTNAME = $(subst -,_,${NAME})
PORTVERSION = $(subst -,,${VERSION})
PKGNAME = ${PORTNAME}-${PORTVERSION}-${ARCH}-${BUILD}.tgz
DISTFILES = ${CWD}/../../distfiles
PACKAGES = ${CWD}/../../packages
FETCHCMD ?= /usr/bin/wget
TAR ?= /bin/tar
#----------------------------------------------------------------------
CWD = $(shell pwd)
TMPDIR = /tmp/work
SRCDIR = ${TMPDIR}/${REALNAME}
PKGDIR = ${TMPDIR}/package-${NAME}
DOCDIR = ${PKGDIR}/usr/doc/${REALNAME}
#----------------------------------------------------------------------
## RULES
#
.PHONY: fetch extract build package clean
all:
##### fetch
#
fetch: ${FETCHCMD}
ifneq ($(shell [[ -f ${DISTFILES}/${FULLNAME} ]] && echo 0),0)
@echo " ==> Fetching ${DISTFILES}/${FULLNAME} "
cd ${DISTFILES} && \
${FETCHCMD} ${SITE}/${FULLNAME}
@echo " ==> Done fetching "
endif
##### extract
#
extract: ${DISTFILES}/${FULLNAME}
ifneq ($(shell [[ -d ${SRCDIR} ]] && echo 0),0)
@echo " ==> Extracting ${DISTFILES}/${FULLNAME} "
mkdir ${TMPDIR}
ifeq (${EXT},tar.bz2)
${TAR} jxvf ${DISTFILES}/${FULLNAME} -C ${TMPDIR}
else
${TAR} zxvf ${DISTFILES}/${FULLNAME} -C ${TMPDIR}
endif
@echo " ==> Done extracting "
endif
##### build
#
build: extract ${SRCDIR}
@echo " ==> Building ${REALNAME} "
cd ${SRCDIR} && \
CC="${CC}" CXX="${CXX}" \
CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \
./configure --prefix=${PREFIX} ${OPTS} && \
make && \
make install DESTDIR=${PKGDIR}
mkdir -p ${DOCDIR}
cp $(wildcard ${SRCDIR}/[A-Z]*) ${DOCDIR}
@echo " ==> Done building "
##### package
#
package: ${PKGDIR} slack-desc
@echo " ==> Making ${PACKAGES}/${PKGNAME} "
cd ${PKGDIR} && \
find . | xargs file | grep "current ar archive" \
| cut -f 1 -d : | xargs strip --strip-debug 2>/dev/null; \
find . | xargs file | grep "executable" | grep "ELF" \
| cut -f 1 -d : | xargs strip --strip-unneeded 2>/dev/null; \
find . | xargs file | grep "shared object" | grep "ELF" \
| cut -f 1 -d : | xargs strip --strip-unneeded 2>/dev/null; \
/bin/true
mkdir ${PKGDIR}/install
cat slack-desc > ${PKGDIR}/install/slack-desc
ifeq ($(shell [[ "`id -u`" = "0" ]] && echo 0),0)
cd ${PKGDIR} && \
chown -R root.root . && \
/sbin/makepkg -l y -c n ${PACKAGES}/${PKGNAME}
endif
@echo " ==> Done making package "
##### clean
#
clean: ${TMPDIR}
@echo " ==> Cleaning up ${TMPDIR} "
rm -rf ${TMPDIR}
@echo " ==> Done cleaning "
作者: shannleon 发布时间: 2006-03-31
脚本的话,每一条命令都检查错误,实在是不行
两者结合会比较好
slackware算是保守主义吧,而且一个东西,用了那么多年,不大可能一下子推倒重来的
作者: baldzhang 发布时间: 2006-03-31
shannleon你对Slackware的包管理系统的改进做了不少探索,我倒觉得你可以像fanx那样,自己做个发行版,基于Slackware,但把你的探索成果加入其中,包管理是发行版的根基,用户很难动摇。但根难动,老根上发新芽不是没可能。很多发行版不就是从已有发行版fork而出的吗。
分享 SlackBuild ,在论坛贴我看也够了,Arch版不就是那么做的吗。
作者: seamonkey 发布时间: 2006-03-31
没有把 swaret 或 slapt-get 加进去是不是有鼓励竞争的意味?一旦加入其中之一那就成事实上的标准了。同时加两个可能又会造成点混乱。
我现在这个东西对我个人能用,但是你看看也知道没有到可以大量使用的地步。更况且,我反对有一点点不一样的东西就做新的发行版。
有对熟悉的朋友请帮忙挑挑上面的 Makefile 的毛病,多谢了 :^)
作者: shannleon 发布时间: 2006-03-31
作者: seamonkey 发布时间: 2006-03-31
比如,检查一个文件是否存在该怎么做?我上面的完全是临时办法
ifneq ($(shell [[ -f filename ]] && echo 0),0) endif
作者: shannleon 发布时间: 2006-03-31
作者: seamonkey 发布时间: 2006-03-31
作者: shannleon 发布时间: 2006-03-31
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28















