The problem i'm receiving is at the very end of the compile... it looks like it 99% works but fails just before it crosses the finish line.
I'm receive a shell error at the end of the geany 2.0 source code compile under wsl under windows: Here's the error and my scripts i'm using to build geany 2.0 under windows wsl. Note, I needed this to build all from source instead of normal sudo apt install method...
configure: WARNING: unrecognized options: --with-gtk
------------------------------------------------------
Install Geany in : /home/user1/geany
Using GTK version :
Enable binary relocation : no
Build with plugin support : yes
Use (UNIX domain) socket support : yes
Use virtual terminal support (VTE) : yes
Build HTML documentation : no
Build PDF documentation : no
Build API documentation : no
Generate GtkDoc header : no
Configuration is done OK.
Compiling Geany...
sh: 1: Syntax error: ")" unexpected
Make failed at install_geany.pl line 58, <STDIN> line 1.
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;
# Base directory for local installation
my $install_dir = "$ENV{HOME}/local";
my $meson_bin = "$ENV{HOME}/.local/bin/meson"; # Meson binary location
my $ninja_bin = "$ENV{HOME}/.local/bin/ninja"; # Ninja binary location
# List of dependencies with their URLs and build system preferences
my @dependencies = (
{
name => 'glib',
url => 'https://download.gnome.org/sources/glib/2.68/glib-2.68.4.tar.xz',
build_with_meson => 1,
},
# Add other dependencies here if needed
);
# Function to install a Python package locally if not already installed
sub install_python_package {
my ($package) = @_;
system("python3 -m pip install --user $package") == 0
or die "Failed to install $package with pip. Please check your Python and pip installation.\n";
}
# Check for Meson and Ninja, installing them if necessary
unless (-x $meson_bin) {
print "Meson not found, attempting to install locally with pip...\n";
install_python_package("meson");
die "Meson installation failed. Please install manually." unless -x $meson_bin;
print "Meson installed successfully.\n";
}
unless (-x $ninja_bin) {
print "Ninja not found, attempting to install locally with pip...\n";
install_python_package("ninja");
die "Ninja installation failed. Please install manually." unless -x $ninja_bin;
print "Ninja installed successfully.\n";
}
# Set up environment variables for Meson, Ninja, and local installation paths
$ENV{PKG_CONFIG_PATH} = "$install_dir/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}";
$ENV{LD_LIBRARY_PATH} = "$install_dir/lib:$ENV{LD_LIBRARY_PATH}";
$ENV{PATH} = "$install_dir/bin:$ENV{PATH}";
$ENV{PATH} .= ":$ENV{HOME}/.local/bin"; # Add local bin to PATH
foreach my $dep (@dependencies) {
my $url = $dep->{url};
my $filename = basename($url);
my $dirname = $filename;
$dirname =~ s/\.tar\.xz$//;
# Step 1: Download the source archive
print "Downloading $filename...\n";
system("curl -LO $url") == 0 or die "Failed to download $filename\n";
# Step 2: Extract the archive
print "Extracting $filename...\n";
system("tar -xf $filename") == 0 or die "Failed to extract $filename\n";
# Step 3: Build and install
chdir $dirname or die "Cannot enter directory $dirname\n";
if ($dep->{build_with_meson}) {
print "Configuring $dep->{name} with Meson...\n";
system("$meson_bin setup builddir --prefix=$install_dir") == 0
or die "Failed to configure $dep->{name} with Meson\n";
print "Building $dep->{name} with Ninja...\n";
system("$ninja_bin -C builddir") == 0 or die "Failed to build $dep->{name} with Ninja\n";
print "Installing $dep->{name}...\n";
system("$ninja_bin -C builddir install") == 0 or die "Failed to install $dep->{name}\n";
} else {
print "Configuring $dep->{name} with Autotools...\n";
system("./configure --prefix=$install_dir") == 0 or die "Failed to configure $dep->{name}\n";
print "Building $dep->{name}...\n";
system("make -j$(nproc)") == 0 or die "Failed to build $dep->{name}\n";
print "Installing $dep->{name}...\n";
system("make install") == 0 or die "Failed to install $dep->{name}\n";
}
# Step 4: Cleanup and return to initial directory
chdir "..";
unlink $filename; # Delete the archive after extraction
system("rm -rf $dirname"); # Optionally delete the source directory after installation
}
print "All dependencies are installed in $install_dir.\n";
print "Environment variables have been set for the current session.\n";
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;
print "\n";
print "L3Harris pre-requisite before running this script:\n";
print " 2. perl install_gtk3.pl\n";
print "press <enter> to continue. <Ctrl-C> to exit.\n";
<STDIN>;
# Define URLs and directories
my $geany_url = 'https://download.geany.org/geany-2.0.tar.gz'; # Replace with the actual Geany version URL if different
my $home_dir = $ENV{'HOME'};
my $install_dir = "$home_dir/geany"; # Geany installation directory
my $gtk_dir = "$home_dir/local"; # Local GTK+ installation from the previous script
# Ensure Geany installation directory exists
unless (-d $install_dir) {
mkdir $install_dir or die "Failed to create directory $install_dir: $!";
}
# Temporarily remove paths with spaces from PATH
my $original_path = $ENV{PATH};
$ENV{PATH} = join ":", grep { $_ !~ / / } split ":", $ENV{PATH};
# Download Geany source
print "Downloading Geany source...\n";
system("curl -L $geany_url -o geany-2.0.tar.gz") == 0
or die "Failed to download Geany source";
# Extract the Geany source tarball
print "Extracting source files...\n";
system("tar -xf geany-2.0.tar.gz") == 0
or die "Failed to extract Geany source";
# Change directory to the extracted Geany source
chdir 'geany-2.0' or die "Failed to change directory to Geany source: $!";
# Set environment variables for GTK+ libraries
$ENV{PKG_CONFIG_PATH} = "$gtk_dir/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}";
$ENV{LD_LIBRARY_PATH} = "$gtk_dir/lib:$ENV{LD_LIBRARY_PATH}";
$ENV{CFLAGS} = "-I$gtk_dir/include";
$ENV{LDFLAGS} = "-L$gtk_dir/lib";
# Set GTK-specific environment variables for configure to find GTK+ 3
$ENV{GTK_CFLAGS} = "-I$gtk_dir/include/gtk-3.0";
$ENV{GTK_LIBS} = "-L$gtk_dir/lib -lgtk-3";
# Configure build with the GTK+ prefix
print "Configuring the build for Geany...\n";
system("./configure --prefix=$install_dir --with-gtk=3.0") == 0
or die "Configure failed";
# Compile Geany
print "Compiling Geany...\n";
system("make -j$(nproc)") == 0
or die "Make failed";
# Install Geany to the specified directory
print "Installing Geany to $install_dir...\n";
system("make install") == 0
or die "Make install failed";
# Restore original PATH
$ENV{PATH} = $original_path;
# Clean up downloaded and extracted files
chdir '..';
unlink 'geany-2.0.tar.gz';
system("rm -rf geany-2.0") == 0
or warn "Failed to clean up extracted files";
print "Geany installed in $install_dir\n";
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.