diff options
author | Phillip Lord <phillip.lord@russet.org.uk> | 2021-01-14 22:51:13 +0000 |
---|---|---|
committer | Phillip Lord <phillip.lord@russet.org.uk> | 2021-01-15 21:37:25 +0000 |
commit | 667f2e097cdfdb057de0696867c83ebfd1a3e816 (patch) | |
tree | d42ea850271e901cb61034efa1f276ef5b848b4e /admin | |
parent | f95c1b32300fbdef7b8e2b36b330a1d81db949ed (diff) | |
download | emacs-667f2e097cdfdb057de0696867c83ebfd1a3e816.tar.gz emacs-667f2e097cdfdb057de0696867c83ebfd1a3e816.tar.bz2 emacs-667f2e097cdfdb057de0696867c83ebfd1a3e816.zip |
Remove support for 32 bit build
* admin/nt/dist-build/README-scripts: Update
* admin/nt/dist-build/README-windows-binaries: Update
* admin/nt/dist-build/build-zips.sh: Remove 32 bit and fix paths
* admin/nt/dist-build/build-dep-zips.py: Remove 32 bit and update
paths
* admin/nt/dist-build/emacs.nsi: Remove 32 bit and fix paths
Diffstat (limited to 'admin')
-rw-r--r-- | admin/nt/dist-build/README-scripts | 38 | ||||
-rw-r--r-- | admin/nt/dist-build/README-windows-binaries | 49 | ||||
-rwxr-xr-x | admin/nt/dist-build/build-dep-zips.py | 100 | ||||
-rwxr-xr-x | admin/nt/dist-build/build-zips.sh | 84 | ||||
-rw-r--r-- | admin/nt/dist-build/emacs.nsi | 31 |
5 files changed, 103 insertions, 199 deletions
diff --git a/admin/nt/dist-build/README-scripts b/admin/nt/dist-build/README-scripts index 4c3554e8df5..f27bcd3bd66 100644 --- a/admin/nt/dist-build/README-scripts +++ b/admin/nt/dist-build/README-scripts @@ -33,26 +33,21 @@ build-zips.sh file will create this for you. A location for the dependencies. This needs to contain two zip files with the dependencies. build-dep-zips.py will create these files for you. -~/emacs-build/deps/libXpm/i686 -~/emacs-build/deps/libXpm/x86_64 +~/emacs-build/deps/libXpm Contain libXpm-noX4.dll. This file is used to load images for the splash screen, menu items and so on. Emacs runs without it, but looks -horrible. The x86_64 comes from msys2, while the i686 comes from -ezwinports because it itself has no dependencies. These have to be -placed manually (but probably never need updating). +horrible. The files came original from msys2, and contains no +dependencies. It has to be placed manually (but probably never +need updating). - -~/emacs-build/build/$version/i686 -~/emacs-build/build/$version/x86_64 +~/emacs-build/build/$version We build Emacs out-of-source here. This directory is created by build-zips.sh. This directory can be freely deleted after zips have been created - -~/emacs-build/install/$version/i686 -~/emacs-build/install/$version/x86_64 +~/emacs-build/install/$version We install Emacs here. This directory is created by build-zips.sh. This directory can and *should* be deleted after zips have been @@ -79,9 +74,9 @@ To do this: Update msys to the latest version with `pacman -Syu`. -Then run build-dep-zips.py, in the ~/emacs-build/deps directory. Three -zips will be created, containing the 64bit and 32bit dependencies, as -well as the source for these. +Then run build-dep-zips.py, in the ~/emacs-build/deps directory. Two +zips will be created, containing the dependencies, as well as the +source for these. For emacs release or pre-test version: @@ -105,12 +100,12 @@ To do this: Update msys to the latest version with `pacman -Syu`. -Then run build-dep-zips.py, in ~/emacs-build/deps directory. Three -zips will be created, containing the 64bit and 32bit dependencies, as -well as the source for these. These deps files contain the date of -creation in their name. The deps file can be reused as desired, or a -new version created. Where multiple deps files exist, the most -recent will be used. +Then run build-dep-zips.py, in ~/emacs-build/deps directory. Two zips +will be created, containing the dependencies, as well as the source +for these. These deps files contain the date of creation in their +name. The deps file can be reused as desired, or a new version +created. Where multiple deps files exist, the most recent will be +used. Now, run `build-zips.sh -s` to build a snapshot release. @@ -134,4 +129,5 @@ For snapshots from another branch Snapshots can be build from any other branch. There is rarely a need to do this, except where some significant, wide-ranging feature is being added on a feature branch. In this case, the branch can be -given using `build-zips.sh -b pdumper -s` for example. +given using `build-zips.sh -b pdumper -s` for example. Any "/" +characters in the branch title are replaced. diff --git a/admin/nt/dist-build/README-windows-binaries b/admin/nt/dist-build/README-windows-binaries index 001bdd73f7b..b6f6e55d8c6 100644 --- a/admin/nt/dist-build/README-windows-binaries +++ b/admin/nt/dist-build/README-windows-binaries @@ -4,7 +4,7 @@ See the end of the file for license conditions. Precompiled Distributions of Emacs for Windows - Jan 1, 2020 + Jan 14, 2021 This directory contains precompiled distributions for GNU Emacs on Windows @@ -25,51 +25,33 @@ old binaries. Windows Binaries ================ -Currently, we provide six different binary packages for Emacs, which +Currently, we provide three different binary packages for Emacs, which are: -emacs-$VERSION-x86_64-installer.exe +emacs-$VERSION-installer.exe -Contains a 64-bit build of Emacs with dependencies as an installer +Contains Emacs with dependencies as an installer package. Mostly, this is the best one to install. -emacs-$VERSION-x86_64.zip +emacs-$VERSION.zip -Contains a 64-bit build of Emacs with dependencies. This contains the -same files as the installer but as a zip file which some users may -prefer. +Contains Emacs with dependencies. This contains the same files as the +installer but as a zip file which some users may prefer. -emacs-$VERSION-x86_64-no-deps.zip +emacs-$VERSION-no-deps.zip -Contains a 64-bit build of Emacs without any dependencies. This may be -useful if you wish to install where the dependencies are already -available, or if you want the small possible Emacs. - -emacs-$VERSION-i686-installer.exe - -Contains a 32-bit build of Emacs with dependencies as an installer -package. This is useful for running on a 32-bit machine. - -emacs-$VERSION-i686.zip - -Contains a 32-bit build of Emacs with dependencies. - -emacs-$VERSION-i686-no-deps.zip - -Contains a 32-bit build of Emacs without dependencies +Contains Emacs without any dependencies. This may be useful if you +wish to install where the dependencies are already available, or if +you want the small possible Emacs. In addition, we provide the following files which will not be useful for most end-users. -emacs-$VERSION-x86_64-deps.zip +emacs-$VERSION-deps.zip The dependencies. Unzipping this file on top of -emacs-$VERSION-x86_64-no-deps.zip should result in the same install as -emacs-$VERSION-x86_64.zip. - -emacs-$VERSION-i686-deps.zip - -The 32-bit version of the dependencies. +emacs-$VERSION-no-deps.zip should result in the same install as +emacs-$VERSION.zip. emacs-$VERSION-deps-mingw-w64-src.zip @@ -85,7 +67,8 @@ Snapshots We also distribute "snapshots" of Emacs built at points throughout the development cycle, for those interested in following this cycle. They -are not recommended for normal users. +are not recommended for normal users; however, they are useful for +people who want to report bugs against the current master. The files follow the same naming convention, but also include a date (and sometimes information about their branch). The Emacs source at diff --git a/admin/nt/dist-build/build-dep-zips.py b/admin/nt/dist-build/build-dep-zips.py index ec99bd606d8..19168e7ff25 100755 --- a/admin/nt/dist-build/build-dep-zips.py +++ b/admin/nt/dist-build/build-dep-zips.py @@ -17,7 +17,6 @@ ## You should have received a copy of the GNU General Public License ## along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. import argparse -import multiprocessing as mp import os import shutil import re @@ -64,31 +63,30 @@ def check_output_maybe(*args,**kwargs): return check_output(*args,**kwargs) ## DLL Capture -def gather_deps(arch, directory): - os.mkdir(arch) - os.chdir(arch) +def gather_deps(): - for dep in full_dll_dependency(directory): - check_output_maybe(["cp /{}/bin/{}*.dll .".format(directory, dep)], + os.mkdir("x86_64") + os.chdir("x86_64") + + for dep in full_dll_dependency(): + check_output_maybe(["cp /mingw64/bin/{}*.dll .".format(dep)], shell=True) - ## And package them up - ## os.chdir(arch) - print("Zipping: {}".format(arch)) - check_output_maybe("zip -9r ../emacs-{}-{}{}-deps.zip *" - .format(EMACS_MAJOR_VERSION, DATE, arch), + print("Zipping") + check_output_maybe("zip -9r ../emacs-{}-{}deps.zip *" + .format(EMACS_MAJOR_VERSION, DATE), shell=True) os.chdir("../") ## Return all Emacs dependencies -def full_dll_dependency(directory): - deps = [dll_dependency(dep, directory) for dep in DLL_REQ] +def full_dll_dependency(): + deps = [dll_dependency(dep) for dep in DLL_REQ] return set(sum(deps, []) + DLL_REQ) ## Dependencies for a given DLL -def dll_dependency(dll, directory): +def dll_dependency(dll): output = check_output(["/mingw64/bin/ntldd", "--recursive", - "/{}/bin/{}*.dll".format(directory, dll)]).decode("utf-8") + "/mingw64/bin/{}*.dll".format(dll)]).decode("utf-8") ## munge output return ntldd_munge(output) @@ -114,14 +112,11 @@ def ntldd_munge(out): ## Packages to fiddle with ## Source for gcc-libs is part of gcc SKIP_SRC_PKGS=["mingw-w64-gcc-libs"] -SKIP_DEP_PKGS=["mingw-w64-x86_64-glib2"] +SKIP_DEP_PKGS=["mingw-w64-glib2"] MUNGE_SRC_PKGS={"mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git"} MUNGE_DEP_PKGS={ - "mingw-w64-i686-libwinpthread":"mingw-w64-i686-libwinpthread-git", "mingw-w64-x86_64-libwinpthread":"mingw-w64-x86_64-libwinpthread-git", - "mingw-w64-x86_64-libtre": "mingw-w64-x86_64-libtre-git", - "mingw-w64-i686-libtre": "mingw-w64-i686-libtre-git" } ## Currently no packages seem to require this! @@ -155,13 +150,11 @@ def extract_deps(): # Get a list of all dependencies needed for packages mentioned above. pkgs = PKG_REQ[:] - print("Initial pkgs", pkgs) n = 0 while n < len(pkgs): subdeps = immediate_deps(pkgs[n]) for p in subdeps: if not (p in pkgs or p in SKIP_DEP_PKGS): - print("adding", p) pkgs.append(p) n = n + 1 @@ -171,33 +164,29 @@ def extract_deps(): def download_source(tarball): print("Acquiring {}...".format(tarball)) - if os.path.exists("../emacs-src-cache/{}".format(tarball)): - print("Copying {} from local".format(tarball)) - shutil.copyfile("../emacs-src-cache/{}".format(tarball), - "{}".format(tarball)) - else: + if not os.path.exists("../emacs-src-cache/{}".format(tarball)): print("Downloading {}...".format(tarball)) check_output_maybe( - "wget -a ../download.log -O {} {}/{}/download" + "wget -a ../download.log -O ../emacs-src-cache/{} {}/{}/download" .format(tarball, SRC_REPO, tarball), shell=True ) print("Downloading {}... done".format(tarball)) + print("Copying {} from local".format(tarball)) + shutil.copyfile("../emacs-src-cache/{}".format(tarball), + "{}".format(tarball)) + + ## Fetch all the source code def gather_source(deps): + if not os.path.exists("emacs-src-cache"): + os.mkdir("emacs-src-cache") - ## Source for gcc-libs is part of gcc - ## Source for libwinpthread is in libwinpthreads - ## mpc, termcap, xpm -- has x86_64, and i686 versions - - ## This needs to have been run first at the same time as the - ## system was updated. os.mkdir("emacs-src") os.chdir("emacs-src") - to_download = [] for pkg in deps: pkg_name_and_version= \ check_output(["pacman","-Q", pkg]).decode("utf-8").strip() @@ -208,31 +197,18 @@ def gather_source(deps): pkg_name=pkg_name_components[0] pkg_version=pkg_name_components[1] - ## make a simple name to make lookup easier - simple_pkg_name = re.sub(r"x86_64-","",pkg_name) + ## source pkgs don't have an architecture in them + pkg_name = re.sub(r"x86_64-","",pkg_name) - if(simple_pkg_name in SKIP_SRC_PKGS): + if(pkg_name in SKIP_SRC_PKGS): continue - ## Some packages have different source files for different - ## architectures. For these we need two downloads. - if(simple_pkg_name in ARCH_PKGS): - downloads = [pkg_name, - re.sub(r"x86_64","i686",pkg_name)] - else: - downloads = [simple_pkg_name] + ## Switch names if necessary + pkg_name = MUNGE_SRC_PKGS.get(pkg_name,pkg_name) - for d in downloads: - ## Switch names if necessary - d = MUNGE_SRC_PKGS.get(d,d) + tarball = "{}-{}.src.tar.gz".format(pkg_name,pkg_version) - tarball = "{}-{}.src.tar.gz".format(d,pkg_version) - - to_download.append(tarball) - - ## Download in parallel or it is just too slow - p = mp.Pool(1) - p.map(download_source,to_download) + download_source(tarball) print("Zipping") check_output_maybe("zip -9 ../emacs-{}-{}deps-mingw-w64-src.zip *" @@ -245,7 +221,6 @@ def gather_source(deps): def clean(): print("Cleaning") os.path.isdir("emacs-src") and shutil.rmtree("emacs-src") - os.path.isdir("i686") and shutil.rmtree("i686") os.path.isdir("x86_64") and shutil.rmtree("x86_64") os.path.isfile("download.log") and os.remove("download.log") @@ -259,12 +234,6 @@ parser = argparse.ArgumentParser() parser.add_argument("-s", help="snapshot build", action="store_true") -parser.add_argument("-t", help="32 bit deps only", - action="store_true") - -parser.add_argument("-f", help="64 bit deps only", - action="store_true") - parser.add_argument("-r", help="source code only", action="store_true") @@ -278,7 +247,7 @@ parser.add_argument("-l", help="list dependencies only", action="store_true") args = parser.parse_args() -do_all=not (args.c or args.r or args.f or args.t) +do_all=not (args.c or args.r) @@ -294,11 +263,8 @@ if args.s: else: DATE="" -if( do_all or args.t ): - gather_deps("i686","mingw32") - -if( do_all or args.f ): - gather_deps("x86_64","mingw64") +if( do_all): + gather_deps() if( do_all or args.r ): deps=extract_deps() diff --git a/admin/nt/dist-build/build-zips.sh b/admin/nt/dist-build/build-zips.sh index fbb98895384..7bc6ea6a9e5 100755 --- a/admin/nt/dist-build/build-zips.sh +++ b/admin/nt/dist-build/build-zips.sh @@ -29,70 +29,62 @@ function git_up { } function build_zip { - - ARCH=$1 - PKG=$2 - HOST=$3 - - echo [build] Building Emacs-$VERSION for $ARCH - if [ $ARCH == "i686" ] - then - PATH=/mingw32/bin:$PATH - MSYSTEM=MINGW32 - fi + echo [build] Building Emacs-$VERSION ## Clean the install location because we use it twice - rm -rf $HOME/emacs-build/install/emacs-$VERSION/$ARCH - mkdir --parents $HOME/emacs-build/build/emacs-$VERSION/$ARCH - cd $HOME/emacs-build/build/emacs-$VERSION/$ARCH + rm -rf $HOME/emacs-build/install/emacs-$VERSION + mkdir --parents $HOME/emacs-build/build/emacs-$VERSION + cd $HOME/emacs-build/build/emacs-$VERSION + + ## Do we need this or is it the default? + export PKG_CONFIG_PATH=/mingw64/lib/pkgconfig - export PKG_CONFIG_PATH=$PKG ## Running configure forces a rebuild of the C core which takes ## time that is not always needed, so do not do it unless we have ## to. if [ ! -f Makefile ] || (($CONFIG)) then - echo [build] Configuring Emacs $ARCH + echo [build] Configuring Emacs $REPO_DIR/$BRANCH/configure \ --without-dbus \ - --host=$HOST --without-compress-install \ + --without-compress-install \ $CACHE \ CFLAGS="$CFLAGS" fi make -j 4 $INSTALL_TARGET \ - prefix=$HOME/emacs-build/install/emacs-$VERSION/$ARCH - cd $HOME/emacs-build/install/emacs-$VERSION/$ARCH - zip -r -9 emacs-$OF_VERSION-$ARCH-no-deps.zip * - mv emacs-$OF_VERSION-$ARCH-no-deps.zip $HOME/emacs-upload + prefix=$HOME/emacs-build/install/emacs-$VERSION + cd $HOME/emacs-build/install/emacs-$VERSION + zip -r -9 emacs-$OF_VERSION-no-deps.zip * + mv emacs-$OF_VERSION-no-deps.zip $HOME/emacs-upload if [ -z $SNAPSHOT ]; then - DEPS_FILE=$HOME/emacs-build/deps/emacs-$MAJOR_VERSION-$ARCH-deps.zip + DEPS_FILE=$HOME/emacs-build/deps/emacs-$MAJOR_VERSION-deps.zip else ## Pick the most recent snapshot whatever that is - DEPS_FILE=`ls $HOME/emacs-build/deps/emacs-$MAJOR_VERSION-*-$ARCH-deps.zip | tail -n 1` + DEPS_FILE=`ls $HOME/emacs-build/deps/emacs-$MAJOR_VERSION-*-deps.zip | tail -n 1` fi echo [build] Using $DEPS_FILE unzip -d bin $DEPS_FILE - zip -r -9 emacs-$OF_VERSION-$ARCH.zip * - mv emacs-$OF_VERSION-$ARCH.zip ~/emacs-upload + zip -r -9 emacs-$OF_VERSION.zip * + mv emacs-$OF_VERSION.zip ~/emacs-upload } function build_installer { - ARCH=$1 - cd $HOME/emacs-build/install/emacs-$VERSION + cd $HOME/emacs-build/install/ echo [build] Calling makensis in `pwd` cp $REPO_DIR/$BRANCH/admin/nt/dist-build/emacs.nsi . makensis -v4 \ - -DARCH=$ARCH -DEMACS_VERSION=$ACTUAL_VERSION \ + -DEMACS_VERSION=$ACTUAL_VERSION \ + -DVERSION_BRANCH=$VERSION \ -DOUT_VERSION=$OF_VERSION emacs.nsi rm emacs.nsi - mv emacs-$OF_VERSION-$ARCH-installer.exe ~/emacs-upload + mv emacs-$OF_VERSION-installer.exe ~/emacs-upload } set -o errexit @@ -101,7 +93,6 @@ SNAPSHOT= CACHE= BUILD=1 -BUILD_32=1 BUILD_64=1 GIT_UP=0 CONFIG=1 @@ -112,19 +103,8 @@ INSTALL_TARGET="install-strip" REPO_DIR=$HOME/emacs-build/git/ -while getopts "36gb:hnsiV:" opt; do +while getopts "gb:hnsiV:" opt; do case $opt in - 3) - BUILD_32=1 - BUILD_64=0 - GIT_UP=0 - ;; - 6) - BUILD_32=0 - BUILD_64=1 - GIT_UP=0 - ;; - g) BUILD_32=0 BUILD_64=0 @@ -150,10 +130,11 @@ while getopts "36gb:hnsiV:" opt; do ;; h) echo "build-zips.sh" - echo " -3 32 bit build only" - echo " -6 64 bit build only" + echo " -b args -- build args branch" echo " -g git update and worktree only" echo " -i build installer only" + echo " -n do not configure" + echo " -s snaphot build" exit 0 ;; \?) @@ -223,18 +204,7 @@ if (($BUILD_64)) then if (($BUILD)) then - build_zip x86_64 /mingw64/lib/pkgconfig x86_64-w64-mingw32 - fi - build_installer x86_64 -fi - -## Do the 64 bit build first, because we reset some environment -## variables during the 32 bit which will break the build. -if (($BUILD_32)) -then - if (($BUILD)) - then - build_zip i686 /mingw32/lib/pkgconfig i686-w64-mingw32 + build_zip fi - build_installer i686 + build_installer fi diff --git a/admin/nt/dist-build/emacs.nsi b/admin/nt/dist-build/emacs.nsi index dce8f3db4a3..557bb106dde 100644 --- a/admin/nt/dist-build/emacs.nsi +++ b/admin/nt/dist-build/emacs.nsi @@ -2,7 +2,7 @@ !include LogicLib.nsh !include x64.nsh -Outfile "emacs-${OUT_VERSION}-${ARCH}-installer.exe" +Outfile "emacs-${OUT_VERSION}-installer.exe" SetCompressor /solid lzma @@ -14,15 +14,15 @@ Var StartMenuFolder !define MUI_WELCOMEPAGE_TITLE_3LINES !define MUI_WELCOMEPAGE_TEXT "Welcome to Emacs -- the editor of a lifetime." -!define MUI_WELCOMEFINISHPAGE_BITMAP "${ARCH}\share\emacs\${EMACS_VERSION}\etc\images\splash.bmp" -!define MUI_ICON "${ARCH}\share\emacs\${EMACS_VERSION}\etc\images\icons\hicolor\scalable\apps\emacs.ico" -!define MUI_UNICON "${ARCH}\share\emacs\${EMACS_VERSION}\etc\images\icons\hicolor\scalable\apps\emacs.ico" +!define MUI_WELCOMEFINISHPAGE_BITMAP "emacs-${VERSION_BRANCH}\share\emacs\${EMACS_VERSION}\etc\images\splash.bmp" +!define MUI_ICON "emacs-${VERSION_BRANCH}\share\emacs\${EMACS_VERSION}\etc\images\icons\hicolor\scalable\apps\emacs.ico" +!define MUI_UNICON "emacs-${VERSION_BRANCH}\share\emacs\${EMACS_VERSION}\etc\images\icons\hicolor\scalable\apps\emacs.ico" !insertmacro MUI_PAGE_WELCOME !define MUI_LICENSEPAGE_TEXT_TOP "The GNU General Public License" -!insertmacro MUI_PAGE_LICENSE "${ARCH}\share\emacs\${EMACS_VERSION}\lisp\COPYING" +!insertmacro MUI_PAGE_LICENSE "emacs-${VERSION_BRANCH}\share\emacs\${EMACS_VERSION}\lisp\COPYING" !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES @@ -36,19 +36,7 @@ Var StartMenuFolder Name Emacs-${EMACS_VERSION} function .onInit - ${If} ${RunningX64} - ${If} ${ARCH} == "x86_64" - StrCpy $INSTDIR "$PROGRAMFILES64\Emacs" - ${Else} - StrCpy $INSTDIR "$PROGRAMFILES32\Emacs" - ${Endif} - ${Else} - ${If} ${ARCH} == "x86_64" - Quit - ${Else} - StrCpy $INSTDIR "$PROGRAMFILES\Emacs" - ${Endif} - ${EndIf} + StrCpy $INSTDIR "$PROGRAMFILES64\Emacs" functionend @@ -56,7 +44,8 @@ Section SetOutPath $INSTDIR - File /r ${ARCH} + File /r emacs-${VERSION_BRANCH} + # define uninstaller name WriteUninstaller $INSTDIR\Uninstall.exe @@ -66,7 +55,7 @@ Section CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" !insertmacro MUI_STARTMENU_WRITE_END - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Emacs.lnk" "$INSTDIR\${ARCH}\bin\runemacs.exe" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Emacs.lnk" "$INSTDIR\emacs-${VERSION_BRANCH}\bin\runemacs.exe" SectionEnd @@ -78,7 +67,7 @@ Section "Uninstall" Delete "$INSTDIR\Uninstall.exe" # now delete installed directory - RMDir /r "$INSTDIR\${ARCH}" + RMDir /r "$INSTDIR" RMDir "$INSTDIR" !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder |