source: trunk/base/Makefile.in @ 26221

Last change on this file since 26221 was 26221, checked in by jmpp@…, 13 years ago

Always echoing this first line of the upgrade target is helpful.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 10.9 KB
Line 
1# $Id: Makefile.in 26221 2007-06-16 08:04:28Z jmpp@macports.org $
2
3SUBDIR          = config doc src
4DISTDIR         = dist
5DISTVER         =
6DISTTAG         = release_${subst .,_,${DISTVER}}
7DISTNAME        = MacPorts-${DISTVER}
8DISTARCTAG      = ${DISTTAG}-archive
9DISTARCNAME     = ${DISTNAME}-archive
10SVNURL          = http://svn.macports.org/repository/macports
11UPGRADECHECK    = ${localstatedir}/macports/.mprename
12
13include Mk/macports.autoconf.mk
14
15all:: Mk/macports.autoconf.mk
16
17Mk/macports.autoconf.mk: Mk/macports.autoconf.mk.in src/config.h.in Makefile.in config.status
18        ./config.status
19        make clean
20
21config.status: configure
22        @if test -f ./config.status ; then      \
23                set -x ;                                                \
24                ./config.status --recheck ;             \
25        else                                                            \
26                set -x ;                                                \
27                echo "Source tree not configured. Use ./configure" ; \
28        fi
29
30upgrade:
31        echo -e "\nUpgrading your existing MacPorts installation to the new namespace if necessary:\n"
32
33# We can safely delete the ${TCL_PACKAGE_DIR}/darwinports1.0 dir as files in it are always overwritten and will now be installed onto
34# ${TCL_PACKAGE_DIR}/macports1.0 with new names:
35        [ ! -d ${TCL_PACKAGE_DIR}/darwinports1.0 ] || rm -rf ${TCL_PACKAGE_DIR}/darwinports1.0
36
37# MacPorts base files in ${datadir} are also safely removed as new ones are always installed, and onto a their new location in this case too:
38        [ ! -d ${datadir}/darwinports ] || rm -rf ${datadir}/darwinports
39
40# Old version file can be safely deleted, as it was already used to start this upgrade and a new one will be installed into the new location:
41        [ ! -f ${sysconfdir}/ports/dp_version ] || rm -vf ${sysconfdir}/ports/dp_version
42
43# Old ports.conf(5) man page is removed:
44        [ ! -f ${prefix}/share/man/man5/ports.conf.5 ] || rm -vf ${prefix}/share/man/man5/ports.conf.5
45
46# Conf files directory is renamed:
47        [ ! -d ${sysconfdir}/ports ] || mv -v ${sysconfdir}/ports ${sysconfdir}/macports
48
49# Important directories inside ${localstatedir}/db/dports are moved to their new location, creating it first:
50        [ -d ${localstatedir}/macports ] || mkdir -vp ${localstatedir}/macports
51        for dir in distfiles packages receipts software; do \
52                [ ! -d ${localstatedir}/db/dports/$${dir} ] || mv -v ${localstatedir}/db/dports/$${dir} ${localstatedir}/macports ; \
53        done
54
55# Move the default ports tree to the new layout:
56        [ ! -d ${localstatedir}/db/dports/sources/rsync.rsync.darwinports.org_dpupdate_dports ] || { mkdir -vp \
57        ${localstatedir}/macports/sources/rsync.macports.org/release && mv -v \
58        ${localstatedir}/db/dports/sources/rsync.rsync.darwinports.org_dpupdate_dports ${localstatedir}/macports/sources/rsync.macports.org/release/ports ; }
59
60# Open up receipts and upgrade any paths in them containing old conventions to the new namespace:
61        for receipt in ${localstatedir}/macports/receipts/*/*/receipt.bz2 ; do [ ! \( -f $${receipt} -a ! -f $${receipt}.mpsaved \) ] || { \
62                cp -v $${receipt} $${receipt}.mpsaved && { \
63                        $(BZIP2) -q -dc $${receipt} | sed 's/db\/dports/macports/g' | $(BZIP2) -q -zf > $${receipt}.new ; \
64                } && mv -v $${receipt}.new $${receipt} ; \
65        }; done
66
67# Check for existance of the main configuration file and perform a couple of replacements on it, backing it up first:
68## 1) new default path up to our configuration files (referenced through other variables);
69## 2) new default value for the portdbpath variable;
70## 3) new MacPorts rsync server;
71## 4) new default value for the base tree;
72## 5) new default value for trunk's base sources for users who have it (some do);
73## 6) stray quotes are removed from the value of the rsync_options key in old conf files;
74## 7) references to the old ports.conf(5) man page are updated to the new macports.conf(5) page;
75## 8) finally, move remaining instances of any form of our new name (which by this time should only remain in comments, if at all) to our new name.
76        [ ! \( -f ${sysconfdir}/macports/ports.conf -a ! -f ${UPGRADECHECK} \) ] || { \
77                mv -v ${sysconfdir}/macports/ports.conf ${sysconfdir}/macports/macports.conf.mpsaved; \
78                sed 's/etc\/ports/etc\/macports/g' ${sysconfdir}/macports/macports.conf.mpsaved > ${sysconfdir}/macports/macports.conf.tmp && \
79                        mv -v ${sysconfdir}/macports/macports.conf.tmp ${sysconfdir}/macports/macports.conf; \
80                sed 's/db\/dports/macports/g' ${sysconfdir}/macports/macports.conf > ${sysconfdir}/macports/macports.conf.tmp && \
81                        mv -v ${sysconfdir}/macports/macports.conf.tmp ${sysconfdir}/macports/macports.conf; \
82                sed 's/darwinports/macports/g' ${sysconfdir}/macports/macports.conf > ${sysconfdir}/macports/macports.conf.tmp && \
83                        mv -v ${sysconfdir}/macports/macports.conf.tmp ${sysconfdir}/macports/macports.conf; \
84                sed 's/dpupdate1\/base/release\/base/g' ${sysconfdir}/macports/macports.conf > ${sysconfdir}/macports/macports.conf.tmp && \
85                        mv -v ${sysconfdir}/macports/macports.conf.tmp ${sysconfdir}/macports/macports.conf; \
86                sed 's/dpupdate\/base\/\{0,1\}/trunk\/base\//g' ${sysconfdir}/macports/macports.conf > ${sysconfdir}/macports/macports.conf.tmp && \
87                        mv -v ${sysconfdir}/macports/macports.conf.tmp ${sysconfdir}/macports/macports.conf; \
88                sed '/^rsync_options/s/"\(.*\)"/\1/' ${sysconfdir}/macports/macports.conf > ${sysconfdir}/macports/macports.conf.tmp && \
89                        mv -v ${sysconfdir}/macports/macports.conf.tmp ${sysconfdir}/macports/macports.conf; \
90                sed 's/ ports.conf(5)/ macports.conf(5)/g' ${sysconfdir}/macports/macports.conf > ${sysconfdir}/macports/macports.conf.tmp && \
91                        mv -v ${sysconfdir}/macports/macports.conf.tmp ${sysconfdir}/macports/macports.conf; \
92                sed 's/[Dd]\(arwin\)\{0,1\}[Pp]\(orts\)\{0,1\}/MacPorts/g' ${sysconfdir}/macports/macports.conf > ${sysconfdir}/macports/macports.conf.tmp && \
93                        mv -v ${sysconfdir}/macports/macports.conf.tmp ${sysconfdir}/macports/macports.conf; \
94        }
95
96# Check for existance of the main sources file and perform a couple of replacements on it, backing it up first:
97## 1) new MacPorts rsync server;
98## 2) new default value for the ports tree.
99        [ ! \( -f ${sysconfdir}/macports/sources.conf -a ! -f ${UPGRADECHECK} \) ] || { \
100                cp -v ${sysconfdir}/macports/sources.conf ${sysconfdir}/macports/sources.conf.mpsaved; \
101                sed 's/darwinports/macports/g' ${sysconfdir}/macports/sources.conf > ${sysconfdir}/macports/sources.conf.tmp && \
102                        mv -v ${sysconfdir}/macports/sources.conf.tmp ${sysconfdir}/macports/sources.conf; \
103                sed 's/dpupdate\/dports/release\/ports\//g' ${sysconfdir}/macports/sources.conf > ${sysconfdir}/macports/sources.conf.tmp && \
104                        mv -v ${sysconfdir}/macports/sources.conf.tmp ${sysconfdir}/macports/sources.conf; \
105        }
106
107# Check for existance of a personal configuration file and perform a couple of replacements on it, backing it up first:
108## 1) new default path up to our configuration files (referenced through other variables);
109## 2) new default value for the portdbpath variable;
110## 3) new MacPorts rsync server;
111## 4) new default value for the base tree;
112## 5) new default value for trunk's base sources for users who have it (some do);
113## 6) stray quotes are removed from the value of the rsync_options key in old conf files;
114## 7) references to the old ports.conf(5) man page are updated to the new macports.conf(5) page;
115## 8) finally, move remaining instances of any form of our new name (which by this time should only remain in comments, if at all) to our new name.
116        [ ! \( -f $${HOME}/.macports/ports.conf -a ! -f ${UPGRADECHECK} \) ] || { \
117                mv -v $${HOME}/.macports/ports.conf $${HOME}/.macports/macports.conf.mpsaved; \
118                sed 's/etc\/ports/etc\/macports/g' $${HOME}/.macports/macports.conf.mpsaved > $${HOME}/.macports/macports.conf.tmp && \
119                        mv -v $${HOME}/.macports/macports.conf.tmp $${HOME}/.macports/macports.conf; \
120                sed 's/db\/dports/macports/g' $${HOME}/.macports/macports.conf > $${HOME}/.macports/macports.conf.tmp && \
121                        mv -v $${HOME}/.macports/macports.conf.tmp $${HOME}/.macports/macports.conf; \
122                sed 's/darwinports/macports/g' $${HOME}/.macports/macports.conf > $${HOME}/.macports/macports.conf.tmp && \
123                        mv -v $${HOME}/.macports/macports.conf.tmp $${HOME}/.macports/macports.conf; \
124                sed 's/dpupdate1\/base/release\/base/g' $${HOME}/.macports/macports.conf > $${HOME}/.macports/macports.conf.tmp && \
125                        mv -v $${HOME}/.macports/macports.conf.tmp $${HOME}/.macports/macports.conf; \
126                sed 's/dpupdate\/base\/\{0,1\}/trunk\/base\//g' $${HOME}/.macports/macports.conf > $${HOME}/.macports/macports.conf.tmp && \
127                        mv -v $${HOME}/.macports/macports.conf.tmp $${HOME}/.macports/macports.conf; \
128                sed '/^rsync_options/s/"\(.*\)"/\1/' $${HOME}/.macports/macports.conf > $${HOME}/.macports/macports.conf.tmp && \
129                        mv -v $${HOME}/.macports/macports.conf.tmp $${HOME}/.macports/macports.conf; \
130                sed 's/ ports.conf(5)/ macports.conf(5)/g' $${HOME}/.macports/macports.conf > $${HOME}/.macports/macports.conf.tmp && \
131                        mv -v $${HOME}/.macports/macports.conf.tmp $${HOME}/.macports/macports.conf; \
132                sed 's/[Dd]\(arwin\)\{0,1\}[Pp]\(orts\)\{0,1\}/MacPorts/g' $${HOME}/.macports/macports.conf > $${HOME}/.macports/macports.conf.tmp && \
133                        mv -v $${HOME}/.macports/macports.conf.tmp $${HOME}/.macports/macports.conf; \
134        }
135
136# Upgrade success announcement (meaning we're done ;):
137        @[ -f ${UPGRADECHECK} ] || { echo -e "\nMacPorts installation successfully upgraded from the old DarwinPorts namespace!\n"; \
138        echo "MacPorts rename update done!" > ${UPGRADECHECK} ; }
139
140####
141# NOTES:
142#    -) should we use the ${DESTDIR} sandbox?
143#    -) should we force moves?
144#    -) maybe I can regroup at least some of the sed calls?
145#    -)
146####
147
148install:: upgrade
149
150include Mk/macports.subdir.mk
151
152install::
153        @echo -e "\nCongratulations, you have successfully installed the MacPorts system. To get the Portfiles and update the system, run:\n"
154        @echo -e "sudo port selfupdate\n"
155        @echo -e "Please read port(1) and the MacPorts Wiki at http://trac.macports.org/ for full documentation.\n"
156        @[ -f ${UPGRADECHECK} ] || echo -e "Stray sources might have been left in the legacy ${localstatedir}/db/dports directory after this upgrade, which moved most of what it could to ${localstatedir}/macports, so you might want to look in the former and cleanup manually.\n"
157
158clean::
159
160distclean::
161        rm -f config.log config.status configure.lineno
162        rm -rf autom4te.cache ${DISTDIR}
163        rm -f Makefile Mk/macports.autoconf.mk
164
165_gettag:
166        cd ${DISTDIR}; svn co ${SVNURL}/tags/${SVNTAG} ${PKGNAME}-svn
167
168_pkgdist:
169        [ ! -d ${DISTDIR}/${PKGNAME} ] || rm -rf ${DISTDIR}/${PKGNAME}
170        cd ${DISTDIR}; svn export ${PKGNAME}-svn ${PKGNAME}
171        cd ${DISTDIR}; COPY_EXTENDED_ATTRIBUTES_DISABLE=true tar -c ${PKGNAME} | gzip > ${PKGNAME}.tar.gz
172        cd ${DISTDIR}; COPY_EXTENDED_ATTRIBUTES_DISABLE=true tar -c ${PKGNAME} | bzip2 > ${PKGNAME}.tar.bz2
173        cd ${DISTDIR}; for type in -md5 -sha1 -ripemd160; do openssl dgst $$type ${PKGNAME}.tar.gz ${PKGNAME}.tar.bz2; done >> ${DISTNAME}.chk.txt
174
175_dopkg: _gettag _pkgdist
176
177# This target fetches a tagged distribution from svn, and generates tarballs and checksums for it
178distfromsvn:
179        @[ -n "${DISTVER}" ] || ( echo Must specify DISTVER, like: make DISTVER=1.4.0 dist; exit 1 )
180        [ -d ${DISTDIR} ] || mkdir ${DISTDIR}
181        rm -f ${DISTDIR}/${DISTNAME}.chk.txt
182        ${MAKE} SVNTAG=${DISTTAG}/base/ PKGNAME=${DISTNAME} _dopkg
183ifeq ($(ARC),yes)
184        ${MAKE} SVNTAG=${DISTARCTAG} PKGNAME=${DISTARCNAME} _dopkg
185endif
186
187test::
188
189.PHONY: dist _gettag _pkgdist _dopkg
Note: See TracBrowser for help on using the repository browser.